1

M2Crypto python ライブラリによって生成された PKCS7 ファイルがあります。これは次のようになります。

-----BEGIN PKCS7-----
MIIBWAYJKoZIhvcNAQcDo[cut]
-----END PKCS7-----

公開鍵によって暗号化されたバイナリ コンテンツです。

今度は C++ で解読する必要がありますが、この形式を認識しないようです。d2i_PKCS7_bio()と を試しSMIME_read_PKCS7()ましたが、常に次のようなエラーが発生します。

8957:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1316:
8957:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=PKCS7

次のようなコマンドラインで試行する同様のエラー:

openssl smime -decrypt -inform DER -binary -inkey privkey.pem

編集
私は正しいコマンドラインオプションを見つけました:

openssl cms -decrypt -in samplepkcs7.pem  -inkey privkey.pem -inform pem

ここで、C++ で対応する関数を見つける必要があります。

たぶん私が間違っているかもしれませんが、これに関するドキュメントを見つけるのは本当に難しいです。どんな助けでも大歓迎です。

4

1 に答える 1

0

あなたが持っているのはPEM形式のオブジェクトです。DER 形式のオブジェクトは、テキスト エディターではゴミのように見えます (バイナリ形式であるため)。したがって、あなたがしたいPEM_read_PKCS7()

OpenSSL のドキュメントは本質的にごちゃごちゃしており、なんらかのガイドなしで学習するのは非常に困難です。O'Reilly Network Security with OpenSSLテキストをお勧めします。OpenSSL 0.9.6/0.9.7 用に書かれていますが、ライブラリの優れた入門書 (API はあまり変更されていません) であり、便利なリファレンスとして役立ちます。

于 2012-08-21T19:39:00.120 に答える