MCPcopy Create free account
hub / github.com/XTLS/REALITY / parsePrivateKey

Function parsePrivateKey

tls.go:821–838  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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.
821func 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}

Callers 1

X509KeyPairFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…