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

如何解决如何在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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?