1

请在我收到的邮件标题下方找到。我正在研究 AS2 协议。我可以发送消息,但在收到消息时遇到了一些问题。

Date: Fri, 28 Jun 2013 13:22:03 GMT
From: XXXXXXX
Message-ID: XXXXXXXXXX
MIME-Version: 1.0
Content-Type: application/pkcs7-mime; smime-type=enveloped-data;  name=smime.p7m
Content-Transfer-Encoding: binary
Content-Disposition: attachment; filename=smime.p7m
Disposition-Notification-To: XXXXXXXX
Disposition-Notification-Options: signed-receipt-protocol=optional, pkcs7-signature;            signed-receipt-micalg=optional, sha1
Receipt-Delivery-Option: XXXXXXXXXXXXXXXx
EDIINT-Features: CEM, multiple-attachments, AS2-Reliability
AS2-Version: 1.2
AS2-To: YYYY
AS2-From: XXXX
Content-Length: 59074

您能告诉我如何使用 OpenSSL 或 PHP 获取内容吗?在我执行的大多数命令中,它给了我这个错误:

Error reading S/MIME message
140224062383968:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:150:
140224062383968:error:0D0D106E:asn1 encoding routines:B64_READ_ASN1:decode error:asn_mime.c:193:
140224062383968:error:0D0D40CB:asn1 encoding routines:SMIME_read_ASN1:asn1 parse error:asn_mime.c:528:
4

1 回答 1

0

您似乎已将标头而不是内容输入 ASN.1 BER 解码器。BER 将 ASN.1 定义的数据结构编码为二进制编码。将字符串输入 BER 解码器总是会产生上述错误。

相反,您可能应该首先解码内容的 base 64 编码,然后将生成的二进制数据馈送到接受 CMS 数据的解码器(CMS 已使用 ASN.1 指定并使用 BER/DER 编码)。

于 2013-07-04T23:41:05.220 回答