07.11.2006 19:36:02cryptcp vs smime Ответов: 10
Дмитрий
Поставлена задача в автоматическом режиме подписывать исходящие письма и проверять подписи у входящих писем.

Имеем текстовый файл test.txt
Кодируем его в base64 и добавляем к нему заголовки:

Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: base64

После чего выполняем:
cryptcp.exe -signf -dn dimman\@mymail.ru -der -cert -crl test.txt -sdhttp://cryptopro.ru/tsp/tsp.srf

полученный test.txt.sig также кодируем в base64 и из всего этого формируем письмо в соответствии с RFC 2633. Отправляем, и (о радость) БАТ воспринимает это письмо как корректно подписанное.

Проделываем обратную задачу. Из пришедшего письма (сформированного и подписанного БАТом) выдираем составляющие - текст и подпись и прверяем с помощью:
cryptcp.exe -vsignf -u test.txt

И тут ждет облом: Подпись повреждена.

Проделываем то же самое, но с письмом, сформированным с помощью cryptcp и .... подпись в порядке :(

Где же глюк? (3 варианта ответа) БАТ, cryptcp, мои руки
 
Ответы:
08.11.2006 10:15:34Kirill Sobolev
Скорее всего руки, в процессе выдирания текста и подписи из письма, подписанного батом.
08.11.2006 10:43:45Дмитрий
Дык скрипт один. Алгоритм выдирания один. А результат разный для писем сформированных разным образом.
08.11.2006 11:43:29Kirill Sobolev
Вот мб как раз в алгоритме и проблема. Я никогда не слышал о том, что бат формирует письма не полностью соответствующие RFC
10.11.2006 14:51:00Дмитрий
Попробовал формировать/проверять письма разными способами.
Detached подпись.

И все равно получается следующее:

Формируем сообщение с помощью cryptcp -signf
BAT читает письмо как корректно подписанное
CAPICOM читает письмо как корректно подписанное
cryptcp -vsignf читает письмо как корректно подписанное

Формируем сообщение с помощью CAPICOM
CAPICOM читает письмо как корректно подписанное
BAT читает письмо как корректно подписанное
cryptcp -vsignf читает письмо как корректно подписанное

Формируем сообщение с помощью THE BAT
CAPICOM подпись не верна
BAT читает письмо как корректно подписанное
cryptcp -vsignf подпись не верна
10.11.2006 15:18:49Kirill Sobolev
А можно взглянуть на письмо, сформированное батом и на то, что дается для проверки CAPICOM и cryptcp?
10.11.2006 15:36:24Дмитрий
письмо (опускаю заголовки серверов)

Return-Path: <admin@хххххх.ru>
X-Original-To: first@хххххх.ru
Delivered-To: first@хххххх.ru
Received: from localhost.localdomain (unknown [192.168.140.1])
by mail.ххххх.ru (Postfix) with ESMTP id 4B1251CC43
for <first@хххххх.ru>; Fri, 10 Nov 2006 15:04:05 +0300 (MSK)
Received: from mail.хххххх.ru (mail.хххххх.ru [ххх.ххх.ххх.ххх])
by mail.хххх.ru (Postfix) with ESMTP
for <first@хххххх.ru>; Fri, 10 Nov 2006 15:04:05 +0300 (MSK)
Received: by mail.хххххх.ru (Postfix, from userid 1028)
id AAAD03E3CEB; Fri, 10 Nov 2006 15:28:20 +0300 (MSK)
Received: from localhost (gw-of.хххххххх.ru [ххх.ххх.ххх.ххх])
by mail.ххххххх.ru (Postfix) with ESMTP id 39CB13E3C82
for <first@ххххххх.ru>; Fri, 10 Nov 2006 15:28:14 +0300 (MSK)
Date: Fri, 10 Nov 2006 15:28:07 +0300
From: Dmitry Kozlov <admin@хххххххх.ru>
Reply-To: Dmitry Kozlov <admin@ххххххх.ru>
Organization: хххххх
X-Priority: 3 (Normal)
Message-ID: <1296646087.20061110152807@хххххх.ru>
To: first@хххххх.ru
Subject: Test cryptopro
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; boundary="----------7EBD2133F126E"
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on mail.хххххх.ru
X-Spam-Status: No, score=-101.5 required=4.0 tests=BAYES_00,PRIORITY_NO_NAME,
USER_IN_WHITELIST autolearn=no version=3.0.4
X-Spam-Level:


This is a cryptographically signed message in MIME format.

------------7EBD2133F126E
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: quoted-printable

=F4=C5=D3=D4=CF=D7=CF=C5 =D0=C9=D3=D8=CD=CF.

------------7EBD2133F126E
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIIE6AYJKoZIhvcNAQcCoIIE2TCCBNUCAQExDDAKBgYqhQMCAgkFADALBgkqhkiG9w0BBwGg
ggPbMIID1zCCA4SgAwIBAgIKESdrQgABAAAZHTAKBgYqhQMCAgMFADBlMSAwHgYJKoZIhvcN
AQkBFhFpbmZvQGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxEzARBgNVBAoTCkNSWVBUTy1Q
Uk8xHzAdBgNVBAMTFlRlc3QgQ2VudGVyIENSWVBUTy1QUk8wHhcNMDYxMTAyMTQzMTQ2WhcN
MDcxMTAyMTQ0MTQ2WjCBuzEhMB8GCSqGSIb3DQEJARYSYWRtaW5Aa3Vyc2tsaW5lLnJ1MQsw
CQYDVQQGEwJSVTETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLTG9zIEFuZ2VsZXMx
GzAZBgNVBAoTElBhcmFtb3VudCBQaWN0dXJlczEPMA0GA1UECxMGQXJ0aXN0MTAwLgYDVQQD
DCfQkNGA0L3QvtC70YzQtCDQqNCy0LDRgNGG0LXQvdC10LPQs9C10YAwYzAcBgYqhQMCAhMw
EgYHKoUDAgIkAAYHKoUDAgIeAQNDAARADi+7ddH2lQARVtzvqB+1Pipihoj35/T/1c9xa50s
U2hoP9LBj8B7DQIiIMOx1AuhDarV90P48zhxUwRsZVKr5aOCAbkwggG1MA4GA1UdDwEB/wQE
AwIE8DAZBgkqhkiG9w0BCQ8EDDAKMAgGBiqFAwICFTAdBgNVHQ4EFgQUHKNZhQGr9mDBrWS4
04Ov1ZTPBCAwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYDVR0jBBgwFoAUSFUwGMs8IqkX12Ji
ZAWnpMyGihEwUgYDVR0fBEswSTBHoEWgQ4ZBaHR0cDovL3d3dy5jcnlwdG9wcm8ucnUvY2Vy
dGVucm9sbC9UZXN0JTIwQ2VudGVyJTIwQ1JZUFRPLVBSTy5jcmwwgd4GCCsGAQUFBwEBBIHR
MIHOMGQGCCsGAQUFBzAChlhodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0Ny
eXB0by5jcnlwdG9wcm8ucnVfVGVzdCUyMENlbnRlciUyMENSWVBUTy1QUk8oMSkuY3J0MDEG
CCsGAQUFBzABhiVodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMDMGCCsG
AQUFBzABhidodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwbmMvb2NzcC5zcmYwCgYGKoUD
AgIDBQADQQDhOmR0pbiql7oTc2NXsc9DpZ3HT7uHZ6cRKWNXD6TbZwNBoRVpK2T2kRIfbP8A
SNJ4uMk5/fxyXWZe5sRtYCAJMYHVMIHSAgEBMHMwZTEgMB4GCSqGSIb3DQEJARYRaW5mb0Bj
cnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpDUllQVE8tUFJPMR8wHQYDVQQD
ExZUZXN0IENlbnRlciBDUllQVE8tUFJPAgoRJ2tCAAEAABkdMAoGBiqFAwICCQUAMAoGBiqF
AwICEwUABEDN3QXC1sy7DlTA05HxeKJf5WErl1/E11AQgex2Q3oEoVHz+N2UMelDP+8ruEWM
xFQs58n0IDqtH82no7DGbzzI
------------7EBD2133F126E--


в cryptcp соответственно подсовываю файл содержащий
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: quoted-printable

=F4=C5=D3=D4=CF=D7=CF=C5 =D0=C9=D3=D8=CD=CF.

сигнатуры не совпадают
10.11.2006 17:31:01Kirill Sobolev
Размер файла 135 байт?
10.11.2006 17:54:35Дмитрий
smime.p7s в кодировке der - 1260 байт ибо бат вместе с сертификатом шлет

cryptcp.exe -signf -dn admin@kurskline.ru -der -cert
дает точно такой же размер

файлы в обоих случаях идентичны кроме последних строк (где собссно сигнатура находится)
10.11.2006 18:10:33Kirill Sobolev
Нет, размер файла который содержит
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: quoted-printable

=F4=C5=D3=D4=CF=D7=CF=C5 =D0=C9=D3=D8=CD=CF.

при проверке
13.11.2006 9:54:17Дмитрий
Нашел причину. Точнее причины.
1. Старые добрые \n и \r\n. Ну это легко поправилось.
2. The BAT в большом тексте с большим количеством идущих подряд пробелов оные пробелы не кодирует в quoted-printable. Кодирует только первый, последний и в концах строк для корректного переноса. А у меня библиотека выдирания частей оказалась слишком правильная. Она эти пробелы превращала в =20. Таким образом сигнатуры и не совпадали.

Век живи -век учись.