当前位置: 首页 > 知识库问答 >
问题:

无法从ContentType为“application/pkcs7-mime;name=smime.p7m”的签名邮件中检索附件

湛钊
2023-03-14

我试图从java代码中使用多部分和mime消息读取数字签名邮件,并获取附件(xml、pdf、txt等)和消息细节。我的代码适用于内容类型为:multipart/signed的邮件;Protocol=“申请/X-PKCS7-签名”;但是很少有邮件的内容类型为:application/pkcs7-mime;smime-type=signed-data;name=smime.p7m它没有获取附件和消息详细信息。谁能解释一下这两者之间的区别是什么,以及如何解决它。

共有1个答案

欧阳山
2023-03-14

我最近遇到了这个问题,虽然这个问题已经存在三个月了,但我还是留下了一个答案,以防万一。

这两种消息都是RFC2633(https://tools.ietf.org/html/RFC2633)中指定的S/MIME签名消息的实例

多部分/签名;protocol=“application/x-pkcs7-signature”表示经过明确签名的消息(RFC第3.4.3.3节),这意味着您可以读取原始消息内容,而无需在客户机代码中使用S/MIME功能。因此这些都没有问题。

应用/PKCS7-MIME;smime-type=signed-data;p7m表示S/MIME signedData电子邮件(第3.4.2节)您的客户机代码需要S/MIME功能才能读取原始消息(即使您不关心签名)。

最简单的方法(对我来说有效)是使用BouncyCastle的SMIMESigned类(来自S/MIME API,https://mvnrepository.com/artifact/org.bouncycastle/bcmail-jdk15on),如下所示:

byte[] content = <the signed data's content as byte[]>;
ByteArrayDataSource dataSource = new ByteArrayDataSource(content,"multipart/signed");
SMIMESigned signedData = new SMIMESigned(new MimeMultipart(dataSource));
MimeBodyPart bodyPart = signedData.getContent();
<you can process the body part as normal from here>
 类似资料:
  • 我试着从一封签名邮件中提取一个或多个PDF文件。我尝试将smime.p7m加载到 mimeMessage=mimeMessage.Load(mem);//mem是使用File.WriteAllBytes(File,FileAttachment.Content)创建的文件的MemoryStream;(EWS文件附件) 这不起作用,因为文件的开头是: 所以我试着用 convert.FromBase64

  • 问题内容: 目前,我有一个客户端-服务器应用程序,给定一个PDF文件,使用服务器证书对其进行签名,将签名与原始文件一起附加,然后将输出返回给客户端(所有这些操作均通过PDFBox实现)。 我有一个签名处理程序,这是我的外部签名支持(其中内容为PDF文件) 它工作正常,但我在想-如果PDF文件太大而无法上传怎么办?例如:100mb …这将永远!鉴于此,我想弄清楚,如果不对PDF文件签名,是否可以仅对

  • 我需要知道哪些电子邮件失败(即有一个MailException)并最终告诉用户与失败的电子邮件相关联的附件的名称。如何从异常中检索附件名称?到目前为止,我已经

  • 我需要计算一些数据签名,使用未封装的pkcs7与sha256和RSA。对于原始内容没有问题,使用: 但是我有另一个用户案例,我没有原始内容,只有它的哈希(sha256)Bouncycastle不支持pkcs7签名的“nonewithRSA”或“RSA”,所以我尝试使用自定义ContentSigner,而没有获得与原始内容版本相同的签名。

  • 目前,我有一个客户机-服务器应用程序,给定一个PDF文件,它对其进行签名(使用服务器证书),将签名附加到原始文件,并将输出返回给客户机(所有这些都是通过PDFBox实现的)。 我有一个签名处理程序,它是我的外部签名支持(其中的内容是PDF文件) 它工作得很好,但我在想--如果PDF文件太大无法上传怎么办?例如:100MB...这会花上很长时间的!鉴于此,我试图弄清楚,如果不签署PDF文件,是否可能

  • 我有PDF文档。 1)Adobe reader可以很好地读取文档。 2)我签署文件(使用pdfbox),一切正常 第二:当我尝试关闭文档(我的意思是关闭adobe reader)时,adobe reader会告诉我:关闭之前,是否要保存对“原始[with-attachment][signed]”的更改?我没发现你发生这种事。 下面是上传到google doc的测试文件