如何在golang中获取正确的扩展名值?

问题描述

我有一段代码可以使用OID提取扩展值。提取值后,使用Bouncy Castle在Java中完成以下操作:

private DEROctetString bytes;

public KeyInfo(byte[] bytes) {
    this.bytes = new DEROctetString(bytes);
}

public static KeyInfo valueOf(byte[] asn1) throws IOException {
    ASN1Object object = ASN1Primitive.fromByteArray(asn1);
    DEROctetString der = (DEROctetString)object.toASN1Primitive();
    return new KeyInfo(der.getoctets());
}

public byte[] getBytes() {
    return bytes.getoctets();
}

最后,我使用getBytes()方法使用该值进行进一步的操作。

有人可以解释一下上面的代码中发生了什么吗?

添加了一段代码,以从Golang的证书中提取特定OID的扩展名。 我不确定如何在Golang中实现以上部分。任何人都可以共享任何示例代码吗?

这是我到目前为止所拥有的:

extensions = cert.Extensions
    ID := asn1.ObjectIdentifier{2,6,7,8}
    for _,ext := range extensions {
        if reflect.DeepEqual(ext.Id,ID) {
            testextValue = ext.Value
        }

谢谢。

更新:

所以,我尝试了这个,

var n []byte
    asn1.Unmarshal(value,&n)
    fmt.Println("After marshal/unmarshal: ",n)

其中value是该特定extension.OID的extension.value。 但是print语句显示[]。

我需要做等价

 ASN1Object object = ASN1Primitive.fromByteArray(asn1);
    DEROctetString der = (DEROctetString)object.toASN1Primitive();
    return new KeyInfo(der.getoctets());

在golang中。

我正在尝试使用VerifyPKCS1v15验证密钥和签名。如果我直接通过ext.Value,它会给我验证错误。我想我需要先进行上述转换。

更新(30/8)

type BitString struct {
        Bytes     []byte // bits packed into bytes.
        BitLength int    // length in bits.
    }

    var bitstring BitString
    _,err = asn1.Unmarshal(value,&bitstring)
    fmt.Println("error",err)
    fmt.Println("After marshal/unmarshal: ",bitstring.Bytes)

这将错误显示为结构错误标记不匹配(16与{class:3 tag:84长度:67 isCompound:true}){可选:false显式的:false application:false私有的:false defaultValue:标记: stringType:0 timeType:0 set:false omitEmpty:false} BitString @ 3

任何人都可以共享示例代码会很有帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...