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

Function parsePrivateKey

tls.go:339–356  ·  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

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

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…