Go 如何使用OID读取扩展值,如密钥信息和密钥签名

Go 如何使用OID读取扩展值,如密钥信息和密钥签名,go,Go,从这里,我需要检索以字节为单位的扩展值。我有一个可以用的OID。我能够找到向证书添加扩展的代码。但是没有找回它。任何人都可以分享一个关于如何做到这一点的示例代码吗 更新: 现在,我可以得到扩展了 var cert *x509.Certificate cert, err := x509.ParseCertificate(myCertificate) } 但是deep equal return为false(存在特定的oid),我需要检索该特定扩展的值。有人可以建议一些步骤吗?reflect.Dee

从这里,我需要检索以字节为单位的扩展值。我有一个可以用的OID。我能够找到向证书添加扩展的代码。但是没有找回它。任何人都可以分享一个关于如何做到这一点的示例代码吗

更新:

现在,我可以得到扩展了

var cert *x509.Certificate
cert, err := x509.ParseCertificate(myCertificate)
}


但是deep equal return为false(存在特定的oid),我需要检索该特定扩展的值。有人可以建议一些步骤吗?

reflect.DeepEqual不起作用,因为类型不同。检查OID的常规方法是使用以下方法:

var extensions []pkix.Extension
var cert *x509.Certificate
byteValue, _ := base64.StdEncoding.DecodeString(myCert)
cert, err := x509.ParseCertificate(byteValue)
if err != nil {
    fmt.Println("Error in parsing certificate")
}
extensions = cert.Extensions
checkId := []int{2, 5, 6, 135, 3, 2, 41}
for _, ext := range extensions {
    if reflect.DeepEqual(ext.Id, checkId) {
        fmt.Println("true")
    }
}

如果没有,请不要忘记检查
ExtraExtensions

reflect.DeepEqual不起作用,因为类型不同。检查OID的常规方法是使用以下方法:

var extensions []pkix.Extension
var cert *x509.Certificate
byteValue, _ := base64.StdEncoding.DecodeString(myCert)
cert, err := x509.ParseCertificate(byteValue)
if err != nil {
    fmt.Println("Error in parsing certificate")
}
extensions = cert.Extensions
checkId := []int{2, 5, 6, 135, 3, 2, 41}
for _, ext := range extensions {
    if reflect.DeepEqual(ext.Id, checkId) {
        fmt.Println("true")
    }
}
如果没有,请不要忘记检查
ExtraExtensions