INNER CODE UNIT · Go
parsePrivateKeyPEM
hashicorp/terraform-provider-tls · internal/provider/common_key.go:85
func parsePrivateKeyPEM(keyPEMBytes []byte) (crypto.PrivateKey, Algorithm, error) {
pemBlock, rest := pem.Decode(keyPEMBytes)
if pemBlock == nil {
return nil, "", fmt.Errorf("failed to decode PEM block: decoded bytes %d, undecoded %d", len(keyPEMBytes)-len(rest), len(rest))
}
// Identify the PEM preamble from the block
preamble, err := pemBlockToPEMPreamble(pemBlock)
if err != nil {
return nil, "", err
}
// Identify parser for the given PEM preamble
parser, ok := keyParsers[preamble]
if !ok {
return nil, "", fmt.Errorf("unable to determine parser for PEM preamble: %s", preamble)
}