@@ -36,46 +36,52 @@ type FactoryOpts struct {
3636// Error is returned only if defaultBCCSP cannot be found
3737func InitFactories (config * FactoryOpts ) error {
3838 factoriesInitOnce .Do (func () {
39- // Take some precautions on default opts
40- if config == nil {
41- config = & DefaultOpts
42- }
39+ setFactories (config )
40+ })
4341
44- if config .ProviderName == "" {
45- config .ProviderName = "SW"
46- }
42+ return factoriesInitError
43+ }
4744
48- if config .SwOpts == nil {
49- config .SwOpts = DefaultOpts .SwOpts
50- }
45+ func setFactories (config * FactoryOpts ) error {
46+ // Take some precautions on default opts
47+ if config == nil {
48+ config = & DefaultOpts
49+ }
50+
51+ if config .ProviderName == "" {
52+ config .ProviderName = "SW"
53+ }
5154
52- // Initialize factories map
53- bccspMap = make (map [string ]bccsp.BCCSP )
55+ if config .SwOpts == nil {
56+ config .SwOpts = DefaultOpts .SwOpts
57+ }
5458
55- // Software-Based BCCSP
56- if config .SwOpts != nil {
57- f := & SWFactory {}
58- err := initBCCSP (f , config )
59- if err != nil {
60- factoriesInitError = fmt .Errorf ("[%s]" , err )
61- }
62- }
59+ // Initialize factories map
60+ bccspMap = make (map [string ]bccsp.BCCSP )
6361
64- // PKCS11-Based BCCSP
65- if config .Pkcs11Opts != nil {
66- f := & PKCS11Factory {}
67- err := initBCCSP (f , config )
68- if err != nil {
69- factoriesInitError = fmt .Errorf ("%s\n [%s]" , factoriesInitError , err )
70- }
62+ // Software-Based BCCSP
63+ if config .SwOpts != nil {
64+ f := & SWFactory {}
65+ err := initBCCSP (f , config )
66+ if err != nil {
67+ factoriesInitError = fmt .Errorf ("Failed initializing SW.BCCSP [%s]" , err )
7168 }
69+ }
7270
73- var ok bool
74- defaultBCCSP , ok = bccspMap [config .ProviderName ]
75- if ! ok {
76- factoriesInitError = fmt .Errorf ("%s\n Could not find default `%s` BCCSP" , factoriesInitError , config .ProviderName )
71+ // PKCS11-Based BCCSP
72+ if config .Pkcs11Opts != nil {
73+ f := & PKCS11Factory {}
74+ err := initBCCSP (f , config )
75+ if err != nil {
76+ factoriesInitError = fmt .Errorf ("Failed initializing PKCS11.BCCSP %s\n [%s]" , factoriesInitError , err )
7777 }
78- })
78+ }
79+
80+ var ok bool
81+ defaultBCCSP , ok = bccspMap [config .ProviderName ]
82+ if ! ok {
83+ factoriesInitError = fmt .Errorf ("%s\n Could not find default `%s` BCCSP" , factoriesInitError , config .ProviderName )
84+ }
7985
8086 return factoriesInitError
8187}
0 commit comments