asn1 go(客户端证书认证)

我正在尝试让客户端证书身份验证正常工作,在阅读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 中的结构一定不正确,但我无法弄清楚。


潇潇雨雨
浏览 137回答 1
1回答

大话西游666

我做了一些鸭鸭,找到了提供 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go