PHP阅读S / Mime电子邮件p7m附件(Base64?)

时间:2012-02-23 12:23:46

标签: php mime pkcs#7 smime

我们有一个使用赛门铁克PGP Universal Web Messenger的系统。

这意味着通过pkcs12证书使用s / mime加密将电子邮件发送给我。

我在阅读PHP中的消息时遇到了一些麻烦。

我有所有的imap代码,但现在我如何读取加密的p7m附加文件。它只是Base64编码和签名?

编辑:我有公钥。

这是mime信息: -

Content-Type: application/pkcs7-mime; smime-type=enveloped-data;\r\n\tname="Message.p7m"\r\nContent-Transfer-Encoding: BASE64\r\nContent-Disposition: attachment; filename="Message.p7m"

1 个答案:

答案 0 :(得分:1)

P7M文件类型主要与PKCS #7 MIME Message相关联。见Section 3.2 in RFC 2311

3.2 The application/pkcs7-mime Type

    The application/pkcs7-mime type is used to carry PKCS #7 objects of
    several types including envelopedData and signedData. The details of
    constructing these entities is described in subsequent sections. This
    section describes the general characteristics of the
    application/pkcs7-mime type.

    This MIME type always carries a single PKCS #7 object. The PKCS #7
    object must always be BER encoding of the ASN.1 syntax describing the
    object. The contentInfo field of the carried PKCS #7 object always
    contains a MIME entity that is prepared as described in section 3.1.
    The contentInfo field must never be empty.

    Since PKCS #7 objects are binary data, in most cases base-64 transfer
    encoding is appropriate, in particular when used with SMTP transport.
    The transfer encoding used depends on the transport through which the
    object is to be sent, and is not a characteristic of the MIME type.

    Note that this discussion refers to the transfer encoding of the PKCS
    \#7 object or "outside" MIME entity. It is completely distinct from,
    and unrelated to, the transfer encoding of the MIME entity secured by
    the PKCS #7 object, the "inside" object, which is described in
    section 3.1.

    Because there are several types of application/pkcs7-mime objects, a
    sending agent SHOULD do as much as possible to help a receiving agent
    know about the contents of the object without forcing the receiving
    agent to decode the ASN.1 for the object. The MIME headers of all
    application/pkcs7-mime objects SHOULD include the optional "smime-
    type" parameter, as described in the following sections.

这基本上是以加密形式发送的安全电子邮件文件。如果一切设置正确,您应该有一个解密文件所需的公钥。如果没有,请下载它。

在您的情况下,传输编码是Base64。首先解码附件(如果到目前为止还没有这样做),然后处理二进制数据。