gitee.com/hyperledger/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  }