Использую 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--
поправка: с ключом -binary подпись уже не проверяется (Verification failure) сразу. Без -binary версия 0.9.8d глотает свои результаты, а 0.9.7a - уже нет, до тех пор пока не сделать: s/\r//g
openssl-1.0.1h-alt1 поведение такое же