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)
| 337 | // PKCS #1 private keys by default, while OpenSSL 1.0.0 generates PKCS #8 keys. |
| 338 | // OpenSSL ecparam generates SEC1 EC private keys for ECDSA. We try all three. |
| 339 | func parsePrivateKey(der []byte) (crypto.PrivateKey, error) { |
| 340 | if key, err := x509.ParsePKCS1PrivateKey(der); err == nil { |
| 341 | return key, nil |
| 342 | } |
| 343 | if key, err := x509.ParsePKCS8PrivateKey(der); err == nil { |
| 344 | switch key := key.(type) { |
| 345 | case *rsa.PrivateKey, *ecdsa.PrivateKey, ed25519.PrivateKey: |
| 346 | return key, nil |
| 347 | default: |
| 348 | return nil, errors.New("tls: found unknown private key type in PKCS#8 wrapping") |
| 349 | } |
| 350 | } |
| 351 | if key, err := x509.ParseECPrivateKey(der); err == nil { |
| 352 | return key, nil |
| 353 | } |
| 354 | |
| 355 | return nil, errors.New("tls: failed to parse private key") |
| 356 | } |
no outgoing calls
no test coverage detected
searching dependent graphs…