简介: 前一段时间,跟农商行对接支付接口,突然来了一个pfx格式的证书,我当时就懵逼了,因为网上针对于golang解析pfx的文章根本就没有用,只能自己研究了,如果对你有帮助的话,请点个赞吧
package main
func main () {
getPrivateKey("key/request_key/test.pfx","test")
}
func getPrivateKey(privateKeyName, privatePassword string) (*rsa.PrivateKey, error) {
f, err := os.Open(privateKeyName)
if err != nil {
return nil, err
}
bytes, err := ioutil.ReadAll(f)
if err != nil {
return nil, err
}
// 因为pfx证书公钥和密钥是成对的,所以要先转成pem.Block
blocks, err := pkcs12.ToPEM(bytes, privatePassword)
if err != nil {
return nil, err
}
if len(blocks) != 2 {
return nil, errors.New("解密错误")
}
// 拿到第一个block,用x509解析出私钥(当然公钥也是可以的)
privateKey, err := x509.ParsePKCS1PrivateKey(blocks[0].Bytes)
if err != nil {
return nil, err
}
return privateKey, nil
}