-
Notifications
You must be signed in to change notification settings - Fork 0
/
configurebccspnopkcs11.go
68 lines (62 loc) · 1.7 KB
/
configurebccspnopkcs11.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// +build !pkcs11
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package util
import (
"path"
"strings"
"github.com/cloudflare/cfssl/log"
"github.com/hyperledger/fabric/bccsp/factory"
"github.com/pkg/errors"
)
// ConfigureBCCSP configures BCCSP, using
func ConfigureBCCSP(optsPtr **factory.FactoryOpts, mspDir, homeDir string) error {
var err error
if optsPtr == nil {
return errors.New("nil argument not allowed")
}
opts := *optsPtr
if opts == nil {
opts = &factory.FactoryOpts{}
}
if opts.ProviderName == "" {
opts.ProviderName = "SW"
}
if strings.ToUpper(opts.ProviderName) == "SW" {
if opts.SwOpts == nil {
opts.SwOpts = &factory.SwOpts{}
}
if opts.SwOpts.HashFamily == "" {
opts.SwOpts.HashFamily = "SHA2"
}
if opts.SwOpts.SecLevel == 0 {
opts.SwOpts.SecLevel = 256
}
if opts.SwOpts.FileKeystore == nil {
opts.SwOpts.FileKeystore = &factory.FileKeystoreOpts{}
}
// The mspDir overrides the KeyStorePath; otherwise, if not set, set default
if mspDir != "" {
opts.SwOpts.FileKeystore.KeyStorePath = path.Join(mspDir, "keystore")
} else if opts.SwOpts.FileKeystore.KeyStorePath == "" {
opts.SwOpts.FileKeystore.KeyStorePath = path.Join("msp", "keystore")
}
}
err = makeFileNamesAbsolute(opts, homeDir)
if err != nil {
return errors.WithMessage(err, "Failed to make BCCSP files absolute")
}
log.Debugf("Initializing BCCSP: %+v", opts)
if opts.SwOpts != nil {
log.Debugf("Initializing BCCSP with software options %+v", opts.SwOpts)
}
// Init the BCCSP factories
err = factory.InitFactories(opts)
if err != nil {
return errors.WithMessage(err, "Failed to initialize BCCSP Factories")
}
*optsPtr = opts
return nil
}