asn1 go(客户端证书授权)
asn1 go (client side cert 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)
}
我收到一个结构错误,所以我相信我在 go 中的结构一定不正确,但我无法弄清楚。
我做了一些 duck duck going 并找到了提供 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
}
我正在尝试让客户端证书授权工作,在阅读之后 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)
}
我收到一个结构错误,所以我相信我在 go 中的结构一定不正确,但我无法弄清楚。
我做了一些 duck duck going 并找到了提供 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
}