Skip to content

Commit 3f6428b

Browse files
committed
prepate TokensService for unit testing
Signed-off-by: Angelo De Caro <[email protected]>
1 parent 58f7224 commit 3f6428b

File tree

3 files changed

+139
-19
lines changed

3 files changed

+139
-19
lines changed

token/core/zkatdlog/nogh/v1/driver/driver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (d *Driver) NewTokenService(tmsID driver.TMSID, publicParams []byte) (drive
132132

133133
metricsProvider := metrics.NewTMSProvider(tmsConfig.ID(), d.metricsProvider)
134134
driverMetrics := v1.NewMetrics(metricsProvider)
135-
tokensService, err := token3.NewTokensService(logger, ppm, deserializer)
135+
tokensService, err := token3.NewTokensService(logger, ppm.PublicParams(), deserializer)
136136
if err != nil {
137137
return nil, errors.Wrapf(err, "failed to initiliaze token service for [%s:%s]", tmsID.Network, tmsID.Namespace)
138138
}

token/core/zkatdlog/nogh/v1/token/mock/id.go

Lines changed: 117 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/core/zkatdlog/nogh/v1/token/service.go

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212

1313
math2 "github.com/IBM/mathlib"
1414
"github.com/hyperledger-labs/fabric-smart-client/platform/common/utils"
15-
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common"
1615
v1 "github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1"
1716
"github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1/actions"
1817
"github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/nogh/v1/crypto/math"
@@ -31,31 +30,37 @@ var Precisions = map[token.Format]uint64{
3130
utils.MustGet(v1.SupportedTokenFormat(64)): 64,
3231
}
3332

33+
//go:generate counterfeiter -o mock/id.go -fake-name IdentityDeserializer . IdentityDeserializer
34+
35+
type IdentityDeserializer interface {
36+
// Recipients returns the recipient identities from the given serialized representation
37+
Recipients(raw driver.Identity) ([]driver.Identity, error)
38+
}
39+
3440
type TokensService struct {
35-
Logger logging.Logger
36-
PublicParametersManager common.PublicParametersManager[*setup.PublicParams]
37-
IdentityDeserializer driver.Deserializer
41+
Logger logging.Logger
42+
PublicParameters *setup.PublicParams
43+
IdentityDeserializer IdentityDeserializer
3844

3945
OutputTokenFormat token.Format
4046
SupportedTokenFormatList []token.Format
4147
}
4248

43-
func NewTokensService(logger logging.Logger, publicParametersManager common.PublicParametersManager[*setup.PublicParams], identityDeserializer driver.Deserializer) (*TokensService, error) {
49+
func NewTokensService(logger logging.Logger, publicParams *setup.PublicParams, identityDeserializer IdentityDeserializer) (*TokensService, error) {
4450
// compute supported tokens
45-
pp := publicParametersManager.PublicParams()
46-
maxPrecision := pp.RangeProofParams.BitLength
51+
maxPrecision := publicParams.Precision()
4752

4853
// dlog without graph hiding
49-
outputTokenFormat, err := supportedTokenFormat(pp, maxPrecision)
54+
outputTokenFormat, err := supportedTokenFormat(publicParams, maxPrecision)
5055
if err != nil {
5156
return nil, errors.Wrapf(err, "failed computing comm token types")
5257
}
5358

54-
supportedTokenFormatList := make([]token.Format, 0, 3*len(pp.IdemixIssuerPublicKeys))
59+
supportedTokenFormatList := make([]token.Format, 0, 3*len(publicParams.IdemixIssuerPublicKeys))
5560
for _, precision := range setup.SupportedPrecisions {
5661
// these Precisions are supported directly
5762
if precision <= maxPrecision {
58-
format, err := supportedTokenFormat(pp, precision)
63+
format, err := supportedTokenFormat(publicParams, precision)
5964
if err != nil {
6065
return nil, errors.Wrapf(err, "failed computing comm token types")
6166
}
@@ -76,7 +81,7 @@ func NewTokensService(logger logging.Logger, publicParametersManager common.Publ
7681

7782
return &TokensService{
7883
Logger: logger,
79-
PublicParametersManager: publicParametersManager,
84+
PublicParameters: publicParams,
8085
IdentityDeserializer: identityDeserializer,
8186
OutputTokenFormat: outputTokenFormat,
8287
SupportedTokenFormatList: supportedTokenFormatList,
@@ -173,13 +178,12 @@ func (s *TokensService) DeserializeToken(outputFormat token.Format, outputRaw []
173178
if !ok {
174179
return nil, nil, nil, errors.Errorf("unsupported token format [%s]", outputFormat)
175180
}
176-
fabToken, value, err := ParseFabtokenToken(outputRaw, precision, s.PublicParametersManager.PublicParams().RangeProofParams.BitLength)
181+
fabToken, value, err := ParseFabtokenToken(outputRaw, precision, s.PublicParameters.RangeProofParams.BitLength)
177182
if err != nil {
178183
return nil, nil, nil, errors.Wrapf(err, "failed to unmarshal fabtoken token")
179184
}
180-
pp := s.PublicParametersManager.PublicParams()
181-
curve := math2.Curves[pp.Curve]
182-
tokens, meta, err := GetTokensWithWitness([]uint64{value}, fabToken.Type, pp.PedersenGenerators, curve)
185+
curve := math2.Curves[s.PublicParameters.Curve]
186+
tokens, meta, err := GetTokensWithWitness([]uint64{value}, fabToken.Type, s.PublicParameters.PedersenGenerators, curve)
183187
if err != nil {
184188
return nil, nil, nil, errors.Wrapf(err, "failed to compute commitment")
185189
}
@@ -226,9 +230,8 @@ func (s *TokensService) deserializeCommToken(outputRaw []byte, metadataRaw []byt
226230
if err != nil {
227231
return nil, nil, nil, errors.Wrapf(err, "failed to deserialize token metadata [%d][%v]", len(metadataRaw), metadataRaw)
228232
}
229-
pp := s.PublicParametersManager.PublicParams()
230233

231-
tok, err := output.ToClear(metadata, pp)
234+
tok, err := output.ToClear(metadata, s.PublicParameters)
232235
if err != nil {
233236
return nil, nil, nil, errors.Wrap(err, "failed to deserialize token")
234237
}
@@ -243,7 +246,7 @@ func (s *TokensService) getOutput(outputRaw []byte, checkOwner bool) (*Token, er
243246
if checkOwner && len(output.Owner) == 0 {
244247
return nil, errors.Errorf("token owner not found in output")
245248
}
246-
if err := math.CheckElement(output.Data, s.PublicParametersManager.PublicParams().Curve); err != nil {
249+
if err := math.CheckElement(output.Data, s.PublicParameters.Curve); err != nil {
247250
return nil, errors.Wrap(err, "data in invalid in output")
248251
}
249252
return output, nil

0 commit comments

Comments
 (0)