0

ASN1_ENUMERATED の操作方法に関する openssl のページにドキュメントが見つかりませんでした。

BERViewer を使用して構造を視覚化します。
ここに画像の説明を入力

だから私は使用しました:

ASN1_SEQUENCE_ANY *asn1SequenceAny = sk_ASN1_TYPE_new_null();
asn1SequenceAny = d2i_ASN1_SEQUENCE_ANY(&asn1SequenceAny, (const unsigned char**)&data,len);

ASN1_TYPE *asn1Type = NULL;
asn1Type = sk_ASN1_TYPE_pop(asn1SequenceAny);
if(asn1Type->type == V_ASN1_ENUMERATED)
{
    asn1Type->value.enumerated->data; // How to get sequence inside [0] ?
}

ディスク「asn1Type->value.enumerated->data」上の列挙データは次のようになります。
ここに画像の説明を入力

[0] から ASN1_SEQUENCE_ANY を取得する方法:

SEQUENCE
     |__SEQUENCE
     |__SEQUENCE

私は試しました:ASN1_ENUMERATED_get、-1を返します。なぜゼロにしないのですか?

記事は大歓迎です。

4

1 に答える 1

0

OpenSSLは、これらのメッセージをデコードするための多くの関数を提供します。デコードルーチンは出力を解析して、デコードされたメッセージが、呼び出したデコードメソッドによって示される予期されたタイプと一致することを確認するため、それをエンコードした対応する関数が何であったかを知る必要があります。あなたが望むようです:

d2i_ASN1_OBJECT (3ssl) - ASN1 OBJECT IDENTIFIER functions

ただし、それが正しくない場合は、OpenSSLのドキュメントでを検索するd2iと、試すことができる多くの関数が見つかります。

OpenSSLソースコードをダウンロードする場合は、解凍した後、appsサブディレクトリ内を調べてファイルを読みasn1pars.cます。または、このリンクをたどってオンラインで表示することもできます。お役に立てれば!

于 2012-06-12T15:37:41.190 に答える