crypto: catch potential wrong private key type from DER

This commit is contained in:
Michael Muré
2025-07-09 18:37:40 +02:00
parent 20576ae335
commit 0c5772714e
5 changed files with 21 additions and 5 deletions

View File

@@ -43,7 +43,11 @@ func PrivateKeyFromPKCS8DER(bytes []byte) (PrivateKey, error) {
if err != nil {
return PrivateKey{}, err
}
return PrivateKey{k: priv.(ed25519.PrivateKey)}, nil
edPriv, ok := priv.(ed25519.PrivateKey)
if !ok {
return PrivateKey{}, fmt.Errorf("invalid private key type")
}
return PrivateKey{k: edPriv}, nil
}
// PrivateKeyFromPKCS8PEM decodes an PKCS#8 PEM (string) encoded private key.

View File

@@ -48,7 +48,10 @@ func PrivateKeyFromPKCS8DER(bytes []byte) (*PrivateKey, error) {
if err != nil {
return nil, err
}
ecdsaPriv := priv.(*ecdsa.PrivateKey)
ecdsaPriv, ok := priv.(*ecdsa.PrivateKey)
if !ok {
return nil, fmt.Errorf("invalid private key type")
}
return &PrivateKey{k: ecdsaPriv}, nil
}

View File

@@ -48,7 +48,10 @@ func PrivateKeyFromPKCS8DER(bytes []byte) (*PrivateKey, error) {
if err != nil {
return nil, err
}
ecdsaPriv := priv.(*ecdsa.PrivateKey)
ecdsaPriv, ok := priv.(*ecdsa.PrivateKey)
if !ok {
return nil, fmt.Errorf("invalid private key type")
}
return &PrivateKey{k: ecdsaPriv}, nil
}

View File

@@ -48,7 +48,10 @@ func PrivateKeyFromPKCS8DER(bytes []byte) (*PrivateKey, error) {
if err != nil {
return nil, err
}
ecdsaPriv := priv.(*ecdsa.PrivateKey)
ecdsaPriv, ok := priv.(*ecdsa.PrivateKey)
if !ok {
return nil, fmt.Errorf("invalid private key type")
}
return &PrivateKey{k: ecdsaPriv}, nil
}

View File

@@ -53,7 +53,10 @@ func PrivateKeyFromPKCS8DER(bytes []byte) (*PrivateKey, error) {
if err != nil {
return nil, err
}
ecdhPriv := priv.(*ecdh.PrivateKey)
ecdhPriv, ok := priv.(*ecdh.PrivateKey)
if !ok {
return nil, fmt.Errorf("invalid private key type")
}
return &PrivateKey{k: ecdhPriv}, nil
}