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  }