go_study/fabric-main/bccsp/factory/pkcs11_test.go

77 lines
1.8 KiB
Go

//go:build pkcs11
// +build pkcs11
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package factory
import (
"os"
"testing"
"github.com/hyperledger/fabric/bccsp/pkcs11"
"github.com/stretchr/testify/require"
)
func TestExportedInitFactories(t *testing.T) {
// Reset errors from previous negative test runs
factoriesInitError = initFactories(nil)
err := InitFactories(nil)
require.NoError(t, err)
}
func TestInitFactories(t *testing.T) {
err := initFactories(nil)
require.NoError(t, err)
err = initFactories(&FactoryOpts{})
require.NoError(t, err)
}
func TestInitFactoriesInvalidArgs(t *testing.T) {
err := initFactories(&FactoryOpts{
Default: "SW",
SW: &SwOpts{},
})
require.EqualError(t, err, "Failed initializing SW.BCCSP: Could not initialize BCCSP SW [Failed initializing configuration at [0,]: Hash Family not supported []]")
err = initFactories(&FactoryOpts{
Default: "PKCS11",
PKCS11: &pkcs11.PKCS11Opts{},
})
require.EqualError(t, err, "Failed initializing PKCS11.BCCSP: Could not initialize BCCSP PKCS11 [Failed initializing configuration: Security level not supported [0]]")
}
func TestGetBCCSPFromOpts(t *testing.T) {
opts := GetDefaultOpts()
opts.SW.FileKeystore = &FileKeystoreOpts{KeyStorePath: os.TempDir()}
csp, err := GetBCCSPFromOpts(opts)
require.NoError(t, err)
require.NotNil(t, csp)
lib, pin, label := pkcs11.FindPKCS11Lib()
csp, err = GetBCCSPFromOpts(&FactoryOpts{
Default: "PKCS11",
PKCS11: &pkcs11.PKCS11Opts{
Security: 256,
Hash: "SHA2",
Library: lib,
Pin: pin,
Label: label,
},
})
require.NoError(t, err)
require.NotNil(t, csp)
csp, err = GetBCCSPFromOpts(&FactoryOpts{
Default: "BadName",
})
require.EqualError(t, err, "Could not find BCCSP, no 'BadName' provider")
require.Nil(t, csp)
}