github.com/defanghe/fabric@v2.1.1+incompatible/bccsp/sw/keygen_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package sw 8 9 import ( 10 "crypto/elliptic" 11 "errors" 12 "reflect" 13 "testing" 14 15 mocks2 "github.com/hyperledger/fabric/bccsp/mocks" 16 "github.com/hyperledger/fabric/bccsp/sw/mocks" 17 "github.com/stretchr/testify/assert" 18 ) 19 20 func TestKeyGen(t *testing.T) { 21 t.Parallel() 22 23 expectedOpts := &mocks2.KeyGenOpts{EphemeralValue: true} 24 expectetValue := &mocks2.MockKey{} 25 expectedErr := errors.New("Expected Error") 26 27 keyGenerators := make(map[reflect.Type]KeyGenerator) 28 keyGenerators[reflect.TypeOf(&mocks2.KeyGenOpts{})] = &mocks.KeyGenerator{ 29 OptsArg: expectedOpts, 30 Value: expectetValue, 31 Err: expectedErr, 32 } 33 csp := CSP{KeyGenerators: keyGenerators} 34 value, err := csp.KeyGen(expectedOpts) 35 assert.Nil(t, value) 36 assert.Contains(t, err.Error(), expectedErr.Error()) 37 38 keyGenerators = make(map[reflect.Type]KeyGenerator) 39 keyGenerators[reflect.TypeOf(&mocks2.KeyGenOpts{})] = &mocks.KeyGenerator{ 40 OptsArg: expectedOpts, 41 Value: expectetValue, 42 Err: nil, 43 } 44 csp = CSP{KeyGenerators: keyGenerators} 45 value, err = csp.KeyGen(expectedOpts) 46 assert.Equal(t, expectetValue, value) 47 assert.Nil(t, err) 48 } 49 50 func TestECDSAKeyGenerator(t *testing.T) { 51 t.Parallel() 52 53 kg := &ecdsaKeyGenerator{curve: elliptic.P256()} 54 55 k, err := kg.KeyGen(nil) 56 assert.NoError(t, err) 57 58 ecdsaK, ok := k.(*ecdsaPrivateKey) 59 assert.True(t, ok) 60 assert.NotNil(t, ecdsaK.privKey) 61 assert.Equal(t, ecdsaK.privKey.Curve, elliptic.P256()) 62 } 63 64 func TestAESKeyGenerator(t *testing.T) { 65 t.Parallel() 66 67 kg := &aesKeyGenerator{length: 32} 68 69 k, err := kg.KeyGen(nil) 70 assert.NoError(t, err) 71 72 aesK, ok := k.(*aesPrivateKey) 73 assert.True(t, ok) 74 assert.NotNil(t, aesK.privKey) 75 assert.Equal(t, len(aesK.privKey), 32) 76 } 77 78 func TestAESKeyGeneratorInvalidInputs(t *testing.T) { 79 t.Parallel() 80 81 kg := &aesKeyGenerator{length: -1} 82 83 _, err := kg.KeyGen(nil) 84 assert.Error(t, err) 85 assert.Contains(t, err.Error(), "Len must be larger than 0") 86 }