Неверный код ошибки идентификатора объекта ASN.1 - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь создать файл DER, используя кодировку / asn1, и получаю недопустимую ошибку времени выполнения Идентификатора объекта.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: структурная ошибка: неверный идентификатор объекта"

Пример игровой площадки здесь

1 Ответ

0 голосов
/ 26 мая 2018

Идентификаторы объектов не являются прямыми.

Есть только 3 дуги верхнего уровня (целые числа, которые формируют идентификатор объекта).Другими словами, первая дуга (42 в вашем примере) может быть только 0, 1 или 2

Если ваша первая дуга равна 0 или 1, то вторая дуга должна быть меньше 40

Примечание. Это ограничение используется правилами кодирования значения идентификатора объекта для упаковки 2 первых дуг

...