diff --git a/certs/certmanager_test.go b/certs/certmanager_test.go index f9a6fdabda..8dc6104894 100644 --- a/certs/certmanager_test.go +++ b/certs/certmanager_test.go @@ -242,7 +242,7 @@ func filestoreWithTwoCerts(t *testing.T, gun, keyAlg string) ( key, _, err := fileKeyStore.GetKey(pubKey.ID()) assert.NoError(t, err) - cert, err := cryptoservice.GenerateCertificate(key, gun) + cert, err := cryptoservice.GenerateTestingCertificate(key.CryptoSigner(), gun) assert.NoError(t, err) certificates[i] = cert diff --git a/cryptoservice/certificate.go b/cryptoservice/certificate.go index b9efc84db0..16aea6e96f 100644 --- a/cryptoservice/certificate.go +++ b/cryptoservice/certificate.go @@ -1,6 +1,7 @@ package cryptoservice import ( + "crypto" "crypto/rand" "crypto/x509" "fmt" @@ -16,6 +17,15 @@ func GenerateCertificate(rootKey data.PrivateKey, gun string) (*x509.Certificate return nil, fmt.Errorf("key type not supported for Certificate generation: %s\n", rootKey.Algorithm()) } + return generateCertificate(signer, gun) +} + +// GenerateTestingCertificate generates an X509 Certificate from a template, given a GUN. +func GenerateTestingCertificate(signer crypto.Signer, gun string) (*x509.Certificate, error) { + return generateCertificate(signer, gun) +} + +func generateCertificate(signer crypto.Signer, gun string) (*x509.Certificate, error) { template, err := trustmanager.NewCertificate(gun) if err != nil { return nil, fmt.Errorf("failed to create the certificate template for: %s (%v)", gun, err) diff --git a/tuf/signed/sign_test.go b/tuf/signed/sign_test.go index 6ceb3e5232..50c241b7b7 100644 --- a/tuf/signed/sign_test.go +++ b/tuf/signed/sign_test.go @@ -2,11 +2,11 @@ package signed import ( "crypto/rand" - "crypto/x509" "encoding/pem" "io" "testing" + "github.com/docker/notary/cryptoservice" "github.com/docker/notary/trustmanager" "github.com/docker/notary/tuf/data" "github.com/stretchr/testify/assert" @@ -254,15 +254,7 @@ func TestSignWithX509(t *testing.T) { assert.NoError(t, err) // make a RSA x509 key - template, err := trustmanager.NewCertificate("test") - assert.NoError(t, err) - - signer := privKey.CryptoSigner() - derBytes, err := x509.CreateCertificate( - rand.Reader, template, template, signer.Public(), signer) - assert.NoError(t, err) - - cert, err := x509.ParseCertificate(derBytes) + cert, err := cryptoservice.GenerateTestingCertificate(privKey.CryptoSigner(), "test") assert.NoError(t, err) tufRSAx509Key := trustmanager.CertToKey(cert) diff --git a/utils/tls_config_test.go b/utils/tls_config_test.go index 35a5d782fc..71a182a3fe 100644 --- a/utils/tls_config_test.go +++ b/utils/tls_config_test.go @@ -7,11 +7,11 @@ import ( "crypto/rand" "crypto/rsa" "crypto/tls" - "crypto/x509" "io/ioutil" "os" "testing" + "github.com/docker/notary/cryptoservice" "github.com/docker/notary/trustmanager" "github.com/stretchr/testify/assert" ) @@ -33,15 +33,9 @@ func generateMultiCert(t *testing.T) string { assert.NoError(t, err) ecKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) assert.NoError(t, err) - template, err := trustmanager.NewCertificate("gun") - assert.NoError(t, err) for _, key := range []crypto.Signer{rsaKey, ecKey} { - derBytes, err := x509.CreateCertificate( - rand.Reader, template, template, key.Public(), key) - assert.NoError(t, err) - - cert, err := x509.ParseCertificate(derBytes) + cert, err := cryptoservice.GenerateTestingCertificate(key, "gun") assert.NoError(t, err) pemBytes := trustmanager.CertToPEM(cert)