Bug 11767

Summary: добавление символов CR к блоку с подписанными данными при создании MIME-подписи
Product: Sisyphus Reporter: Dmitriy Shadrinov <shadrinov>
Component: opensslAssignee: Gleb F-Malinovskiy <glebfm>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P1 CC: bug123t, glebfm
Version: unstable   
Hardware: all   
OS: Linux   

Description Dmitriy Shadrinov 2007-05-15 11:53:20 MSD
Использую openssl-0.9.8d-alt2 для шифрования некоторых данных, их подписи для
отправки по почте через скрипт. Вот последовательность действий:

# openssl enc -a -in source_file -out base64_file
# openssl smime -encrypt -in base64_file -out encrypted_file -des3 pub_key_dest.pem
# openssl smime -sign -in encrypted_file -out signed_enc_file -signer
pub_key_my.pem -inkey private_key_my.key

В результате получается файл в формате MIME, у которого тело имеет переводы
строк CRLF, в то время как остальная часть LF. При этом генерирует подпись на
данные в формате LF.  OpenSSL 0.9.7a утверждала, что подпись неверна, пока я
вручную не убрал CR. Все исходные файлы не содержат CR.

Удалось выяснить, что добавление CR происходит на последнем шаге - при
добавлении подписи. Так же известно, что на старом OpenSSL-0.9.7a такого не
происходит.

Временно решил проблему использованием ключа -binary.

MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature";
micalg=sha1; boundary="----B0829AF6F1A2BD2399ED6ED5B4C66ED4"

This is an S/MIME signed message

------B0829AF6F1A2BD2399ED6ED5B4C66ED4
MIME-Version: 1.0^M
Content-Disposition: attachment; filename="smime.p7m"^M
Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data;
name="smime.p7m"^M
Content-Transfer-Encoding: base64^M
^M
MIIKPwYJKoZIhvcNAQcDoIIKMDCCCiwCAQAxggE0MIIBMAIBADCBmDCBkjELMAkG^M
A1UEBhMCUlUxETAPBgNVBAgTCE5vcmRXZXN0MRIwEAYDVQQHEwlZYXJvc2xhdmwx^M
<skipped>
AvDh/PloY/R3QBCN7DhAIJC3CnRE9GbxCTckB4bkzX0ncQGP8SZxP/rwQ8cuhtma^M
th87gg3gjXfy4MFkJyWC3NtImPj27rY7jkKoS8gSdIRd6NI=^M
^M

------B0829AF6F1A2BD2399ED6ED5B4C66ED4
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"

MIIEzgYJKoZIhvcNAQcCoIIEvzCCBLsCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
DQEHAaCCAqMwggKfMIICCAIBATANBgkqhkiG9w0BAQQFADCBkjELMAkGA1UEBhMC
<skipped>
eWjK2tEySfz1jj3pTKlRNUOswWWaz2e5dlhmnxV2WTD9gXc1wDFz3a2timmjELJ/
oV/i6KkRwUhVa8NLMMFKBt2JEJy6cG1kfVtfW3F46c2F1A==

------B0829AF6F1A2BD2399ED6ED5B4C66ED4--
Comment 1 Dmitriy Shadrinov 2007-05-15 11:57:49 MSD
поправка:
с ключом -binary подпись уже не проверяется (Verification failure) сразу.

Без -binary версия 0.9.8d глотает свои результаты, а 0.9.7a - уже нет, до тех
пор пока не сделать:

s/\r//g
Comment 2 Mikhail Gusarov 2008-06-13 13:00:39 MSD

    
Comment 3 Dmitriy Shadrinov 2014-10-06 00:41:48 MSK
openssl-1.0.1h-alt1 поведение такое же