Добрейшей ночи, друзья.
Ситуация следующая: делаю я себе ASN.1 структуру.
Делаю с помощью утилиты из openssl. Называется она asn1parse.
Формат ASN.1 структуры берется из конфига, который выглядит вот так:
asn1=SEQUENCE:header
[header]
f1=SET:keys
f2=SEQUENCE:aux
[keys]
field1=SEQUENCE:K1
field2=SEQUENCE:sign
[K1]
algID=FORMAT:HEX,OCT:80060700
alias=UTF8String:gostSign
f3=SEQUENCE:Q
f4=SEQUENCE:params
f5=SEQUENCE:curve_params
f6=SEQUENCE:P
r=INTEGER:0x4000
[sign]
rx=INTEGER:0x64DB
s=INTEGER:0x11F6
[Q]
x=INTEGER:0x8000
y=INTEGER:0x01
[params]
f1=SEQUENCE:field_params
[field_params]
p=INTEGER:0x2BAA
[curve_params]
a=INTEGER:0x6026
b=INTEGER:0x75C7
x=INTEGER:0x14AA
y=INTEGER:0x0234
[aux]
f1=NULL
И проблема в следующем: если посмотрите в секцию [keys], то увидите там 2 последовательности - K1 и sign, содержимое которых описывается ниже. Так вот, при генерации ASN.1 структуры эти 2 штуки почему-то переставляются местами, то есть сначала идет sign, а потом K1, что противоречит конфигу.
И, собственно, вопрос - почему так происходит? Почему они переставляются?
P.S. Если что, то сгенерить ASN.1 из конфига можно так: openssl asn1parse -genconf <конфиг> -out <выходной файл>
Посмотреть, что получилось можно так: openssl asn1parse -inform DER -i -in <ASN.1 файл>