func TestCreateSelfSignedCert(t *testing.T) { // --- TEST: Create a self-signed certificate from a CSR. --- // // Generate a self-signed certificate from the request. encodedCertFromCode, _, err := CreateSelfSignedCert(CARequest) checkError(err, t) // Now compare to a pre-made certificate made using a JSON file with the // same request information. This JSON file is located in testdata/initCA // and is called ca_csr.json. CLIOutputFile := preMadeOutput CLIOutput, err := ioutil.ReadFile(CLIOutputFile) checkError(err, t) encodedCertFromCLI, err := cleanCLIOutput(CLIOutput, "cert") checkError(err, t) certFromCode, err := helpers.ParseSelfSignedCertificatePEM(encodedCertFromCode) checkError(err, t) certFromCLI, err := helpers.ParseSelfSignedCertificatePEM(encodedCertFromCLI) checkError(err, t) // Nullify any fields of the certificates which are dependent upon the time // of the certificate's creation. nullifyTimeDependency(certFromCode) nullifyTimeDependency(certFromCLI) if !reflect.DeepEqual(certFromCode, certFromCLI) { unequalFields := checkFields( *certFromCode, *certFromCLI, reflect.TypeOf(*certFromCode)) t.Log("The following fields were unequal:") for _, field := range unequalFields { t.Log(field) } t.Fatal("Certificates unequal.") } }
func TestCreateSelfSignedCert(t *testing.T) { // --- TEST: Create a self-signed certificate from a CSR. --- // // Make the request we will use to generate the certificate. keyRequest := csr.KeyRequest{ Algo: "rsa", Size: 2048, } CAConfig := csr.CAConfig{ PathLength: 1, Expiry: "1/1/2015", } request := csr.CertificateRequest{ CN: "example.com", Names: []csr.Name{ { C: "US", ST: "California", L: "San Francisco", O: "Internet Widgets, LLC", OU: "Certificate Authority", }, }, Hosts: []string{"ca.example.com"}, KeyRequest: &keyRequest, CA: &CAConfig, } // Generate a self-signed certificate from the request. encodedCertFromCode, _, err := CreateSelfSignedCert(request) checkError(err, t) // Now compare to a pre-made certificate made using a JSON file with the // same request information. This JSON file is located in testdata/initCA // and is called ca_csr.json. CLIOutputFile := preMadeOutput CLIOutput, err := ioutil.ReadFile(CLIOutputFile) checkError(err, t) encodedCertFromCLI, err := cleanCLIOutput(CLIOutput, "cert") checkError(err, t) certFromCode, err := helpers.ParseSelfSignedCertificatePEM(encodedCertFromCode) checkError(err, t) certFromCLI, err := helpers.ParseSelfSignedCertificatePEM(encodedCertFromCLI) checkError(err, t) // Nullify any fields of the certificates which are dependent upon the time // of the certificate's creation. nullifyTimeDependency(certFromCode) nullifyTimeDependency(certFromCLI) if !reflect.DeepEqual(certFromCode, certFromCLI) { unequalFields := checkFields( *certFromCode, *certFromCLI, reflect.TypeOf(*certFromCode)) t.Log("The following fields were unequal:") for _, field := range unequalFields { t.Log(field) } t.Fatal("Certificates unequal.") } }