无效的 ASN.1 对象标识符编码错误
Go invalid ASN.1 Object Identifier encoding error
我正在尝试使用 encoding/asn1 创建 DER 文件,但我不断收到无效的对象标识符运行时错误。 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: structure error: invalid object identifier"
游乐场示例here
对象标识符不是直截了当的。
只有 3 个顶级弧(构成对象标识符的整数)。
换句话说,第一条弧线(在您的示例中为 42)只能是 0、1 或 2
如果你的第一个弧是0或1,那么第二个弧必须小于40
注:对象标识符值的编码规则使用此限制来打包前2个弧
我正在尝试使用 encoding/asn1 创建 DER 文件,但我不断收到无效的对象标识符运行时错误。 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: structure error: invalid object identifier"
游乐场示例here
对象标识符不是直截了当的。
只有 3 个顶级弧(构成对象标识符的整数)。 换句话说,第一条弧线(在您的示例中为 42)只能是 0、1 或 2
如果你的第一个弧是0或1,那么第二个弧必须小于40
注:对象标识符值的编码规则使用此限制来打包前2个弧