Attempt to parse the given private key DER block. OpenSSL 0.9.8 generates PKCS #1 private keys by default, while OpenSSL 1.0.0 generates PKCS #8 keys. OpenSSL ecparam generates SEC1 EC private keys for ECDSA. We try all three.
(der []byte)
| 819 | // PKCS #1 private keys by default, while OpenSSL 1.0.0 generates PKCS #8 keys. |
| 820 | // OpenSSL ecparam generates SEC1 EC private keys for ECDSA. We try all three. |
| 821 | func parsePrivateKey(der []byte) (crypto.PrivateKey, error) { |
| 822 | if key, err := x509.ParsePKCS1PrivateKey(der); err == nil { |
| 823 | return key, nil |
| 824 | } |
| 825 | if key, err := x509.ParsePKCS8PrivateKey(der); err == nil { |
| 826 | switch key := key.(type) { |
| 827 | case *rsa.PrivateKey, *ecdsa.PrivateKey, ed25519.PrivateKey: |
| 828 | return key, nil |
| 829 | default: |
| 830 | return nil, errors.New("tls: found unknown private key type in PKCS#8 wrapping") |
| 831 | } |
| 832 | } |
| 833 | if key, err := x509.ParseECPrivateKey(der); err == nil { |
| 834 | return key, nil |
| 835 | } |
| 836 | |
| 837 | return nil, errors.New("tls: failed to parse private key") |
| 838 | } |
no outgoing calls
no test coverage detected
searching dependent graphs…