签署MimeBodyPart中有附件(与Bouncycastle)

时间:2015-11-19 11:32:36

标签: digital-signature bouncycastle mime javax.mail smime

我正在使用OpenAS2Server-1.3.3库。 发送单个文档工作正常..

现在我想修改它以发送包含附件的文档,就像我们使用电子邮件一样。在这种情况下,所有的描述都很好,但签名验证失败(MIC不匹配)

这就是我要用主文档发送附件的方式: 创建MimeMultipart并在其中添加两个MimeBodyPart。 (主要文件和附件) 最后将MimeMultipart包裹在MimeBodyPart内(我不确定这是做到这一点的方法,但无论如何Bouncycastle没有API来签署MimeMultipart

有人能告诉我使用附件签署邮件的正确方法吗?

        MimeBodyPart mainBody = new MimeBodyPart();
        mainBody.setDataHandler(new DataHandler(byteSource));

        MimeBodyPart attachemt1 = new MimeBodyPart();
        attachemt1.attachFile("/home/user/Desktop/Test1.txt");

        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(mainBody);
        multipart.addBodyPart(attachemt1);

        MimeBodyPart body = new MimeBodyPart();
        body.setContent(multipart);
        body.setHeader("Content-Type", multipart.getContentType());
        logger.info("--------------Attaching the file...  Done");

1 个答案:

答案 0 :(得分:0)

我能够得到问题和解决方案。我只是把它放在任何试图做这种工作的人身上。

我只是在发送方和接收方都转储用于计算MIC的数据。因此附加的图像将清楚地显示问题。

所以我在发送方为所有附件和主文档手动添加了那些标题字段,如下所示。

mainBody.setHeader("Content-Type", "application/EDI-X12");
mainBody.setHeader("Content-Transfer-Encoding", "7bit");

现在它已经解决了,并且" MIC匹配"。

LHS: sender, RHS: receiver