-
Notifications
You must be signed in to change notification settings - Fork 0
/
cryptosuiteimpl.go
91 lines (76 loc) · 2.66 KB
/
cryptosuiteimpl.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
Copyright SecureKey Technologies Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package gm
import (
"app/service/fabric-sdk-go-gm/internal/github.com/hyperledger/fabric/bccsp"
bccspSw "app/service/fabric-sdk-go-gm/internal/github.com/hyperledger/fabric/bccsp/factory/gm"
"app/service/fabric-sdk-go-gm/internal/github.com/hyperledger/fabric/bccsp/gm"
"app/service/fabric-sdk-go-gm/pkg/common/logging"
"app/service/fabric-sdk-go-gm/pkg/common/providers/core"
"app/service/fabric-sdk-go-gm/pkg/core/cryptosuite/bccsp/wrapper"
"github.com/pkg/errors"
)
var logger = logging.NewLogger("fabsdk/core")
//GetSuiteByConfig returns cryptosuite adaptor for bccsp loaded according to given config
func GetSuiteByConfig(config core.CryptoSuiteConfig) (core.CryptoSuite, error) {
// TODO: delete this check?
if config.SecurityProvider() != "gm" {
return nil, errors.Errorf("Unsupported BCCSP Provider: %s", config.SecurityProvider())
}
opts := getOptsByConfig(config)
bccsp, err := getBCCSPFromOpts(opts)
if err != nil {
return nil, err
}
return wrapper.NewCryptoSuite(bccsp), nil
}
//GetSuiteWithDefaultEphemeral returns cryptosuite adaptor for bccsp with default ephemeral options (intended to aid testing)
func GetSuiteWithDefaultEphemeral() (core.CryptoSuite, error) {
opts := getEphemeralOpts()
bccsp, err := getBCCSPFromOpts(opts)
if err != nil {
return nil, err
}
return wrapper.NewCryptoSuite(bccsp), nil
}
func getBCCSPFromOpts(config *bccspSw.GmOpts) (bccsp.BCCSP, error) {
f := &bccspSw.GMFactory{}
csp, err := f.Get(config)
if err != nil {
return nil, errors.Wrapf(err, "Could not initialize BCCSP %s", f.Name())
}
return csp, nil
}
// GetSuite returns a new instance of the software-based BCCSP
// set at the passed security level, hash family and KeyStore.
func GetSuite(securityLevel int, hashFamily string, keyStore bccsp.KeyStore) (core.CryptoSuite, error) {
bccsp, err := gm.New(securityLevel, hashFamily, keyStore)
if err != nil {
return nil, err
}
return wrapper.NewCryptoSuite(bccsp), nil
}
//GetOptsByConfig Returns Factory opts for given SDK config
func getOptsByConfig(c core.CryptoSuiteConfig) *bccspSw.GmOpts {
opts := &bccspSw.GmOpts{
HashFamily: c.SecurityAlgorithm(),
SecLevel: c.SecurityLevel(),
FileKeystore: &bccspSw.FileKeystoreOpts{
KeyStorePath: c.KeyStorePath(),
},
//Ephemeral: c.Ephemeral(),
}
logger.Debug("Initialized SW cryptosuite11111, %v", c.SecurityAlgorithm())
return opts
}
func getEphemeralOpts() *bccspSw.GmOpts {
opts := &bccspSw.GmOpts{
HashFamily: "SHA256",
SecLevel: 256,
Ephemeral: true,
}
logger.Debug("Initialized ephemeral SW cryptosuite with default opts")
return opts
}