Не установлено значение тегового элемента в последовательности (pyasn1) - PullRequest
0 голосов
/ 06 марта 2020

Понимая библиотеку pyasn1, я столкнулся с проблемой присвоения значения элементу с тегом, встроенным в Sequence.

Структура ASN:

STest ::= [32] SEQUENCE {
seqof [10] SEQUENCE OF OCTET STRING 
}

pyasn1:

from pyasn1.type import univ, namedval, constraint, namedtype, tag, char

class STest(univ.Sequence):
    tagSet = univ.Sequence.tagSet.tagImplicitly(tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 32))
    componentType = namedtype.NamedTypes(namedtype.NamedType('seqof', univ.SequenceOf(componentType=univ.OctetString()).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10))))

stest = STest()
seq = univ.SequenceOf(componentType=univ.OctetString())
octet1 = univ.OctetString(hexValue='10101010')
seq.setComponents(octet1)
stest["seqof"] = seq
print(stest.prettyPrint())

при выполнении выдает ошибку:

> Traceback (большинство последний вызов последним): файл "test_pyasn1.py", строка 87, в stest ["seqof"] = файл seq "/usr/local/lib/python3.6/dist-packages/pyasn1/type/univ.py ", строка 2250, в setitem повысить KeyError (sys.exc_info () [1]) KeyError: PyAsn1Error ('Значение компонента несовместимо с тегом:

Если тег удалено из элемента SequenceOf:

class STest(univ.Sequence):
    tagSet = univ.Sequence.tagSet.tagImplicitly(tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 32))
    componentType = namedtype.NamedTypes(namedtype.NamedType('seqof', univ.SequenceOf(componentType=univ.OctetString())))

программа выполнена:

STest: seqof = SequenceOf: 0x10101010

python3 .8, pyasn1 0.4.8

Скажите, пожалуйста, как заполнить последовательность.

Спасибо!

...