Я пытаюсь расшифровать поле под названием Subject Key Identifier (RF C 5820), которое содержалось в сертификате CMS (RF C 6488). На протяжении большей части предыдущей "работы" я успешно использовал модули pyasn1 и pyasn1_modules для декодирования структур ASN1. Однако я получаю сообщение об ошибке:
pyasn1.error.SubstrateUnderrunError: 31<18 at <TagSet object, tags 128:32:15>
Используя отладчик, я обнаружил, что проблема возникла при чтении:
AF 9F 00 96 C2 39 12 D7 8F 6A D6 D6 35 9B A4 88 FB 3A 32 A0
Глядя на первый октет (AF -> 10101111), я понимаю, что что это Constructed Definite length-method с идентификатором 15.
Поскольку первый октет выполнен, второй - это длина. 9F -> 10011111, так как MSB установлен, длина будет установлена 31 следующим октетом. Однако вся "полезная нагрузка" составляет 20 байтов (октетов). Какой в этом смысл?
(Я полагаю, что значения 31 и 18 - это то, о чем мне говорит ошибка, но я не буду держать объяснение, если какой-либо другой новичок сочтет его полезным!)