0
0
Fork 0

fix ed25519 key function

The private key for ed25519 never returned crypto.PrivateKey. This
caused the generation of certificates to not work and may also have
resulted in other issues.
This commit is contained in:
Gibheer 2023-01-10 17:38:46 +01:00
parent d34a8ab26e
commit 0380f7f91c
2 changed files with 28 additions and 18 deletions

View File

@ -16,29 +16,39 @@ 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 csr failed: %s", err)
t.Errorf("cert: creating private key ecdsa 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)
rsaKey, err := NewPrivateKeyRsa(1024)
if err != nil {
t.Errorf("cert: creating cert failed: %s", err)
t.Errorf("cert: creating private key rsa failed: %s", err)
}
if !fieldsAreSame(TestCertificateData, cert) {
t.Errorf("cert: Fields are not the same")
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")
}
}
}

View File

@ -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.