golang pkcs12: unknown digest algorithm: 2.16.840.1.101.3.4.2.1

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” 这个包后能够正常获取私钥了。

问题解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值