Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Signed-off-by: Angelo De Caro <[email protected]>
  • Loading branch information
adecaro authored May 22, 2024
1 parent d6992ab commit 389b9b1
Show file tree
Hide file tree
Showing 73 changed files with 442 additions and 390 deletions.
8 changes: 4 additions & 4 deletions token/core/cmd/pp/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"path/filepath"
"strings"

"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp"
msp3 "github.com/hyperledger/fabric/msp"
"github.com/pkg/errors"
Expand All @@ -26,14 +26,14 @@ const (
// PP defines an interface shared by all public parameters
type PP interface {
// AddAuditor adds an auditor to the public parameters
AddAuditor(raw view.Identity)
AddAuditor(raw driver.Identity)
// AddIssuer adds an issuer to the public parameters
AddIssuer(raw view.Identity)
AddIssuer(raw driver.Identity)
}

// GetMSPIdentity returns the MSP identity from the passed entry formatted as <MSPConfigPath>:<MSPID>.
// If mspID is not empty, it will be used instead of the MSPID in the entry.
func GetMSPIdentity(entry string, mspID string) (view.Identity, error) {
func GetMSPIdentity(entry string, mspID string) (driver.Identity, error) {
entries := strings.Split(entry, ":")
if len(mspID) == 0 {
if len(entries) != 2 {
Expand Down
3 changes: 1 addition & 2 deletions token/core/fabtoken/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ package fabtoken
import (
"encoding/json"

"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
"github.com/hyperledger-labs/fabric-token-sdk/token/token"
"github.com/pkg/errors"
Expand Down Expand Up @@ -50,7 +49,7 @@ func (t *Output) IsRedeem() bool {
// IssueAction encodes a fabtoken Issue
type IssueAction struct {
// issuer's public key
Issuer view.Identity
Issuer driver.Identity
// new tokens to be issued
Outputs []*Output
// metadata of the issue action
Expand Down
2 changes: 1 addition & 1 deletion token/core/fabtoken/driver/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ func (d *Driver) NewTokenService(sp driver.ServiceProvider, networkID string, ch
common.NewSerializer(),
deserializer,
tmsConfig,
fabtoken.NewIssueService(publicParamsManager),
fabtoken.NewIssueService(publicParamsManager, ws, deserializer),
fabtoken.NewTransferService(logger, publicParamsManager, ws, common.NewVaultTokenLoader(qe), deserializer),
fabtoken.NewAuditorService(),
fabtoken.NewTokensService(),
Expand Down
34 changes: 24 additions & 10 deletions token/core/fabtoken/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,25 @@ SPDX-License-Identifier: Apache-2.0
package fabtoken

import (
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
"github.com/pkg/errors"
)

type IssueService struct {
PublicParamsManager driver.PublicParamsManager
WalletService driver.WalletService
Deserializer driver.Deserializer
}

func NewIssueService(publicParamsManager driver.PublicParamsManager) *IssueService {
return &IssueService{PublicParamsManager: publicParamsManager}
func NewIssueService(publicParamsManager driver.PublicParamsManager, walletService driver.WalletService, deserializer driver.Deserializer) *IssueService {
return &IssueService{PublicParamsManager: publicParamsManager, WalletService: walletService, Deserializer: deserializer}
}

// Issue returns an IssueAction as a function of the passed arguments
// Issue also returns a serialization OutputMetadata associated with issued tokens
// and the identity of the issuer
func (s *IssueService) Issue(issuerIdentity view.Identity, tokenType string, values []uint64, owners [][]byte, opts *driver.IssueOptions) (driver.IssueAction, *driver.IssueMetadata, error) {
func (s *IssueService) Issue(issuerIdentity driver.Identity, tokenType string, values []uint64, owners [][]byte, opts *driver.IssueOptions) (driver.IssueAction, *driver.IssueMetadata, error) {
for _, owner := range owners {
// a recipient cannot be empty
if len(owner) == 0 {
Expand All @@ -33,7 +34,7 @@ func (s *IssueService) Issue(issuerIdentity view.Identity, tokenType string, val
}

var outs []*Output
var metas [][]byte
var outputsMetadata [][]byte
pp := s.PublicParamsManager.PublicParameters()
if pp == nil {
return nil, nil, errors.Errorf("public paramenters not set")
Expand Down Expand Up @@ -61,15 +62,28 @@ func (s *IssueService) Issue(issuerIdentity view.Identity, tokenType string, val
if err != nil {
return nil, nil, errors.Wrapf(err, "failed serializing token information")
}
metas = append(metas, metaRaw)
outputsMetadata = append(outputsMetadata, metaRaw)
}

meta := &driver.IssueMetadata{
Issuer: issuerIdentity,
TokenInfo: metas,
action := &IssueAction{Issuer: issuerIdentity, Outputs: outs}
outputs, err := action.GetSerializedOutputs()
if err != nil {
return nil, nil, err
}
auditInfo, err := s.Deserializer.GetOwnerAuditInfo(owners[0], s.WalletService)
if err != nil {
return nil, nil, err
}

return &IssueAction{Issuer: issuerIdentity, Outputs: outs}, meta, nil
meta := &driver.IssueMetadata{
Issuer: issuerIdentity,
Outputs: outputs,
OutputsMetadata: outputsMetadata,
Receivers: []driver.Identity{driver.Identity(owners[0])},
ReceiversAuditInfos: auditInfo,
ExtraSigners: nil,
}
return action, meta, nil
}

// VerifyIssue checks if the outputs of an IssueAction match the passed tokenInfos
Expand Down
13 changes: 6 additions & 7 deletions token/core/fabtoken/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"encoding/json"
"math"

"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
"github.com/pkg/errors"
)
Expand Down Expand Up @@ -106,27 +105,27 @@ func (pp *PublicParams) Deserialize(raw []byte) error {
}

// AuditorIdentity returns the auditor identity encoded in PublicParams
func (pp *PublicParams) AuditorIdentity() view.Identity {
func (pp *PublicParams) AuditorIdentity() driver.Identity {
return pp.Auditor
}

// AddAuditor sets the Auditor field in PublicParams to the passed identity
func (pp *PublicParams) AddAuditor(auditor view.Identity) {
func (pp *PublicParams) AddAuditor(auditor driver.Identity) {
pp.Auditor = auditor
}

// AddIssuer adds the passed issuer to the array of Issuers in PublicParams
func (pp *PublicParams) AddIssuer(issuer view.Identity) {
func (pp *PublicParams) AddIssuer(issuer driver.Identity) {
pp.Issuers = append(pp.Issuers, issuer)
}

// Auditors returns the list of authorized auditors
// fabtoken only supports a single auditor
func (pp *PublicParams) Auditors() []view.Identity {
func (pp *PublicParams) Auditors() []driver.Identity {
if len(pp.Auditor) == 0 {
return []view.Identity{}
return []driver.Identity{}
}
return []view.Identity{pp.Auditor}
return []driver.Identity{pp.Auditor}
}

// Precision returns the quantity precision encoded in PublicParams
Expand Down
4 changes: 2 additions & 2 deletions token/core/fabtoken/tokens.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ package fabtoken
import (
"encoding/json"

"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
"github.com/pkg/errors"
)
Expand All @@ -24,7 +24,7 @@ func NewTokensService() *TokensService {
}

// DeserializeToken returns a deserialized token and the identity of its issuer
func (s *TokensService) DeserializeToken(outputRaw []byte, tokenInfoRaw []byte) (*token2.Token, view.Identity, error) {
func (s *TokensService) DeserializeToken(outputRaw []byte, tokenInfoRaw []byte) (*token2.Token, driver.Identity, error) {
tok := &token2.Token{}
if err := json.Unmarshal(outputRaw, tok); err != nil {
return nil, nil, errors.Wrap(err, "failed unmarshalling token")
Expand Down
11 changes: 5 additions & 6 deletions token/core/fabtoken/transfer.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ SPDX-License-Identifier: Apache-2.0
package fabtoken

import (
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common"
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common/logging"
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common/meta"
Expand Down Expand Up @@ -49,9 +48,9 @@ func (s *TransferService) Transfer(txID string, wallet driver.OwnerWallet, token
return nil, nil, errors.Wrapf(err, "failed to load tokens")
}

var senders []view.Identity
var senders []driver.Identity
for _, tok := range inputTokens {
s.Logger.Debugf("Selected output [%s,%s,%s]", tok.Type, tok.Quantity, view.Identity(tok.Owner.Raw))
s.Logger.Debugf("Selected output [%s,%s,%s]", tok.Type, tok.Quantity, driver.Identity(tok.Owner.Raw))
senders = append(senders, tok.Owner.Raw)
}

Expand Down Expand Up @@ -80,7 +79,7 @@ func (s *TransferService) Transfer(txID string, wallet driver.OwnerWallet, token
ws := s.WalletService

// assemble transfer metadata
var receivers []view.Identity
var receivers []driver.Identity
var outputAuditInfos [][]byte
for i, output := range outs {
if output.Output == nil || output.Output.Owner == nil {
Expand All @@ -98,7 +97,7 @@ func (s *TransferService) Transfer(txID string, wallet driver.OwnerWallet, token
receivers = append(receivers, recipients...)
auditInfo, err := s.Deserializer.GetOwnerAuditInfo(output.Output.Owner.Raw, ws)
if err != nil {
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", view.Identity(output.Output.Owner.Raw).String())
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(output.Output.Owner.Raw).String())
}
outputAuditInfos = append(outputAuditInfos, auditInfo...)
}
Expand All @@ -107,7 +106,7 @@ func (s *TransferService) Transfer(txID string, wallet driver.OwnerWallet, token
for _, t := range inputTokens {
auditInfo, err := s.Deserializer.GetOwnerAuditInfo(t.Owner.Raw, ws)
if err != nil {
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", view.Identity(t.Owner.Raw).String())
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(t.Owner.Raw).String())
}
senderAuditInfos = append(senderAuditInfos, auditInfo...)
}
Expand Down
9 changes: 4 additions & 5 deletions token/core/fabtoken/validator_transfer.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"encoding/json"
"time"

"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity"
htlc2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/interop/htlc"
Expand All @@ -28,15 +27,15 @@ func TransferSignatureValidate(ctx *Context) error {
ctx.InputTokens = inputTokens

for _, tok := range inputTokens {
ctx.Logger.Debugf("check sender [%s]", view.Identity(tok.Owner.Raw).UniqueID())
ctx.Logger.Debugf("check sender [%s]", driver.Identity(tok.Owner.Raw).UniqueID())
verifier, err := ctx.Deserializer.GetOwnerVerifier(tok.Owner.Raw)
if err != nil {
return errors.Wrapf(err, "failed deserializing owner [%v][%s]", tok, view.Identity(tok.Owner.Raw).UniqueID())
return errors.Wrapf(err, "failed deserializing owner [%v][%s]", tok, driver.Identity(tok.Owner.Raw).UniqueID())
}
ctx.Logger.Debugf("signature verification [%v][%s]", tok, view.Identity(tok.Owner.Raw).UniqueID())
ctx.Logger.Debugf("signature verification [%v][%s]", tok, driver.Identity(tok.Owner.Raw).UniqueID())
sigma, err := ctx.SignatureProvider.HasBeenSignedBy(tok.Owner.Raw, verifier)
if err != nil {
return errors.Wrapf(err, "failed signature verification [%v][%s]", tok, view.Identity(tok.Owner.Raw).UniqueID())
return errors.Wrapf(err, "failed signature verification [%v][%s]", tok, driver.Identity(tok.Owner.Raw).UniqueID())
}
ctx.Signatures = append(ctx.Signatures, sigma)
}
Expand Down
4 changes: 2 additions & 2 deletions token/core/zkatdlog/crypto/audit/auditor.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,12 +331,12 @@ func GetAuditInfoForIssues(issues [][]byte, metadata []driver.IssueMetadata) ([]
return nil, err
}

if len(ia.OutputTokens) != len(md.ReceiversAuditInfos) || len(ia.OutputTokens) != len(md.TokenInfo) {
if len(ia.OutputTokens) != len(md.ReceiversAuditInfos) || len(ia.OutputTokens) != len(md.OutputsMetadata) {
return nil, errors.Errorf("number of output does not match number of provided metadata")
}
for i := 0; i < len(md.ReceiversAuditInfos); i++ {
ti := &token.Metadata{}
err := json.Unmarshal(md.TokenInfo[i], ti)
err := json.Unmarshal(md.OutputsMetadata[i], ti)
if err != nil {
return nil, err
}
Expand Down
7 changes: 3 additions & 4 deletions token/core/zkatdlog/crypto/audit/auditor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs"
registry2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/registry"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
token2 "github.com/hyperledger-labs/fabric-token-sdk/token"
"github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto"
"github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto/audit"
Expand Down Expand Up @@ -232,7 +231,7 @@ func (f *fakeProv) TranslatePath(path string) string {
return ""
}

func getIdemixInfo(dir string) (view.Identity, *msp3.AuditInfo) {
func getIdemixInfo(dir string) (driver.Identity, *msp3.AuditInfo) {
registry := registry2.New()
Expect(registry.RegisterService(&fakeProv{typ: "memory"})).NotTo(HaveOccurred())

Expand Down Expand Up @@ -271,7 +270,7 @@ func getIdemixInfo(dir string) (view.Identity, *msp3.AuditInfo) {
return id, auditInfo
}

func createInputs(pp *crypto.PublicParams, id view.Identity) ([]*token.Token, []*token.Metadata) {
func createInputs(pp *crypto.PublicParams, id driver.Identity) ([]*token.Token, []*token.Metadata) {
c := math.Curves[pp.Curve]
inputs := make([]*token.Token, 2)
infos := make([]*token.Metadata, 2)
Expand All @@ -294,7 +293,7 @@ func createInputs(pp *crypto.PublicParams, id view.Identity) ([]*token.Token, []
return inputs, infos
}

func prepareTransfer(pp *crypto.PublicParams, id view.Identity) (*transfer2.TransferAction, []*token.Metadata, []*token.Token) {
func prepareTransfer(pp *crypto.PublicParams, id driver.Identity) (*transfer2.TransferAction, []*token.Metadata, []*token.Token) {
inputs, tokenInfos := createInputs(pp, id)

fakeSigner := &mock.SigningIdentity{}
Expand Down
4 changes: 2 additions & 2 deletions token/core/zkatdlog/crypto/common/identity.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/

package common

import (
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
"github.com/pkg/errors"
)
Expand All @@ -18,7 +18,7 @@ type SigningIdentity interface {
}

type WrappedSigningIdentity struct {
Identity view.Identity
Identity driver.Identity
Signer driver.Signer
}

Expand Down
11 changes: 5 additions & 6 deletions token/core/zkatdlog/crypto/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"strconv"

mathlib "github.com/IBM/mathlib"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
"github.com/pkg/errors"
)
Expand Down Expand Up @@ -151,11 +150,11 @@ func (pp *PublicParams) Bytes() ([]byte, error) {
return pp.Serialize()
}

func (pp *PublicParams) Auditors() []view.Identity {
func (pp *PublicParams) Auditors() []driver.Identity {
if len(pp.Auditor) == 0 {
return []view.Identity{}
return []driver.Identity{}
}
return []view.Identity{pp.Auditor}
return []driver.Identity{pp.Auditor}
}

func (pp *PublicParams) Serialize() ([]byte, error) {
Expand Down Expand Up @@ -221,11 +220,11 @@ func (pp *PublicParams) GenerateRangeProofParameters(bitLength int) error {
return nil
}

func (pp *PublicParams) AddAuditor(auditor view.Identity) {
func (pp *PublicParams) AddAuditor(auditor driver.Identity) {
pp.Auditor = auditor
}

func (pp *PublicParams) AddIssuer(id view.Identity) {
func (pp *PublicParams) AddIssuer(id driver.Identity) {
pp.Issuers = append(pp.Issuers, id)
}

Expand Down
6 changes: 3 additions & 3 deletions token/core/zkatdlog/crypto/validator/validator_issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ package validator
import (
"bytes"

"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto/issue"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -38,13 +38,13 @@ func IssueValidate(ctx *Context) error {
}
}
if !found {
return errors.Errorf("issuer [%s] is not in issuers", view.Identity(action.Issuer).String())
return errors.Errorf("issuer [%s] is not in issuers", driver.Identity(action.Issuer).String())
}
}

verifier, err := ctx.Deserializer.GetIssuerVerifier(action.Issuer)
if err != nil {
return errors.Wrapf(err, "failed getting verifier for [%s]", view.Identity(action.Issuer).String())
return errors.Wrapf(err, "failed getting verifier for [%s]", driver.Identity(action.Issuer).String())
}
if _, err := ctx.SignatureProvider.HasBeenSignedBy(action.Issuer, verifier); err != nil {
return errors.Wrapf(err, "failed verifying signature")
Expand Down
Loading

0 comments on commit 389b9b1

Please sign in to comment.