Где моя интерпретация 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, Тогда ваш код должен разобрать правильно.

Другие вопросы по тегам