M2Crypto: Попытка расшифровать строку SMIME. Получение без типа контента Ошибка - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь расшифровать зашифрованное сообщение SMIME (зашифрованное в JavaScript с использованием библиотеки PKI.js), которое выглядит следующим образом:

Content-Type: application/pkcs7-mime; name=smime.p7m;
 smime-type=enveloped-data
Content-Description: Enveloped Data
Content-Disposition: attachment; filename=smime.p7m
Content-Transfer-Encoding: base64
From: sender@example.com
To: recipient@example.com
Subject: Example S/MIME encrypted message
Date: Sun, 13 May 2018 23:53:48 +0000
Message-Id: <1526255628125-055f663b-fd554ae9-1ed33cf1@example.com>
MIME-Version: 1.0

MIIBzAYJKoZIhvcNAQcDoIIBvTCCAbkCAQIxggFuMIIBagIBADAjMB4xHDAJBgNVBAYTAlJVMA8G
A1UEAx4IAFQAZQBzAHQCAQEwPAYJKoZIhvcNAQEHMC+gDzANBglghkgBZQMEAgMFAKEcMBoGCSqG
SIb3DQEBCDANBglghkgBZQMEAgMFAASCAQA6EIOlgaYQ1/wYJe4DfZ5EDMLvCFbkj1h3CPtCsw7A
dKDdQAO1Sn25T0yyAO5iaXkETUGX2DGEqzOFspROrXObiuk4vLu0/D78780FhU59ybLY41m4ydT3
Dxpz3+2e3aRgfP2qnwG0WepIe14OWQWTZwtvRRrsh3AhjE9NAQik1MicPA8mTlQYKge6FEFbRvzu
+PNXht9bn/a+asSrPJleesST+srGm6/lllmTMOtqcGp5aelkQwCQ/aHJJ9HTSYtg8TAb4N78o00C
YJrhMrsKygJSC65VGV2BDbsbyBIhuiIdrCWx3JNoaKd2N6uix8V0UCHZHkzXnEduL5RH9SWdMIAG
CSqGSIb3DQEHATAdBglghkgBZQMEAQIEEGtZdxyVU9+8aONDzGlUjFuggAQQECObjBYnr23zUJ+6
60kRvAAAAAA=

И я делаю это следующим образом:

from M2Crypto import BIO, SMIME, X509

def decrypt(s):
    mime = SMIME.SMIME()

    with open("tmp.p7", 'wb') as f:
        f.write(s.encode('utf-8'))
        p7, data = SMIME.smime_load_pkcs7("tmp.p7")
    return mime.decrypt(p7)

Я получаю следующее сообщение:

File "/Users/Adam/Library/Python/3.5/lib/python/site-packages/M2Crypto/SMIME.py", line 113, in smime_load_pkcs7
    p7_ptr, bio_ptr = m2.smime_read_pkcs7(bio)
M2Crypto.SMIME.SMIME_Error: no content type

Если я сделаю

with open("tmp.p7", 'w') as f:
            f.write(s)

Вместо этого результат тот же ... что сообщение об ошибке типа содержимого отсутствует.

Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

0 голосов
/ 14 мая 2018

Вы видите полное почтовое сообщение, а не только содержимое CMS или PKCS # 7 .

Удалите заголовки почты, пока у вас не останется только кодировка base 64 (начиная с новой строки), и повторите попытку.


Вы можете посмотреть свои данные здесь (онлайн-декодер JavaScript ASN.1)

Это очень новые алгоритмы (RSA-OAEP с MGF1 / SHA-512 и AES), но в итоге они шифруют только 16-байтовый зашифрованный текст, который на самом деле не идентифицирован никоим образом. Так что в этом смысле тип контента отсутствует отсутствует, может быть, вы можете как-то привести его в качестве аргумента.

Не публикуется как комментарий, так как он не подходит, ваши данные в URL.

...