Golang X509 сертификат, как маршалировать расширение целевой информации - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу добавить к сертификату X509 расширение id-ce-targettingInformation с несколькими строками, идентифицирующими целевые объекты сертификата. Эта строка представляет идентификаторы целей. Я нашел OID расширения {2, 5, 29, 55} Согласно spe c он имеет следующий формат:

    targetingInformation EXTENSION ::= {
SYNTAX SEQUENCE SIZE (1..MAX) OF Targets
IDENTIFIED BY id-ce-targetingInformation }
Targets ::= SEQUENCE SIZE (1..MAX) OF Target
Target ::= CHOICE {
targetName [0] GeneralName,
targetGroup [1] GeneralName,
targetCert [2] TargetCert,
}

Я добавляю расширение таким образом

targets := []string{"targetID1", "targetID2"}
asn1Bytes, err := asn1.Marshal(targets)
extraExtensions:=[]pkix.Extension{
            pkix.Extension{
                Id:       asn1.ObjectIdentifier{2, 5, 29, 55},
                Critical: true,
                Value:    asn1Bytes,
            },
        }

Но я чувствую, что поле Value должно быть маршалировано по-другому. Как правильно (согласно спец. c) генерировать значение поля расширения?

...