Files
go-pkg/certpkg/cert.go
2022-03-04 17:24:23 +08:00

33 lines
603 B
Go

package certpkg
import (
"crypto/tls"
"encoding/pem"
"errors"
"io/ioutil"
"golang.org/x/crypto/pkcs12"
)
func P12ToPem(p12Path string, password string) (cert *tls.Certificate, err error) {
if p12Path == "" {
err = errors.New("empty path")
return
}
data, err := ioutil.ReadFile(p12Path)
if err != nil {
return nil, err
}
blocks, err := pkcs12.ToPEM(data, password)
if err != nil {
return nil, err
}
var pemData []byte
for _, b := range blocks {
pemData = append(pemData, pem.EncodeToMemory(b)...)
}
pemCert, err := tls.X509KeyPair(pemData, pemData)
return &pemCert, err
}