转到无效的ASN.1对象标识符编码错误

时间:2018-05-26 02:47:40

标签: go asn.1 der

我正在尝试使用encoding / asn1创建一个DER文件,并且我不断收到无效的Object Identifier运行时错误。 asn1.ObjectIdentifier只是一个[] int,所以我不确定哪些内容无效。

package main

import (
    "encoding/asn1"
    "fmt"
    "log"
)

type algorithm struct {
    Algo asn1.ObjectIdentifier
    Null asn1.RawValue
}

func main() {
    var myCert algorithm
    myCert.Algo = asn1.ObjectIdentifier{42, 134, 72, 134}
    myCert.Null = asn1.NullRawValue

    mdata, err := asn1.Marshal(myCert)
    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println(mdata)
}

程序退出时出现以下错误: " asn1:结构错误:无效的对象标识符"

游乐场示例here

1 个答案:

答案 0 :(得分:3)

对象标识符不是直接的。

只有3个顶级弧(形成对象标识符的整数)。 换句话说,第一个弧(在您的示例中为42)只能是0,1或2

如果您的第一个弧是0或1,那么第二个弧必须小于40

注意:此限制由对象标识符值的编码规则用于打包2个第一个弧