encoding/pem

Guided tour · Encoding · pkg.go.dev →

The BEGIN/END block format for certificates and keys. Thin layer over base64 with a typed header.

Decode a PEM block

Decode — pull out a DER blob

block, _ := pem.Decode(data)
if block == nil || block.Type != "CERTIFICATE" {
    return errors.New("not a certificate PEM block")
}
cert, err := x509.ParseCertificate(block.Bytes)

Encode — write a PEM block

pem.Encode(os.Stdout, &pem.Block{
    Type:  "CERTIFICATE",
    Bytes: der,
})