crypto: catch potential wrong private key type from DER
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user