mirror of
https://github.com/pyihe/go-pkg.git
synced 2025-10-07 00:43:21 +08:00
33 lines
603 B
Go
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
|
|
}
|