github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/bccsp/factory/pkcs11_test.go (about) 1 //go:build pkcs11 2 // +build pkcs11 3 4 /* 5 Copyright hechain. All Rights Reserved. 6 7 SPDX-License-Identifier: Apache-2.0 8 */ 9 10 package factory 11 12 import ( 13 "os" 14 "testing" 15 16 "github.com/hechain20/hechain/bccsp/pkcs11" 17 "github.com/stretchr/testify/require" 18 ) 19 20 func TestExportedInitFactories(t *testing.T) { 21 // Reset errors from previous negative test runs 22 factoriesInitError = initFactories(nil) 23 24 err := InitFactories(nil) 25 require.NoError(t, err) 26 } 27 28 func TestInitFactories(t *testing.T) { 29 err := initFactories(nil) 30 require.NoError(t, err) 31 32 err = initFactories(&FactoryOpts{}) 33 require.NoError(t, err) 34 } 35 36 func TestInitFactoriesInvalidArgs(t *testing.T) { 37 err := initFactories(&FactoryOpts{ 38 Default: "SW", 39 SW: &SwOpts{}, 40 }) 41 require.EqualError(t, err, "Failed initializing SW.BCCSP: Could not initialize BCCSP SW [Failed initializing configuration at [0,]: Hash Family not supported []]") 42 43 err = initFactories(&FactoryOpts{ 44 Default: "PKCS11", 45 PKCS11: &pkcs11.PKCS11Opts{}, 46 }) 47 require.EqualError(t, err, "Failed initializing PKCS11.BCCSP: Could not initialize BCCSP PKCS11 [Failed initializing configuration: Security level not supported [0]]") 48 } 49 50 func TestGetBCCSPFromOpts(t *testing.T) { 51 opts := GetDefaultOpts() 52 opts.SW.FileKeystore = &FileKeystoreOpts{KeyStorePath: os.TempDir()} 53 csp, err := GetBCCSPFromOpts(opts) 54 require.NoError(t, err) 55 require.NotNil(t, csp) 56 57 lib, pin, label := pkcs11.FindPKCS11Lib() 58 csp, err = GetBCCSPFromOpts(&FactoryOpts{ 59 Default: "PKCS11", 60 PKCS11: &pkcs11.PKCS11Opts{ 61 Security: 256, 62 Hash: "SHA2", 63 Library: lib, 64 Pin: pin, 65 Label: label, 66 }, 67 }) 68 require.NoError(t, err) 69 require.NotNil(t, csp) 70 71 csp, err = GetBCCSPFromOpts(&FactoryOpts{ 72 Default: "BadName", 73 }) 74 require.EqualError(t, err, "Could not find BCCSP, no 'BadName' provider") 75 require.Nil(t, csp) 76 }