package pem import ( "crypto" "crypto/x509" "encoding/pem" ) // Encodex509CertAsPem converts an x509 certificate to a PEM encoded block func Encodex509CertAsPem(x509CertBytes []byte) []byte { block := pem.Block{ Type: "CERTIFICATE", Bytes: x509CertBytes, } encodedCert := pem.EncodeToMemory(&block) return encodedCert } // Utility for obtaining an *x509.Certificate from PEM-encoded bytes func GetCertFromPemFile(certBytes []byte) (*x509.Certificate, error) { cpb, _ := pem.Decode(certBytes) cert, err := x509.ParseCertificate(cpb.Bytes) if err != nil { return nil, err } return cert, nil } // Utility for obtaining a crypto.Signer from a file containing a PEM-encoded private key func GetKeySignerFromPemFile(keyBytes []byte) (crypto.Signer, error) { ckb, _ := pem.Decode(keyBytes) key, err := x509.ParsePKCS1PrivateKey(ckb.Bytes) if err != nil { return nil, err } return key, nil }