@@ -27,13 +27,15 @@ type Deserializer struct {
2727 VerType bccsp.VerificationType
2828 NymEID []byte
2929 RhNym []byte
30+ SchemaManager SchemaManager
31+ Schema string
3032}
3133
32- func (c * Deserializer ) Deserialize (raw []byte , checkValidity bool ) (* DeserializedIdentity , error ) {
33- return c .DeserializeAgainstNymEID (raw , checkValidity , nil )
34+ func (d * Deserializer ) Deserialize (raw []byte ) (* DeserializedIdentity , error ) {
35+ return d .DeserializeAgainstNymEID (raw , nil )
3436}
3537
36- func (c * Deserializer ) DeserializeAgainstNymEID (identity []byte , checkValidity bool , nymEID []byte ) (* DeserializedIdentity , error ) {
38+ func (d * Deserializer ) DeserializeAgainstNymEID (identity []byte , nymEID []byte ) (* DeserializedIdentity , error ) {
3739 if len (identity ) == 0 {
3840 return nil , errors .Errorf ("empty identity" )
3941 }
@@ -46,37 +48,41 @@ func (c *Deserializer) DeserializeAgainstNymEID(identity []byte, checkValidity b
4648 return nil , errors .Errorf ("unable to deserialize idemix identity: pseudonym's public key is empty" )
4749 }
4850
51+ // match schema
52+ if serialized .Schema != d .Schema {
53+ return nil , errors .Errorf ("unable to deserialize idemix identity: schema does not match [%s]!=[%s]" , serialized .Schema , d .Schema )
54+ }
55+
4956 // Import NymPublicKey
50- NymPublicKey , err := c .Csp .KeyImport (
57+ NymPublicKey , err := d .Csp .KeyImport (
5158 serialized .NymPublicKey ,
5259 & bccsp.IdemixNymPublicKeyImportOpts {Temporary : true },
5360 )
5461 if err != nil {
5562 return nil , errors .WithMessage (err , "failed to import nym public key" )
5663 }
5764
58- idemix := c
65+ idemix := d
5966 if len (nymEID ) != 0 {
6067 idemix = & Deserializer {
61- Name : c .Name ,
62- Ipk : c .Ipk ,
63- Csp : c .Csp ,
64- IssuerPublicKey : c .IssuerPublicKey ,
65- RevocationPK : c .RevocationPK ,
66- Epoch : c .Epoch ,
67- VerType : c .VerType ,
68+ Name : d .Name ,
69+ Ipk : d .Ipk ,
70+ Csp : d .Csp ,
71+ IssuerPublicKey : d .IssuerPublicKey ,
72+ RevocationPK : d .RevocationPK ,
73+ Epoch : d .Epoch ,
74+ VerType : d .VerType ,
6875 NymEID : nymEID ,
76+ SchemaManager : d .SchemaManager ,
6977 }
7078 }
7179
72- id , err := NewIdentity (idemix , NymPublicKey , serialized .Proof , c .VerType )
80+ id , err := NewIdentity (idemix , NymPublicKey , serialized .Proof , d .VerType , d . SchemaManager , d . Schema )
7381 if err != nil {
7482 return nil , errors .Wrap (err , "cannot deserialize" )
7583 }
76- if checkValidity {
77- if err := id .Validate (); err != nil {
78- return nil , errors .Wrap (err , "cannot deserialize, invalid identity" )
79- }
84+ if err := id .Validate (); err != nil {
85+ return nil , errors .Wrap (err , "cannot deserialize, invalid identity" )
8086 }
8187
8288 return & DeserializedIdentity {
@@ -85,12 +91,14 @@ func (c *Deserializer) DeserializeAgainstNymEID(identity []byte, checkValidity b
8591 }, nil
8692}
8793
88- func (c * Deserializer ) DeserializeAuditInfo (raw []byte ) (* AuditInfo , error ) {
94+ func (d * Deserializer ) DeserializeAuditInfo (raw []byte ) (* AuditInfo , error ) {
8995 ai , err := DeserializeAuditInfo (raw )
9096 if err != nil {
9197 return nil , errors .Wrapf (err , "failed deserializing audit info [%s]" , string (raw ))
9298 }
93- ai .Csp = c .Csp
94- ai .IssuerPublicKey = c .IssuerPublicKey
99+ ai .Csp = d .Csp
100+ ai .IssuerPublicKey = d .IssuerPublicKey
101+ ai .SchemaManager = d .SchemaManager
102+ ai .Schema = d .Schema
95103 return ai , nil
96104}
0 commit comments