Где моя интерпретация ASN1 der неправильно?
Вот как выглядит моя структура:
SET OF
SEQUENCE:
INTEGER: XX
INTEGER: YY
Моя кодировка выглядит так:
11 08 10 06 02 01 XX 02 01 YY
11 08 -- SET OF
10 06 -- SEQUENCE
Однако, когда я декодирую с помощью openssl, я не вижу ожидаемого результата. Это выглядит как
0:d=0 hl=2 l= 8 prim: SET
0000 - 10 06 02 01 XX 02 01 YY-
Это не то, что я ожидал увидеть. (Посмотрите на структуру, я хотел, чтобы это выглядело)
Я не уверен, что мне не хватает. Любая помощь приветствуется.
1 ответ
SET и SEQUENCE являются построенными типами. Это означает, что бит, который указывает составной тип в теге, должен быть установлен. Это будет бит 5 или 6 (в зависимости от того, начнете ли вы с бита 0 или 1). Если бит не установлен, то парсер будет рассматривать его как примитивный тип, что означает, что он имеет одно значение вместо дочерних. Вот почему вы получаете prim
в вашем выводе. Число тегов по-прежнему равно 17 или 16, что обозначает SET OF или SEQUENCE, поэтому структура все еще рассматривается как SET.
Так что вместо 11
а также 10
вы должны использовать значения 31
а также 30
, Тогда ваш код должен разобрать правильно.