Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions bccsp/aries_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (

idemix "github.com/IBM/idemix/bccsp"
"github.com/IBM/idemix/bccsp/schemes/aries"
"github.com/IBM/idemix/bccsp/schemes/dlog/crypto/translator/amcl"
bccsp "github.com/IBM/idemix/bccsp/types"
math "github.com/IBM/mathlib"
"github.com/golang/protobuf/proto"
Expand All @@ -23,7 +22,6 @@ import (

func testAries() {
curve := math.Curves[math.BLS12_381_BBS]
translator := &amcl.Gurvy{C: curve}

Describe("setting up the environment with one issuer and one user with curve", func() {
var (
Expand Down Expand Up @@ -55,7 +53,7 @@ func testAries() {
rootDir, err = ioutil.TempDir(os.TempDir(), "idemixtest")
Expect(err).NotTo(HaveOccurred())

CSP, err = idemix.NewAries(NewDummyKeyStore(), curve, translator, true)
CSP, err = idemix.NewAries(NewDummyKeyStore(), curve, true)
Expect(err).NotTo(HaveOccurred())

// Issuer
Expand Down Expand Up @@ -1623,7 +1621,7 @@ func testAries() {

BeforeEach(func() {
var err error
CSP, err = idemix.NewAries(NewDummyKeyStore(), curve, translator, true)
CSP, err = idemix.NewAries(NewDummyKeyStore(), curve, true)
Expect(err).NotTo(HaveOccurred())

// Issuer
Expand Down
170 changes: 6 additions & 164 deletions bccsp/bccsp.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ import (
"github.com/IBM/idemix/bbs"
"github.com/IBM/idemix/bccsp/handlers"
"github.com/IBM/idemix/bccsp/schemes/aries"
"github.com/IBM/idemix/bccsp/schemes/dlog/bridge"
idemix "github.com/IBM/idemix/bccsp/schemes/dlog/crypto"
bccsp "github.com/IBM/idemix/bccsp/types"
math "github.com/IBM/mathlib"
"github.com/pkg/errors"
Expand All @@ -22,162 +20,7 @@ type csp struct {
*CSP
}

func New(keyStore bccsp.KeyStore, curve *math.Curve, translator idemix.Translator, exportable bool) (*csp, error) {
base, err := NewImpl(keyStore)
if err != nil {
return nil, errors.Wrap(err, "failed instantiating base bccsp")
}

csp := &csp{CSP: base}

idmx := &idemix.Idemix{
Curve: curve,
Translator: translator,
}

// key generators
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixIssuerKeyGenOpts{}),
&handlers.IssuerKeyGen{
Exportable: exportable,
Issuer: &bridge.Issuer{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixUserSecretKeyGenOpts{}),
&handlers.UserKeyGen{
Exportable: exportable,
User: &bridge.User{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixRevocationKeyGenOpts{}),
&handlers.RevocationKeyGen{
Exportable: exportable,
Revocation: &bridge.Revocation{
Idemix: idmx, Translator: translator,
},
})

// key derivers
base.AddWrapper(reflect.TypeOf(handlers.NewUserSecretKey(nil, true)),
&handlers.NymKeyDerivation{
Exportable: exportable,
Translator: translator,
User: &bridge.User{
Idemix: idmx, Translator: translator,
},
})

// signers
base.AddWrapper(reflect.TypeOf(handlers.NewUserSecretKey(nil, true)),
&userSecreKeySignerMultiplexer{
signer: &handlers.Signer{
SignatureScheme: &bridge.SignatureScheme{
Idemix: idmx, Translator: translator,
}},
nymSigner: &handlers.NymSigner{
NymSignatureScheme: &bridge.NymSignatureScheme{
Idemix: idmx, Translator: translator,
}},
credentialRequestSigner: &handlers.CredentialRequestSigner{
CredRequest: &bridge.CredRequest{
Idemix: idmx, Translator: translator,
}},
})
base.AddWrapper(reflect.TypeOf(handlers.NewIssuerSecretKey(nil, true)),
&handlers.CredentialSigner{
Credential: &bridge.Credential{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(handlers.NewRevocationSecretKey(nil, true)),
&handlers.CriSigner{
Revocation: &bridge.Revocation{
Idemix: idmx, Translator: translator,
},
})

// verifiers
base.AddWrapper(reflect.TypeOf(handlers.NewIssuerPublicKey(nil)),
&issuerPublicKeyVerifierMultiplexer{
verifier: &handlers.Verifier{
SignatureScheme: &bridge.SignatureScheme{
Idemix: idmx, Translator: translator,
}},
credentialRequestVerifier: &handlers.CredentialRequestVerifier{
CredRequest: &bridge.CredRequest{
Idemix: idmx, Translator: translator,
}},
})
base.AddWrapper(reflect.TypeOf(handlers.NewNymPublicKey(nil, translator)),
&handlers.NymVerifier{
NymSignatureScheme: &bridge.NymSignatureScheme{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(handlers.NewUserSecretKey(nil, true)),
&handlers.CredentialVerifier{
Credential: &bridge.Credential{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(handlers.NewRevocationPublicKey(nil)),
&handlers.CriVerifier{
Revocation: &bridge.Revocation{
Idemix: idmx, Translator: translator,
},
})

// importers
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixUserSecretKeyImportOpts{}),
&handlers.UserKeyImporter{
Exportable: exportable,
User: &bridge.User{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixIssuerPublicKeyImportOpts{}),
&handlers.IssuerPublicKeyImporter{
Issuer: &bridge.Issuer{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixIssuerKeyImportOpts{}),
&handlers.IssuerKeyImporter{
Exportable: exportable,
Issuer: &bridge.Issuer{
Idemix: idmx, Translator: translator,
},
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixNymPublicKeyImportOpts{}),
&handlers.NymPublicKeyImporter{
User: &bridge.User{
Idemix: idmx, Translator: translator,
},
Translator: translator,
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixNymKeyImportOpts{}),
&handlers.NymKeyImporter{
Exportable: exportable,
User: &bridge.User{
Idemix: idmx, Translator: translator,
},
Translator: translator,
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixRevocationPublicKeyImportOpts{}),
&handlers.RevocationPublicKeyImporter{})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixRevocationKeyImportOpts{}),
&handlers.RevocationKeyImporter{
Exportable: exportable,
Revocation: &bridge.Revocation{
Idemix: idmx, Translator: translator,
},
})

return csp, nil
}

func NewAries(keyStore bccsp.KeyStore, curve *math.Curve, _translator idemix.Translator, exportable bool) (*csp, error) {
func NewAries(keyStore bccsp.KeyStore, curve *math.Curve, exportable bool) (*csp, error) {
base, err := NewImpl(keyStore)
if err != nil {
return nil, errors.Wrap(err, "failed instantiating base bccsp")
Expand Down Expand Up @@ -219,7 +62,7 @@ func NewAries(keyStore bccsp.KeyStore, curve *math.Curve, _translator idemix.Tra
base.AddWrapper(reflect.TypeOf(handlers.NewUserSecretKey(nil, true)),
&handlers.NymKeyDerivation{
Exportable: exportable,
Translator: _translator,
Curve: curve,
User: &aries.User{
Curve: curve,
Rng: rng,
Expand All @@ -246,7 +89,7 @@ func NewAries(keyStore bccsp.KeyStore, curve *math.Curve, _translator idemix.Tra
CredRequest: &aries.CredRequest{
Curve: curve,
}},
credentialRequestSigner: nil, // aries does not implement this approach
credentialRequestSigner: nil,
})
base.AddWrapper(reflect.TypeOf(handlers.NewIssuerSecretKey(nil, true)),
&handlers.CredentialSigner{
Expand Down Expand Up @@ -275,9 +118,9 @@ func NewAries(keyStore bccsp.KeyStore, curve *math.Curve, _translator idemix.Tra
CredRequest: &aries.CredRequest{
Curve: curve,
}},
credentialRequestVerifier: nil, // aries does not implement this type of issuance
credentialRequestVerifier: nil,
})
base.AddWrapper(reflect.TypeOf(handlers.NewNymPublicKey(nil, _translator)),
base.AddWrapper(reflect.TypeOf(handlers.NewNymPublicKey(nil)),
&handlers.NymVerifier{
SmartcardNymSignatureScheme: &aries.SmartcardIdemixBackend{
Curve: curve,
Expand Down Expand Up @@ -330,7 +173,6 @@ func NewAries(keyStore bccsp.KeyStore, curve *math.Curve, _translator idemix.Tra
Curve: curve,
Rng: rng,
},
Translator: _translator,
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixNymKeyImportOpts{}),
&handlers.NymKeyImporter{
Expand All @@ -339,7 +181,7 @@ func NewAries(keyStore bccsp.KeyStore, curve *math.Curve, _translator idemix.Tra
Curve: curve,
Rng: rng,
},
Translator: _translator,
Curve: curve,
})
base.AddWrapper(reflect.TypeOf(&bccsp.IdemixRevocationPublicKeyImportOpts{}),
&handlers.RevocationPublicKeyImporter{})
Expand Down
Loading
Loading