为了账号安全,请及时绑定邮箱和手机立即绑定

asn1 go(客户端证书认证)

asn1 go(客户端证书认证)

Go
潇潇雨雨 2021-09-10 21:28:25
我正在尝试让客户端证书身份验证正常工作,在阅读https://developer.mozilla.org/en-US/docs/Web/HTML/Element/keygen 后,我意识到我需要解析一些 asn1。我试图使用的结构是这样的:type PublicKeyAndChallenge struct {    Spki asn1.BitString    Challenge asn1.BitString}type SignedPublicKeyAndChallenge struct{    PublicKeyAndChallenge PublicKeyAndChallenge    SignitureAlgorithm  asn1.BitString    Signiture asn1.BitString}我将 base64 编码的 asn1 解码为 []byte,然后尝试将 asn1 解组到结构中。signeeKeySigned := make([]byte, 2048)    _ , err = base64.StdEncoding.Decode(signeeKeySigned, signeePubKeySigned)    if ( err != nil ){        log.Fatal(err)    }       //Parse should be asn.1 encoded    var signee SignedPublicKeyAndChallenge    _, err = asn1.Unmarshal(signeeKeySigned, &signee)    if err != nil {        log.Fatal(err)    }  我收到一个结构错误,所以我相信我在 go 中的结构一定不正确,但我无法弄清楚。
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我做了一些鸭鸭,找到了提供 asn.1 类定义的 rfc320 并让它工作了!


现在的结构是:


type SubjectPublicKeyInfo struct {

    Algorithm pkix.AlgorithmIdentifier

    SubjectPublicKey asn1.BitString

}


type PublicKeyAndChallenge struct {

    Spki SubjectPublicKeyInfo

    Challenge string

}


type SignedPublicKeyAndChallenge struct{

    PublicKeyAndChallenge PublicKeyAndChallenge

    SignitureAlgorithm pkix.AlgorithmIdentifier

    Signiture asn1.BitString

}


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信