diff options
| -rw-r--r-- | certificate.go | 2 | ||||
| -rw-r--r-- | certificate_test.go | 48 | ||||
| -rw-r--r-- | ed25519.go | 4 |
3 files changed, 41 insertions, 13 deletions
diff --git a/certificate.go b/certificate.go index b90e9fa..9203e57 100644 --- a/certificate.go +++ b/certificate.go @@ -127,7 +127,7 @@ func (c *CertificateRequest) ToCertificate(private_key PrivateKey, if cert_opts.IsCA { template.BasicConstraintsValid = true } - if cert_opts.CALength >= 0 { + if cert_opts.CALength > 0 { template.MaxPathLen = cert_opts.CALength template.MaxPathLenZero = true template.BasicConstraintsValid = true diff --git a/certificate_test.go b/certificate_test.go index 9951d7a..39e25c0 100644 --- a/certificate_test.go +++ b/certificate_test.go @@ -3,6 +3,7 @@ package pki import ( "crypto/elliptic" "crypto/x509/pkix" + "fmt" "math/big" "reflect" "testing" @@ -16,27 +17,54 @@ var ( ) func TestCertificateCreation(t *testing.T) { - pk, err := NewPrivateKeyEcdsa(elliptic.P224()) + ed25519Key, err := NewPrivateKeyEd25519() if err != nil { - t.Errorf("cert: creating private key failed: %s", err) + t.Errorf("cert: creating private key ed25519 failed: %s", err) } - - csr, err := TestCertificateData.ToCertificateRequest(pk) + ecdsaKey, err := NewPrivateKeyEcdsa(elliptic.P224()) + if err != nil { + t.Errorf("cert: creating private key ecdsa failed: %s", err) + } + rsaKey, err := NewPrivateKeyRsa(1024) if err != nil { - t.Errorf("cert: creating csr failed: %s", err) + t.Errorf("cert: creating private key rsa failed: %s", err) } - cert_opts := CertificateOptions{ - // KeyUsage: x509.KeyUsageEncipherOnly | x509.KeyUsageKeyEncipherment | x509.KeyUsageCertSign, - SerialNumber: big.NewInt(1), - CALength: -1, + for _, pk := range []PrivateKey{rsaKey, ecdsaKey, ed25519Key} { + csr, err := TestCertificateData.ToCertificateRequest(pk) + if err != nil { + t.Errorf("cert: creating csr failed: %s", err) + } + + cert_opts := CertificateOptions{ + // KeyUsage: x509.KeyUsageEncipherOnly | x509.KeyUsageKeyEncipherment | x509.KeyUsageCertSign, + SerialNumber: big.NewInt(1), + CALength: -1, + } + + cert, err := csr.ToCertificate(pk, cert_opts, nil) + if err != nil { + t.Errorf("cert: creating cert failed: %s", err) + } + + if !fieldsAreSame(TestCertificateData, cert) { + t.Errorf("cert: Fields are not the same") + } } +} +func TestCertificateMaxLength(t *testing.T) { + pk, err := NewPrivateKeyRsa(1024) + if err != nil { + t.Errorf("cert: creating private key rsa failed: %s", err) + } + csr, err := TestCertificateData.ToCertificateRequest(pk) + cert_opts := CertificateOptions{SerialNumber: big.NewInt(1)} + fmt.Println("create cert") cert, err := csr.ToCertificate(pk, cert_opts, nil) if err != nil { t.Errorf("cert: creating cert failed: %s", err) } - if !fieldsAreSame(TestCertificateData, cert) { t.Errorf("cert: Fields are not the same") } @@ -45,9 +45,9 @@ func LoadPrivateKeyEd25519(raw []byte) (*Ed25519PrivateKey, error) { return &Ed25519PrivateKey{pr_loaded}, nil } -// TODO implement the raw API for the private key +// PrivateKey returns the private key. func (pr *Ed25519PrivateKey) PrivateKey() crypto.PrivateKey { - return nil + return pr.private_key } // Return the public key for this private key. |
