github.com/bestbeforetoday/fabric-ca@v2.0.0-alpha+incompatible/lib/capkcs11_test.go (about) 1 // +build pkcs11 2 3 /* 4 Copyright IBM Corp. 2016 All Rights Reserved. 5 6 SPDX-License-Identifier: Apache-2.0 7 */ 8 9 package lib 10 11 import ( 12 "os" 13 "testing" 14 15 "github.com/hyperledger/fabric/bccsp/factory" 16 "github.com/hyperledger/fabric/bccsp/pkcs11" 17 ) 18 19 func TestCAInit(t *testing.T) { 20 orgwd, err := os.Getwd() 21 if err != nil { 22 t.Fatal("failed to get cwd: ", err) 23 } 24 confDir, err := cdTmpTestDir("TestCAInit") 25 t.Log("confDir: ", confDir) 26 if err != nil { 27 t.Fatal("failed to cd to tmp dir: ", err) 28 } 29 defer func() { 30 err = os.Chdir(orgwd) 31 if err != nil { 32 t.Fatalf("failed to cd to %v: %s", orgwd, err) 33 } 34 }() 35 wd, err := os.Getwd() 36 if err != nil { 37 t.Fatal("failed to get cwd: ", err) 38 } 39 t.Log("Working dir", wd) 40 defer cleanupTmpfiles(t, wd) 41 cfgFile := serverCfgFile(".") 42 ca, err := newCA(cfgFile, &cfg, &srv, false) 43 if err != nil { 44 t.Fatal("newCA FAILED") 45 } 46 47 // BCCSP error 48 swo := &factory.SwOpts{} 49 pko := &pkcs11.PKCS11Opts{} 50 ca.Config.CSP = &factory.FactoryOpts{ProviderName: "PKCS11", SwOpts: swo, Pkcs11Opts: pko} 51 ca.HomeDir = "" 52 err = ca.init(false) 53 t.Logf("ca.init error: %v", err) 54 if err == nil { 55 t.Fatalf("Server init should have failed: BCCSP err") 56 } 57 58 // delete everything and start over 59 // initKeyMaterial error 60 os.Chdir(orgwd) 61 62 confDir, err = cdTmpTestDir("TestCAInit") 63 if err != nil { 64 t.Fatal("failed to cd to tmp dir: ", err) 65 } 66 wd2, err := os.Getwd() 67 if err != nil { 68 t.Fatal("failed to get cwd: ", err) 69 } 70 t.Log("changed directory to ", wd2) 71 defer cleanupTmpfiles(t, wd2) 72 73 ca.Config.CSP = &factory.FactoryOpts{ProviderName: "SW", SwOpts: swo, Pkcs11Opts: pko} 74 ca, err = newCA(cfgFile, &cfg, &srv, true) 75 if err != nil { 76 t.Fatal("newCA FAILED", err) 77 } 78 ca.Config.CA.Keyfile = caKey 79 ca.Config.CA.Certfile = caCert 80 err = CopyFile("../ec256-1-key.pem", caKey) 81 if err != nil { 82 t.Fatal("Failed to copy file: ", err) 83 } 84 err = CopyFile("../ec256-2-cert.pem", caCert) 85 if err != nil { 86 t.Fatal("Failed to copy file: ", err) 87 } 88 err = ca.init(false) 89 t.Log("init err: ", err) 90 if err == nil { 91 t.Error("Should have failed because key and cert don't match") 92 } 93 94 err = os.Remove(caKey) 95 if err != nil { 96 t.Fatalf("Remove failed: %s", err) 97 } 98 err = os.Remove(caCert) 99 if err != nil { 100 t.Fatalf("Remove failed: %s", err) 101 } 102 ca.Config.CA.Keyfile = "" 103 ca.Config.CA.Certfile = "" 104 ca.Config.DB.Datasource = "" 105 ca, err = newCA(cfgFile, &cfg, &srv, false) 106 if err != nil { 107 t.Fatal("newCA FAILED: ", err) 108 } 109 110 err = ca.init(false) 111 if err != nil { 112 t.Fatal("ca init failed", err) 113 } 114 115 // initUserRegistry error 116 ca.Config.LDAP.Enabled = true 117 err = ca.initUserRegistry() 118 t.Log("init err: ", err) 119 if err == nil { 120 t.Fatal("initUserRegistry should have failed") 121 } 122 123 // initEnrollmentSigner error 124 ca.Config.LDAP.Enabled = false 125 ca, err = newCA(cfgFile, &cfg, &srv, false) 126 if err != nil { 127 t.Fatal("newCA FAILED") 128 } 129 err = os.RemoveAll("./msp") 130 if err != nil { 131 t.Fatal("os.Remove msp failed: ", err) 132 } 133 err = os.Remove(caCert) 134 if err != nil { 135 t.Fatal("os.Remove failed: ", err) 136 } 137 err = CopyFile("../rsa2048-1-key.pem", caKey) 138 if err != nil { 139 t.Fatal("Failed to copy file: ", err) 140 } 141 err = CopyFile("../rsa2048-1-cert.pem", caCert) 142 if err != nil { 143 t.Fatal("Failed to copy file: ", err) 144 } 145 ca.Config.CA.Keyfile = caKey 146 ca.Config.CA.Certfile = caCert 147 err = ca.init(false) 148 t.Log("init err: ", err) 149 if err == nil { 150 t.Fatal("init should have failed") 151 } 152 }