pkcs12: unknown digest algorithm: 2.16.840.1.101.3.4.2.1
这几天在对接一个接口,中间有用到获取私钥的方法。
data, err := ioutil.ReadFile(*in)
if err != nil {
log.Fatal(err)
}
privateKey, certificate, err := pkcs12.Decode(data, *password)
if err != nil {
log.Fatal(err)
}
pv := privateKey.(*rsa.PrivateKey)
signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey, rypto.SHA256, hash)
if err != nil {
log.Fatal(err)
}
pkcs12.Decode方法返回的私钥数据是nil。err报错pkcs12: unknown digest algorithm: 2.16.840.1.101.3.4.2.1
用其他语言尝试是可以获得证书的私钥的。证书没问题。
后面发现在使用 pkcs12.Decode方法时 默认引用的包是 “golang.org/x/crypto/pkcs12”,这个包不适合。替换成 “software.sslmate.com/src/go-pkcs12” 这个包后能够正常获取私钥了。
问题解决