2017-04-18 2 views
0

JavaをBouncyCastleとともに使用して、p7m s/mimeメッセージを復号化して検証します。メッセージを復号化するために私が選択した秘密鍵が一致しないとき、私はBouncy Castleから「exception unwrapping key」または「bad padding」のようなエラーを受け取ります。メッセージを暗号化するために使用された証明書のシリアル番号を取得する方法は?

しかし、メッセージの暗号化に使用された証明書のシリアル番号をどのように出力できますか?たとえば、顧客が古い証明書を選択したことを確認すると便利です。

Windowsは、p7mストリームを分析するためにコンソールアプリケーション "certutil"を提供しています。シリアル番号と発行者イストが挙げる:

CMSG_KEY_TRANS_RECIPIENT(1) CERT_ID_ISSUER_SERIAL_NUMBER(1) Seriennummer: b33...

+0

エラーをスローするコードを追加してください – Egl

+0

ここではエラーは重要ではないと思います。私の質問は、メッセージの暗号化に使用された証明書のシリアル番号を取得する方法でした。 – Dan

答えて

0

を最後に、私はあなたのASN構造を解析することができますはBouncyCastle内部クラスは、あり私自身:-)

で判明しました暗号化されたメッセージ

ASN1InputStream bIn = new ASN1InputStream(message.getEncoded()); 
ASN1Primitive obj = bIn.readObject(); 
system.out.println(ASN1Dump.dumpAsString(obj)); 

また、証明書のシリアル番号は内部にあります。そこで私はソースコードにジャンプし、必要な部分をコピーして、それを検出してグローバル変数の中に格納しました。

関連する問題