MCPcopy Index your code
hub / github.com/caddyserver/certmagic / PEMEncodePrivateKey

Function PEMEncodePrivateKey

crypto.go:45–71  ·  view source on GitHub ↗

PEMEncodePrivateKey marshals a private key into a PEM-encoded block. The private key must be one of *ecdsa.PrivateKey, *rsa.PrivateKey, or *ed25519.PrivateKey.

(key crypto.PrivateKey)

Source from the content-addressed store, hash-verified

43// The private key must be one of *ecdsa.PrivateKey, *rsa.PrivateKey, or
44// *ed25519.PrivateKey.
45func PEMEncodePrivateKey(key crypto.PrivateKey) ([]byte, error) {
46 var pemType string
47 var keyBytes []byte
48 switch key := key.(type) {
49 case *ecdsa.PrivateKey:
50 var err error
51 pemType = "EC"
52 keyBytes, err = x509.MarshalECPrivateKey(key)
53 if err != nil {
54 return nil, err
55 }
56 case *rsa.PrivateKey:
57 pemType = "RSA"
58 keyBytes = x509.MarshalPKCS1PrivateKey(key)
59 case ed25519.PrivateKey:
60 var err error
61 pemType = "ED25519"
62 keyBytes, err = x509.MarshalPKCS8PrivateKey(key)
63 if err != nil {
64 return nil, err
65 }
66 default:
67 return nil, fmt.Errorf("unsupported key type: %T", key)
68 }
69 pemKey := pem.Block{Type: pemType + " PRIVATE KEY", Bytes: keyBytes}
70 return pem.EncodeToMemory(&pemKey), nil
71}
72
73// PEMDecodePrivateKey loads a PEM-encoded ECC/RSA private key from an array of bytes.
74// Borrowed from Go standard library, to handle various private key and PEM block types.

Calls

no outgoing calls

Used in the wild real call sites across dependent graphs

searching dependent graphs…