Как вы сериализуете / десеализуете DER / BER в навигационную структуру C / C ++? - PullRequest
1 голос
/ 28 мая 2020

Кто-нибудь знает о том, что в C / C ++ можно сериализовать неизвестный DER в структуру, по которой можно перемещаться.

Например:

Скажем, у меня есть DER

Hello ::= SEQUENCE {
   myInt INTEGER,
   myBool BOOLEAN,
   myStr UTF8String
}

в качестве кодировки. Мне нужна возможность преобразовать эту последовательность в структуру C, по которой я мог бы перемещаться. IE

unsigned char *myDer = { 0x30, ..., 0x02, 0x01,0x12, ... };
AsnObj obj(myDer);
AsnObj *children = obj.getChildren();
for(int i=0;i<children->size();++i) {
   AsnObj child = children.getChild(i);
   /* Do something with this child */
}

Я посмотрел на различные инструменты, такие как asn1-compiler, но мне показалось, что предполагалось, что вы знаете, что это за структура.

Я также смотрел на sna cc, но Я изо всех сил пытался скомпилировать что-нибудь с этим и снова казался немного тупым. Я думаю, что ffasn1 c будет работать, но для этого требуется лицензия, которую я не могу получить.

Я знал, что OpenSSL должен будет сделать что-то подобное, например d2i_X509, но это предполагает, что это X509, который он нет. Есть ли в OpenSSL метод, который позволил бы вам анализировать и перебирать DER?

Любая помощь очень ценится.

Calum

...