77 lines
1.8 KiB
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)
|
|
}
|