2013-07-02 94 views
0

請在下面找到我收到的消息的標題。我正在研究AS2協議。我可以發送消息,但我收到消息時遇到了一些問題。如何使用OpenSSL或PHP獲取S/Mime消息的內容?

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: 

回答

0

你似乎已經餵了頭而不是內容到ASN.1 BER解碼器。 BER將ASN.1定義的數據結構編碼爲二進制編碼。將字符串送入BER解碼器將始終產生類似上面的錯誤。相反,您應該首先解碼內容的基本64位編碼,並將生成的二進制數據送入接受CMS數據的解碼器(CMS已使用ASN.1指定並使用BER/DER編碼)。