Skip to content

Commit beb9738

Browse files
committed
Idemix Schema Manager
Signed-off-by: Angelo De Caro <[email protected]>
1 parent 2ca49bb commit beb9738

File tree

14 files changed

+459
-164
lines changed

14 files changed

+459
-164
lines changed

go.mod

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ module github.com/hyperledger-labs/fabric-token-sdk
33
go 1.21
44

55
require (
6-
github.com/IBM/idemix v0.0.2-0.20240613141508-82a5e092849a
7-
github.com/IBM/idemix/bccsp/types v0.0.0-20240613141508-82a5e092849a
6+
github.com/IBM/idemix v0.0.2-0.20240614151806-1a543779efde
7+
github.com/IBM/idemix/bccsp/types v0.0.0-20240614151806-1a543779efde
88
github.com/IBM/mathlib v0.0.3-0.20231011094432-44ee0eb539da
99
github.com/dgraph-io/badger/v3 v3.2103.2
1010
github.com/hashicorp/go-uuid v1.0.2
@@ -59,8 +59,8 @@ require (
5959
dario.cat/mergo v1.0.0 // indirect
6060
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
6161
github.com/BurntSushi/toml v1.2.1 // indirect
62-
github.com/IBM/idemix/bccsp/schemes/aries v0.0.0-20240613141508-82a5e092849a // indirect
63-
github.com/IBM/idemix/bccsp/schemes/weak-bb v0.0.0-20240613141508-82a5e092849a // indirect
62+
github.com/IBM/idemix/bccsp/schemes/aries v0.0.0-20240614151806-1a543779efde // indirect
63+
github.com/IBM/idemix/bccsp/schemes/weak-bb v0.0.0-20240614151806-1a543779efde // indirect
6464
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect
6565
github.com/Microsoft/go-winio v0.6.1 // indirect
6666
github.com/Microsoft/hcsshim v0.11.4 // indirect

go.sum

+8-8
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
3030
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
3131
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
3232
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
33-
github.com/IBM/idemix v0.0.2-0.20240613141508-82a5e092849a h1:N2YIhHUNHABHfoOA5cVV00xaL09Pc8Ikji/6GEJsr6I=
34-
github.com/IBM/idemix v0.0.2-0.20240613141508-82a5e092849a/go.mod h1:46iNIkGm/8hQBo8ziI4oxiVW3WQkkxIqEbq+VbJviR8=
35-
github.com/IBM/idemix/bccsp/schemes/aries v0.0.0-20240613141508-82a5e092849a h1:c3E1cDamIZdj9zLNGyDbCOue1W6HNFEgKna5Y4l7bY4=
36-
github.com/IBM/idemix/bccsp/schemes/aries v0.0.0-20240613141508-82a5e092849a/go.mod h1:ldQeOz5oa0iJicd2FFEd2jToS9XNncKSvFnUVNjTjRk=
37-
github.com/IBM/idemix/bccsp/schemes/weak-bb v0.0.0-20240613141508-82a5e092849a h1:JLtm1020NbMrtRPZRDS5vPn4eBIJvWLAPEnYgcjC0vk=
38-
github.com/IBM/idemix/bccsp/schemes/weak-bb v0.0.0-20240613141508-82a5e092849a/go.mod h1:FC0vVgNI6bv8GH0VTwjup+arwJ8Tau1iEhroWZ1oPwU=
39-
github.com/IBM/idemix/bccsp/types v0.0.0-20240613141508-82a5e092849a h1:96D1gepUlk1oTWWMOeGw5EfJnBqT9ZhpdGNos1I9QMs=
40-
github.com/IBM/idemix/bccsp/types v0.0.0-20240613141508-82a5e092849a/go.mod h1:IMIJ8WcUpBmV4gcOO/BYKuFYpdXCPYZjpNhFSUlO9b8=
33+
github.com/IBM/idemix v0.0.2-0.20240614151806-1a543779efde h1:3pdSyTNhDTQcx9spTgXGeWwTPx2SPLYZqI9m8TRfxIo=
34+
github.com/IBM/idemix v0.0.2-0.20240614151806-1a543779efde/go.mod h1:46iNIkGm/8hQBo8ziI4oxiVW3WQkkxIqEbq+VbJviR8=
35+
github.com/IBM/idemix/bccsp/schemes/aries v0.0.0-20240614151806-1a543779efde h1:3W6Vi6/p6biN5bbBnTum747oPW5cw4D/0GKK4cyRO5Y=
36+
github.com/IBM/idemix/bccsp/schemes/aries v0.0.0-20240614151806-1a543779efde/go.mod h1:ldQeOz5oa0iJicd2FFEd2jToS9XNncKSvFnUVNjTjRk=
37+
github.com/IBM/idemix/bccsp/schemes/weak-bb v0.0.0-20240614151806-1a543779efde h1:WQRp4JspTrBiP5+qihCI7ZcgCznPsjBdfxoBWYw5y74=
38+
github.com/IBM/idemix/bccsp/schemes/weak-bb v0.0.0-20240614151806-1a543779efde/go.mod h1:FC0vVgNI6bv8GH0VTwjup+arwJ8Tau1iEhroWZ1oPwU=
39+
github.com/IBM/idemix/bccsp/types v0.0.0-20240614151806-1a543779efde h1:XSatatyDWYDYxwqxtiCA9hdwaadIqrGf23g/gq9T900=
40+
github.com/IBM/idemix/bccsp/types v0.0.0-20240614151806-1a543779efde/go.mod h1:IMIJ8WcUpBmV4gcOO/BYKuFYpdXCPYZjpNhFSUlO9b8=
4141
github.com/IBM/mathlib v0.0.3-0.20231011094432-44ee0eb539da h1:qqGozq4tF6EOVnWoTgBoJGudRKKZXSAYnEtDggzTnsw=
4242
github.com/IBM/mathlib v0.0.3-0.20231011094432-44ee0eb539da/go.mod h1:Tco9QzE3fQzjMS7nPbHDeFfydAzctStf1Pa8hsh6Hjs=
4343
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=

token/core/zkatdlog/crypto/audit/auditor_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp"
3131
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix"
3232
msp3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix/msp"
33+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix/schema"
3334
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/sig"
3435
msp2 "github.com/hyperledger/fabric/msp"
3536
. "github.com/onsi/ginkgo/v2"
@@ -49,7 +50,7 @@ var _ = Describe("Auditor", func() {
4950
Expect(err).NotTo(HaveOccurred())
5051
pp, err = crypto.Setup(32, ipk, math.FP256BN_AMCL)
5152
Expect(err).NotTo(HaveOccurred())
52-
des, err := idemix.NewDeserializer(pp.IdemixIssuerPK, math.FP256BN_AMCL)
53+
des, err := idemix.NewDeserializer(&schema.DefaultManager{}, "", pp.IdemixIssuerPK, math.FP256BN_AMCL)
5354
Expect(err).NotTo(HaveOccurred())
5455
auditor = audit.NewAuditor(flogging.MustGetLogger("auditor"), des, pp.PedersenGenerators, nil, fakeSigningIdentity, math.Curves[pp.Curve])
5556
fakeSigningIdentity.SignReturns([]byte("auditor-signature"), nil)
@@ -252,7 +253,7 @@ func getIdemixInfo(dir string) (driver.Identity, *msp3.AuditInfo) {
252253
Expect(err).NotTo(HaveOccurred())
253254
cryptoProvider, err := msp3.NewBCCSP(keyStore, math.FP256BN_AMCL, false)
254255
Expect(err).NotTo(HaveOccurred())
255-
p, err := idemix.NewProvider(config, sigService, types.EidNymRhNym, cryptoProvider)
256+
p, err := idemix.NewProvider(config, sigService, types.EidNymRhNym, cryptoProvider, &schema.DefaultManager{}, "")
256257
Expect(err).NotTo(HaveOccurred())
257258
Expect(p).NotTo(BeNil())
258259

token/core/zkatdlog/crypto/validator/validator_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp"
3636
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix"
3737
msp3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix/msp"
38+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix/schema"
3839
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/sig"
3940
msp2 "github.com/hyperledger/fabric/msp"
4041
. "github.com/onsi/ginkgo/v2"
@@ -72,7 +73,7 @@ var _ = Describe("validator", func() {
7273
c := math.Curves[pp.Curve]
7374

7475
asigner, _ := prepareECDSASigner()
75-
des, err := idemix.NewDeserializer(pp.IdemixIssuerPK, math.FP256BN_AMCL)
76+
des, err := idemix.NewDeserializer(&schema.DefaultManager{}, "", pp.IdemixIssuerPK, math.FP256BN_AMCL)
7677
Expect(err).NotTo(HaveOccurred())
7778
auditor = audit.NewAuditor(flogging.MustGetLogger("auditor"), des, pp.PedersenGenerators, pp.IdemixIssuerPK, asigner, c)
7879
araw, err := asigner.Serialize()
@@ -384,7 +385,7 @@ func getIdemixInfo(dir string) (driver.Identity, *msp3.AuditInfo, driver.Signing
384385
Expect(err).NotTo(HaveOccurred())
385386
cryptoProvider, err := msp3.NewBCCSP(keyStore, math.FP256BN_AMCL, false)
386387
Expect(err).NotTo(HaveOccurred())
387-
p, err := idemix.NewProvider(config, sigService, types.EidNymRhNym, cryptoProvider)
388+
p, err := idemix.NewProvider(config, sigService, types.EidNymRhNym, cryptoProvider, &schema.DefaultManager{}, "")
388389
Expect(err).NotTo(HaveOccurred())
389390
Expect(p).NotTo(BeNil())
390391

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/interop/htlc"
1515
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp"
1616
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix"
17+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix/schema"
1718
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/x509"
1819
htlc2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/interop/htlc"
1920
"github.com/pkg/errors"
@@ -29,7 +30,7 @@ func NewDeserializer(pp *crypto.PublicParams) (*Deserializer, error) {
2930
if pp == nil {
3031
return nil, errors.New("failed to get deserializer: nil public parameters")
3132
}
32-
idemixDes, err := idemix.NewDeserializer(pp.IdemixIssuerPK, pp.IdemixCurveID)
33+
idemixDes, err := idemix.NewDeserializer(&schema.DefaultManager{}, "", pp.IdemixIssuerPK, pp.IdemixCurveID)
3334
if err != nil {
3435
return nil, errors.Wrapf(err, "failed getting idemix deserializer for passed public params [%d]", pp.IdemixCurveID)
3536
}

token/services/identity/msp/idemix/deserializer.go

+60-35
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package idemix
99
import (
1010
"fmt"
1111

12-
msp "github.com/IBM/idemix"
1312
csp "github.com/IBM/idemix/bccsp/types"
1413
math "github.com/IBM/mathlib"
1514
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash"
@@ -24,43 +23,61 @@ type Deserializer struct {
2423
}
2524

2625
// NewDeserializer returns a new deserializer for the idemix ExpectEidNymRhNym verification strategy
27-
func NewDeserializer(ipk []byte, curveID math.CurveID) (*Deserializer, error) {
26+
func NewDeserializer(
27+
sm SchemaManager,
28+
schema string,
29+
ipk []byte,
30+
curveID math.CurveID,
31+
) (*Deserializer, error) {
2832
logger.Debugf("new deserialized for dlog idemix")
2933
cryptoProvider, err := msp2.NewBCCSPWithDummyKeyStore(curveID, curveID == math.BLS12_381_BBS)
3034
if err != nil {
3135
return nil, errors.WithMessagef(err, "failed to instantiate crypto provider for curve [%d]", curveID)
3236
}
33-
return NewDeserializerWithProvider(ipk, csp.ExpectEidNymRhNym, nil, cryptoProvider)
37+
return NewDeserializerWithProvider(sm, schema, ipk, csp.ExpectEidNymRhNym, nil, cryptoProvider)
3438
}
3539

3640
// NewDeserializerWithProvider returns a new serialized for the passed arguments
3741
func NewDeserializerWithProvider(
42+
sm SchemaManager,
43+
schema string,
3844
ipk []byte,
3945
verType csp.VerificationType,
4046
nymEID []byte,
4147
cryptoProvider csp.BCCSP,
4248
) (*Deserializer, error) {
43-
return NewDeserializerWithBCCSP(ipk, verType, nymEID, cryptoProvider)
49+
return NewDeserializerWithBCCSP(
50+
sm,
51+
schema,
52+
ipk,
53+
verType,
54+
nymEID,
55+
cryptoProvider,
56+
)
4457
}
4558

46-
func NewDeserializerWithBCCSP(ipk []byte, verType csp.VerificationType, nymEID []byte, cryptoProvider csp.BCCSP) (*Deserializer, error) {
59+
func NewDeserializerWithBCCSP(
60+
sm SchemaManager,
61+
schema string,
62+
ipk []byte,
63+
verType csp.VerificationType,
64+
nymEID []byte,
65+
cryptoProvider csp.BCCSP,
66+
) (*Deserializer, error) {
4767
logger.Debugf("Setting up Idemix-based MSP instance")
4868

4969
// Import Issuer Public Key
5070
var issuerPublicKey csp.Key
51-
var err error
5271
if len(ipk) != 0 {
72+
// get the opts from the schema manager
73+
opts, err := sm.PublicKeyImportOpts(schema)
74+
if err != nil {
75+
return nil, errors.Wrapf(err, "could not obtain PublicKeyImportOpts for schema '%s'", schema)
76+
}
5377
issuerPublicKey, err = cryptoProvider.KeyImport(
5478
ipk,
55-
&csp.IdemixIssuerPublicKeyImportOpts{
56-
Temporary: true,
57-
AttributeNames: []string{
58-
msp.AttributeNameOU,
59-
msp.AttributeNameRole,
60-
msp.AttributeNameEnrollmentId,
61-
msp.AttributeNameRevocationHandle,
62-
},
63-
})
79+
opts,
80+
)
6481
if err != nil {
6582
return nil, err
6683
}
@@ -73,58 +90,64 @@ func NewDeserializerWithBCCSP(ipk []byte, verType csp.VerificationType, nymEID [
7390
IssuerPublicKey: issuerPublicKey,
7491
VerType: verType,
7592
NymEID: nymEID,
93+
SchemaManager: sm,
94+
Schema: schema,
7695
},
7796
}, nil
7897
}
7998

80-
func (i *Deserializer) DeserializeVerifier(raw driver.Identity) (driver.Verifier, error) {
81-
identity, err := i.Deserialize(raw, true)
99+
func (d *Deserializer) DeserializeVerifier(raw driver.Identity) (driver.Verifier, error) {
100+
identity, err := d.Deserialize(raw, true)
82101
if err != nil {
83102
return nil, err
84103
}
85104

86105
return &msp2.NymSignatureVerifier{
87-
CSP: i.Deserializer.Csp,
88-
IPK: i.Deserializer.IssuerPublicKey,
89-
NymPK: identity.NymPublicKey,
106+
CSP: d.Deserializer.Csp,
107+
IPK: d.Deserializer.IssuerPublicKey,
108+
NymPK: identity.NymPublicKey,
109+
SchemaManager: d.SchemaManager,
110+
Schema: d.Schema,
90111
}, nil
91112
}
92113

93-
func (i *Deserializer) DeserializeVerifierAgainstNymEID(raw []byte, nymEID []byte) (driver.Verifier, error) {
94-
identity, err := i.Deserializer.DeserializeAgainstNymEID(raw, true, nymEID)
114+
func (d *Deserializer) DeserializeVerifierAgainstNymEID(raw []byte, nymEID []byte) (driver.Verifier, error) {
115+
identity, err := d.Deserializer.DeserializeAgainstNymEID(raw, true, nymEID)
95116
if err != nil {
96117
return nil, err
97118
}
98119

99120
return &msp2.NymSignatureVerifier{
100-
CSP: i.Deserializer.Csp,
101-
IPK: i.Deserializer.IssuerPublicKey,
102-
NymPK: identity.NymPublicKey,
121+
CSP: d.Deserializer.Csp,
122+
IPK: d.Deserializer.IssuerPublicKey,
123+
NymPK: identity.NymPublicKey,
124+
SchemaManager: d.SchemaManager,
125+
Schema: d.Schema,
103126
}, nil
104127
}
105128

106-
func (i *Deserializer) DeserializeSigner(raw []byte) (driver.Signer, error) {
129+
func (d *Deserializer) DeserializeSigner(raw []byte) (driver.Signer, error) {
107130
return nil, errors.New("not supported")
108131
}
109132

110-
func (i *Deserializer) DeserializeAuditInfo(raw []byte) (driver2.AuditInfo, error) {
111-
return i.Deserializer.DeserializeAuditInfo(raw)
133+
func (d *Deserializer) DeserializeAuditInfo(raw []byte) (driver2.AuditInfo, error) {
134+
return d.Deserializer.DeserializeAuditInfo(raw)
112135
}
113136

114-
func (i *Deserializer) GetOwnerMatcher(raw []byte) (driver.Matcher, error) {
115-
return i.Deserializer.DeserializeAuditInfo(raw)
137+
func (d *Deserializer) GetOwnerMatcher(raw []byte) (driver.Matcher, error) {
138+
return d.Deserializer.DeserializeAuditInfo(raw)
116139
}
117140

118-
func (i *Deserializer) GetOwnerAuditInfo(raw []byte, p driver.AuditInfoProvider) ([][]byte, error) {
141+
func (d *Deserializer) GetOwnerAuditInfo(raw []byte, p driver.AuditInfoProvider) ([][]byte, error) {
119142
auditInfo, err := p.GetAuditInfo(raw)
120143
if err != nil {
121144
return nil, errors.Wrapf(err, "failed getting audit info for recipient identity [%s]", driver.Identity(raw).String())
122145
}
123146
return [][]byte{auditInfo}, nil
124147
}
125148

126-
func (i *Deserializer) Info(raw []byte, auditInfo []byte) (string, error) {
127-
r, err := i.Deserialize(raw, false)
149+
func (d *Deserializer) Info(raw []byte, auditInfo []byte) (string, error) {
150+
r, err := d.Deserialize(raw, false)
128151
if err != nil {
129152
return "", err
130153
}
@@ -135,6 +158,8 @@ func (i *Deserializer) Info(raw []byte, auditInfo []byte) (string, error) {
135158
if err != nil {
136159
return "", err
137160
}
161+
ai.SchemaManager = d.Deserializer.SchemaManager
162+
ai.Schema = d.Deserializer.Schema
138163
if err := ai.Match(raw); err != nil {
139164
return "", err
140165
}
@@ -144,8 +169,8 @@ func (i *Deserializer) Info(raw []byte, auditInfo []byte) (string, error) {
144169
return fmt.Sprintf("MSP.Idemix: [%s][%s][%s][%s][%s]", eid, driver.Identity(raw).UniqueID(), r.SerializedIdentity.Mspid, r.OU.OrganizationalUnitIdentifier, r.Role.Role.String()), nil
145170
}
146171

147-
func (i *Deserializer) String() string {
148-
return fmt.Sprintf("Idemix with IPK [%s]", hash.Hashable(i.Ipk).String())
172+
func (d *Deserializer) String() string {
173+
return fmt.Sprintf("Idemix with IPK [%s]", hash.Hashable(d.Ipk).String())
149174
}
150175

151176
type AuditInfoDeserializer struct{}

token/services/identity/msp/idemix/lm.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"path/filepath"
1212
"sync"
1313

14+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/msp/idemix/schema"
15+
1416
bccsp "github.com/IBM/idemix/bccsp/types"
1517
math "github.com/IBM/mathlib"
1618
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash"
@@ -246,7 +248,7 @@ func (l *LocalMembership) registerProvider(identityConfig driver.IdentityConfigu
246248
if err != nil {
247249
return errors.WithMessage(err, "failed to instantiate crypto provider")
248250
}
249-
provider, err := NewProvider(conf, l.signerService, bccsp.EidNymRhNym, cryptoProvider)
251+
provider, err := NewProvider(conf, l.signerService, bccsp.EidNymRhNym, cryptoProvider, &schema.DefaultManager{}, "")
250252
if err != nil {
251253
return errors.Wrapf(err, "failed instantiating idemix msp provider from [%s]", identityConfig.URL)
252254
}

token/services/identity/msp/idemix/msp/audit.go

+19-12
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ type AuditInfo struct {
2020
EidNymAuditData *csp.AttrNymAuditData
2121
RhNymAuditData *csp.AttrNymAuditData
2222
Attributes [][]byte
23-
Csp csp.BCCSP `json:"-"`
24-
IssuerPublicKey csp.Key `json:"-"`
23+
24+
Csp csp.BCCSP `json:"-"`
25+
IssuerPublicKey csp.Key `json:"-"`
26+
SchemaManager SchemaManager `json:"-"`
27+
Schema string
2528
}
2629

2730
func (a *AuditInfo) Bytes() ([]byte, error) {
@@ -53,16 +56,18 @@ func (a *AuditInfo) Match(id []byte) error {
5356
return errors.Wrap(err, "could not deserialize a SerializedIdemixIdentity")
5457
}
5558

59+
eidAuditOpts, err := a.SchemaManager.EidNymAuditOpts(a.Schema, a.Attributes)
60+
if err != nil {
61+
return errors.Wrap(err, "error while getting a RhNymAuditOpts")
62+
}
63+
eidAuditOpts.RNymEid = a.EidNymAuditData.Rand
64+
5665
// Audit EID
5766
valid, err := a.Csp.Verify(
5867
a.IssuerPublicKey,
5968
serialized.Proof,
6069
nil,
61-
&csp.EidNymAuditOpts{
62-
EidIndex: EIDIndex,
63-
EnrollmentID: string(a.Attributes[EIDIndex]),
64-
RNymEid: a.EidNymAuditData.Rand,
65-
},
70+
eidAuditOpts,
6671
)
6772
if err != nil {
6873
return errors.Wrap(err, "error while verifying the nym eid")
@@ -71,16 +76,18 @@ func (a *AuditInfo) Match(id []byte) error {
7176
return errors.New("invalid nym rh")
7277
}
7378

79+
rhAuditOpts, err := a.SchemaManager.RhNymAuditOpts(a.Schema, a.Attributes)
80+
if err != nil {
81+
return errors.Wrap(err, "error while getting a RhNymAuditOpts")
82+
}
83+
rhAuditOpts.RNymRh = a.RhNymAuditData.Rand
84+
7485
// Audit RH
7586
valid, err = a.Csp.Verify(
7687
a.IssuerPublicKey,
7788
serialized.Proof,
7889
nil,
79-
&csp.RhNymAuditOpts{
80-
RhIndex: RHIndex,
81-
RevocationHandle: string(a.Attributes[RHIndex]),
82-
RNymRh: a.RhNymAuditData.Rand,
83-
},
90+
rhAuditOpts,
8491
)
8592
if err != nil {
8693
return errors.Wrap(err, "error while verifying the nym rh")

0 commit comments

Comments
 (0)