github.com/lzy4123/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  }