我正在努力让客户端证书auth正常工作,在阅读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解码为[]字节,然后我尝试将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)
}
我遇到了结构错误,所以我相信我的结构一定不是正确的,但我无法弄明白。
答案 0 :(得分:0)
我做了一些鸭子去找到了rfc320,它提供了asn.1类的定义并且让它起作用了!
结构现在是:
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
}