2017-04-18 2 views
0

J'utilise Java avec BouncyCastle pour décrypter et vérifier les messages p7m s/mime. Lorsque la clé privée que j'ai choisi pour décrypter le message ne correspond pas, j'obtiens des erreurs de Bouncy Castle comme "exception unwrap la clé" ou "bad padding".Comment obtenir le numéro de série du certificat, qui a été utilisé pour crypter un message?

Mais comment puis-je afficher le numéro de série du certificat qui a été utilisé pour chiffrer le message? Il serait utile pour le client de voir qu'il a choisi un ancien certificat par exemple.

Windows propose une application de console "certutil" afin d'analyser un flux p7m. Le numéro de série et le ist émetteur il mentionné:

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

+0

s'il vous plaît ajouter le code qui jette l'erreur – Egl

+0

Je pense que l'erreur n'est pas importante ici. Ma question était comment obtenir le numéro de série du certificat, qui a été utilisé pour crypter le message. – Dan

Répondre

0

Enfin, j'ai découvert par mon propre :-)

Il y a une classe à l'intérieur bouncycastle, ce qui vous permet d'analyser la structure de l'ASN le message crypté.

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

Le numéro de série du certificat figure également à l'intérieur. J'ai donc sauté sur le code source et copié les parties dont j'avais besoin pour le détecter et le stocker dans une variable globale.