我使用Java和BouncyCastle来解密和验证p7m s / mime消息。当我选择解密消息的私钥不匹配时,我从Bouncy Castle收到错误,如“异常解包密钥”或“填充错误”。
但是如何输出用于加密邮件的证书的序列号?例如,客户可以看到他选择了旧证书。
Windows提供了一个控制台应用程序“certutil”,以便分析p7m流。那里提到了序列号和发行人:
CMSG_KEY_TRANS_RECIPIENT(1)
CERT_ID_ISSUER_SERIAL_NUMBER(1)
Seriennummer: b33...
答案 0 :(得分:0)
最后,我发现了自己: - )
bouncycastle中有一个类,它可以解析加密消息的ASN结构。
ASN1InputStream bIn = new ASN1InputStream(message.getEncoded());
ASN1Primitive obj = bIn.readObject();
system.out.println(ASN1Dump.dumpAsString(obj));
证书的序列号也在里面。所以我跳转到源代码并复制了我需要的部分,以便检测它并将其存储在全局变量中。