ایمیل – نحوه ارسال یک پیام HTTP امضا شده

با استفاده از M2crypto، من سعی کردم این پیام را ارسال کنم:

 From: [email protected]
به: [email protected]
MIME-نسخه: 1.0
محتوا-موقعیت: پیوست؛ filename = "smime.p7m"
نوع محتوا: application / x-pkcs7-mime؛ smime-type = sign-data؛ name = "smime.p7m"
Content-Transfer-Encoding: base64

MIIOTQYJKoZIhvcNAQcCoIIOPjCCDjoCAQExCzAJBgUrDgMCGgUAMIGlBgkqhkiG
9w0BBwGggZcEgZRDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KQ29udGVudC1U
eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9InV0Zi04Ig0KTUlNRS1WZXJzaW9uOiAx
LjANCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NA0KDQpQR2srY1dS
بوردیویتی
BgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2ln
بی متولی
IFNIQTI1NiAtIEczMB4XDTE4MDUwOTAxNTgyOVoXDTIxMDUwOTAxNTgyOVowTDEL
MAkGA1UEBhMCRlIxFjAUBgNVBAMMDUxhw6tsIENlbGxpZXIxJTAjBgkqhkiG9w0B
CQEWFmxhZWwuY2VsbGllckBnbWFpbC5jb20wggQiMA0GCSqGSIb3DQEBAQUAA4IE
DwAwggQKAoIEAQD + RsarwSlI0L9HJ9 + va98TTzsbLzPV48QhwaeW6cYgGwZBhpPN
1ewo + fqyCPPGZXmfxF9ralXvQ5dbaTvw6zuewf7PvpVssGZ / 1ojzJHK6trf6iI2r
V018D4xxDvGCRBl8XTbrZRcxq3Xx03yZHWGRSEk4aMMCo8iuAtwN70Pp / 4189PzQ
7W0ShzdZi9g6ELkoS11R4Kg9STDEXfbEBm8kSs7 / iUos0fk1WzUl / wSrVQEZO0A3
OJxbJBRdYfwoUvAUa2MByUwiuBQz4zGl + Q / t6AEoPVbXtEXkIPjuPhEW / uACcou
2k5HHXR9Wvjc5AnZcA7v2ha0TzRxNJu1 + wPfDJYzn4bovGGQcKxdjDP / oL8Dyrer
1TtX5djTx8ibVxqXdFh + uxnVA / 9QCIhGWNV + TDW6GwncfhA3yIQnfzM + QkHNr9Bo
L1FWcig2FP2oDgJ6N1H3y0RdXIWlfK5Sxr6UsBwYhc6oMKbPS15m4cnVNE60gk / X
/ f8Wp7HRBG7jii3FL2lvLSnkKQ4HSMREvpZXeBNGM9 / oTklNOt09J6f0mtGcslcT
elT1a3vAEobmerf8VPkjfLDaYXGxxHN8iwcZYu + t / 9YWQPXCZn / + zSefKNcuoMlN
امیدوارم
QA06nXfLRDu6i2GmYd0R0Lpm7VbGepnZVa / UJlU2KDFNa6G4pZ + EezzM + xg7G56l
kz0Xg59 + / NFJUgeuGFBgLgIrwfqFJLmp2GT4HpnwjKN3rnclaGajYRsYHSdidJU9
zd2jPVxo / RxfXIx3qlgRUWDih8rIlA4ASNsEq / 6ybL6gCAQo5KdR7YKE61Sv9O98
wU + gHQ7hWrcT6xsK5I6QpoL6sBcfwLqBSZzxCSONGhZuV09qGxMe7C18I4OODQxY
پراکسی
BAN + kLec6DslwKAD8u3867na / Cpir6kS1o + 9S2kYDt3BYI88KVJBfGkGRjwzdpO /
7Tq1bSdQzbHh6MKz1hifv8kaA5AM + GayrKzLtuNGBfW8jtobcZmzyX5I7gH4cB9H
اکتیویتو
SQAC0eLlhSfaLCFTK7ZoD5kPkmIQ3PSWqslNuEnlbOjrRmQQigRUHL9htWVoNXqZ
Mp1A7Bwue / WZUwCYpl7auzB4Xlk7GdMU6ZEnA0GYEN9AOaAWbIq8wSeHDJFH0szo
اکسپرس
Af8EBAMCBaAwgZ4GCCsGAQUFBwEBBIGRMIGOME0GCCsGAQUFBzAChkFodHRwOi8v
c2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc3BlcnNvbmFsc2lnbjJzaGEy
زنگ
Y29tL2dzcGVyc29uYWxzaWduMnNoYTJnMzBMBgNVHSAERTBDMEEGCSsGAQQBoDIB
KDA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBv
c2l0b3J5LzAJBgNVHRMEAjAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwu
Z2xvYmFsc2lnbi5jb20vZ3NwZXJzb25hbHNpZ24yc2hhMmczLmNybDAhBgNVHREE
GjAYgRZsYWVsLmNlbGxpZXJAZ21haWwuY29tMB0GA1UdJQQWMBQGCCsGAQUFBwMC
BggrBgEFBQcDBDAdBgNVHQ4EFgQUJaSSLxHeqSkfX8J + LVEimHHOmNcwHwYDVR0j
BBgwFoAUaXKCYjFnlUSFd5GAxAQ2SZ17C2EwDQYJKoZIhvcNAQELBQADggEBAEVG
HTt1YiYCREbqhCWiMbpFC + WWy6JAxgFu4rw90ctfcZDIoxRacxpDIMKVMxf8ZF7h
gaeKow2sKp / hUJhvS1YQQArPj49p08rBj4aMtHIExlClWzJbv + ljVdAAHHxQl9gt
هزاره
SaIacMqzmnpnls1A7yNfCNtRW2r / VxAwwhRJqAyoeNLp9 + aiMCz8wz3FrJ + YHXIk
tLGxkmT / 1JPuA / z9z562FCaoUvXpRufvFle5YlKA9foklffUhy4sMkpHs1TL / diZ
تواما
ویتی
bmFsU2lnbiAyIENBIC0gU0hBMjU2IC0gRzMCDGHjBT8rJXseeJyouzAJBgUrDgMC
GgUAoIHYMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8X
دبیرکل
fTD + MHkGCSqGSIb3DQEJDzFsMGowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBFjAL
BglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3
DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIE
AFHlvP6q5KjfIwr4rh3iMxWFHN7cp / m0pgDiq9E8weMZMqBaUOuWhuR7XwuarHCU
E7JyfpKwfxJ68Aq1O0UXEucRSvm3F2Am4gBeHuBVD515yoWOtRGyBTTmjXGRFIfo
Gcmo7Tx9Nb4Gmy0FSKptHYnWUOEKRRVW029Jh7087IOlPnZWDsVkXw1XJ49Yw4Tu
yK1G3AmD67VbtAezkiyCY0xziawsbOrR8wY6lsdELtFHz8D9ffcfcsVPh12 + s9 + 5
GSKmblhZ3YqGXFPGa9jYgPkjWzVlPVqPPE4aSqeoe7yEalAevDtSqaAIolqa + RI3
KVsHwJPklpoBIuXpV141Q2eLkQvcMTu8dCDVoJ18YOBiHI0GJypyby9e4FQdQmZN
9sxnT8ifsoQEMr9Kx6yEbGO1y ++ HMYYt9AXhsQgMpkFRPX0p9i4V + X6T11A0pEV
kk4ro + MWiAZnwVb + pftMBN1ogrunSgGJmqnCvOP02yWYMwnYtst3Zmergu4ma2V +
28dTIV / jCOYvzKD4plO5xkaXztWd + OqSccDmVagmDzrvNsYfwP / DRP666neAQY / j
xrDgMRunC8OEoqLzsAKfvRRxit0Ws2Xe7UxbI7H0GDDrInmyHO0Te0xKMIsKcH7e
bUsERHTJ053KkI4K3O8tNpnXUxkXzqd3a5KRJKtpK52GRVwH2khR / vmiZyTf / kib
5vIuXqkVyx / DiabAWUBnNVEcjOLJ1De2ruhhq07kFbBb6foguxS + esUivxh1MSzl
7q / DXA / USEc0jeHNJcbx51l6qAmsIKdnqOJWHvdFRfqVPnA28mFo0cu6 / epvWvcz
69bhN + hnKvhpG / FVMffPYD // 269xUfuP3EJ + UtgoeJe2Aal9a3OUCgm1XF6P74WI
CTDRXfm4SHDfG3ARJkpkpx5T9nU1U6FpNBJ5LjqAhlRtJalQWTJOiEOPEhvlD8w8
+ v2 +
gjKYCpizFkrGNw / Sr4jybnruHc7PIoqXIF6M + jDFYsq1A9CgQ068HP0Y5m4H841A
FHSq8PoEQeNclqNSGq9hbaPICN1v / wQOlUa0btAumOrpMbuR / kyE2afFp8PVYCfN
2Px7 + bt0LW4mCC6BHXorl / Ehmlp09 / Hvyqkz0aZ1ByzIMvjzXygwnF103ExEQy1b
KYcO64hbGzKGj8igbMs4o7EABzZcxfOnQ7hAWfanpmVuOQslHncBrXS6H3RLm4FN
fMbpWP8i9I462vvVUpziZBZRUQBGTONvZbUt2 + AAakbIcSBbR2xF17u5bPvx1tpQ
c2lqsbmYWLo0v31QwQFqCv8 =

که یک بار تأیید شده در Thunderbird / Outlook نمایش داده می شود:

 Content-Type: text / html؛ charset = "utf-8"
MIME-نسخه: 1.0
Content-Transfer-Encoding: base64

PGk + cWRmemZ6PC9pPg ==

به جای: qdfzfz

کد پایتون:

 از M2Crypto import BIO، Rand، SMIME


def makebuf (متن):
    بازگشت BIO.MemoryBuffer (متن)

# یک MemoryBuffer از پیام بسازید
buf = makebuf (bytes (MIMEText (' qdfzfz '، 'html'، 'utf-8'). as_string ()، 'utf-8'))

# دانه PRNG.
Rand.load_file ('randpool.dat'، -1)

# ایجاد یک شی SMIME؛ تنظیمش کن؛ بافر را امضا کنید
s = SMIME.SMIME ()
s.load_key ('signer_key.pem'، 'signer.pem')
p7 = s.sign (buf)

بدیهی است که email.mime.text.Mimetext () شیء درستی قرار نگرفت. اما علت چیست؟

کدام دستور باید از داده های امضا شده به عنوان متن استفاده شود؟ بدیهی است که decoding base64 کافی نیست.