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

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

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

Go
红糖糍粑 2022-06-27 15:15:02
var cert *x509.Certificatecert, err := x509.ParseCertificate(myCertificate)从这里我需要以字节为单位检索扩展值。我有用于此的 OID。我能够找到用于向证书添加扩展的代码。但不检索它。任何人都可以分享如何做到这一点的示例代码吗?更新:现在,我可以得到扩展var extensions []pkix.Extensionvar cert *x509.CertificatebyteValue, _ := base64.StdEncoding.DecodeString(myCert)cert, err := x509.ParseCertificate(byteValue)if err != nil {    fmt.Println("Error in parsing certificate")}extensions = cert.ExtensionscheckId := []int{2, 5, 6, 135, 3, 2, 41}for _, ext := range extensions {    if reflect.DeepEqual(ext.Id, checkId) {        fmt.Println("true")    }}}但是深度相等返回 false(存在特定的 oid),我需要检索该特定扩展的值。谁能建议一些步骤来做到这一点?
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

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


checkID := asn1.ObjectIdentifier{2, 5, 6, 135, 3, 2, 41}

for _, ext := range extensions {

    if ext.Id.Equal(checkId) {

        fmt.Println("true")

    }

}

如果它不存在,请不要忘记检查ExtraExtensions。


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

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