logo Обзор КриптоПро NGate для защищённого доступа к корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline edwveee  
#1 Оставлено : 14 ноября 2014 г. 16:03:02(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Мне нужно программно создать файл .sig на основании другого файла, а также получить сертификат, которым подписано и дату подписания, чтобы записать в xml. У клиента на компьютере стоит Crypto Pro.
Нигде не нашел как делать именно эти .sig файлы через например CAPICOM, либо описания структура такого файла(особенно четкой структуры).
По моему предположению гипотетически возможны 3 способа:
1. Через Capicom.
2. Через вызов какого-нибудь исполняемого файла в составе Crypto Pro с параметрами командной строки.
3. Есть какие-то функции на Си в руководстве разработчика.

Если 2 возможно, то как? Я не нашел ничего по конкретной этому вопросу.
Если невозможно, то остается 1 или 3. Проще конечно первый вариант. Но как тогда сделать такой файл? Специализированных функций не нашел, неужели просто прочитать подписываемый файл в строку, подписать и сохранить как файл с расширением sig?
Я смотрел sig файл через блокнот, на вид он показался бинарным, тогда как подпись получается текстовой.

upd:
Еще нужно заполнить поле:
id_kind | Код вида подписи | Возможны следующие значения: 0; 1; 2; 3; 4; 5.
Что это такое, я вообще не понял.
upd:
0 – Неопределенная
1 – Авторская
2 – Согласующая
3 – Утверждающая
4 – Удостоверяющая
5 – Ознакомительная

Но это ведь не относится к самой ЭЦП?

Отредактировано пользователем 14 ноября 2014 г. 16:09:07(UTC)  | Причина: Не указана

Online Андрей Писарев  
#2 Оставлено : 14 ноября 2014 г. 17:16:01(UTC)
Андрей Писарев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,437
Мужчина

Сказал «Спасибо»: 300 раз
Поблагодарили: 1186 раз в 929 постах
Все три варианта - ДА.
Все примеры есть как от производителя (MS), так и от КриптоПРО.
SDK.
В подписанных атрибутах можно хранить тип подписи.
Техническую поддержку оказываем тут
Наша база знаний
Offline edwveee  
#3 Оставлено : 17 ноября 2014 г. 10:52:16(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Я не нашел примеров и даже описаний того, что из себя представляет sig файл. Потому и создал тему. Можете хотя бы конец нити дать, чтобы по нему идти можно было?
Пс: Но лучше конечно полнее.
Online Андрей Писарев  
#4 Оставлено : 17 ноября 2014 г. 10:57:10(UTC)
Андрей Писарев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,437
Мужчина

Сказал «Спасибо»: 300 раз
Поблагодарили: 1186 раз в 929 постах
Забудьте о расширении файла.
Оно может быть любым (sig\sgn\p7s\bin) - зависит от ПО\ИС.
Это - CMS (pkcs#7).
Техническую поддержку оказываем тут
Наша база знаний
Online Андрей Писарев  
#5 Оставлено : 17 ноября 2014 г. 10:59:28(UTC)
Андрей Писарев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,437
Мужчина

Сказал «Спасибо»: 300 раз
Поблагодарили: 1186 раз в 929 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline edwveee  
#6 Оставлено : 17 ноября 2014 г. 13:23:01(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Спасибо. Оказалось все просто: считал файл в строку, подписал без включения этой строки в подпись, записал в файл. Скачал КриптоАрм(так как не понял, где в Крипто Про проверка файлов). Он распознал в файле подпись, хотя я и не понял как определить, что подпись верна по отношению к файлу.
Online Андрей Писарев  
#7 Оставлено : 17 ноября 2014 г. 16:20:14(UTC)
Андрей Писарев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,437
Мужчина

Сказал «Спасибо»: 300 раз
Поблагодарили: 1186 раз в 929 постах
Автор: edwveee Перейти к цитате
Спасибо. Оказалось все просто: считал файл в строку, подписал без включения этой строки в подпись, записал в файл. Скачал КриптоАрм(так как не понял, где в Крипто Про проверка файлов). Он распознал в файле подпись, хотя я и не понял как определить, что подпись верна по отношению к файлу.

Статус подписи - верна.
Если файл изменить - будет некорректная.
Все это есть на видео презентациях к КриптоАРМ...

У КриптоПРО есть csptest для проверки ЭП
Техническую поддержку оказываем тут
Наша база знаний
Offline edwveee  
#8 Оставлено : 17 ноября 2014 г. 18:19:49(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Я файл менял после подписывания, ничего не увидел. У меня виндовая штука, которая вылазит по сертификату выдает по имеющейся тестовой ЭЦП, что не удается установить его подлинность (хотя человек ей пользуется успешно для входа в сбер и подписания с гос учреждениями договоров). Вариант, файла с подписью, который мне кидали, тоже о том же гласит(подпись там ясно другая). Может в этом дело)

Отредактировано пользователем 17 ноября 2014 г. 18:22:29(UTC)  | Причина: Не указана

Online Андрей Писарев  
#9 Оставлено : 17 ноября 2014 г. 19:52:22(UTC)
Андрей Писарев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,437
Мужчина

Сказал «Спасибо»: 300 раз
Поблагодарили: 1186 раз в 929 постах
Автор: edwveee Перейти к цитате
Я файл менял после подписывания, ничего не увидел. У меня виндовая штука, которая вылазит по сертификату выдает по имеющейся тестовой ЭЦП, что не удается установить его подлинность (хотя человек ей пользуется успешно для входа в сбер и подписания с гос учреждениями договоров). Вариант, файла с подписью, который мне кидали, тоже о том же гласит(подпись там ясно другая). Может в этом дело)


ЭП бывает отделенной (отдельной) и присоединенной.
Если присоединенная - исходный файл включается в файл с ЭП.
И исходный файл не требуется для проверки.

Если используется отсоединенная ЭП (размер: несколько Кб (включает в себя сертификат)) - тогда любые изменения исходного файла, который подписывался, сказываются на результате проверки ЭП.
Техническую поддержку оказываем тут
Наша база знаний
Offline edwveee  
#10 Оставлено : 27 ноября 2014 г. 14:48:59(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Разобрался с КриптоАРМ. Оказалось там можно таки увидеть верна ли подпись конкретно.
У меня есть пример такой отделенной подписи, которую КриптоАРМ определяет действительной. Считывая файл и подпись и проверяя CAPCIOM'ом я получаю "В ASN1 встречен неожиданный конец данных". С другой стороны, создавая отделенную подпись через CAPICOM я получаю такую подпись, которую КриптоАРМ считает не действительной (хотя сертификат и видит). Естественно, проверяю у себя созданную собой подпись получаю, что она верна.
В чем проблема? Для подписывания и проверки использую SignedData. По ссылке ниже написано, что как раз такой стандарт шифрования использует, какой надо (pkcs#7):
http://msdn.microsoft.co...387722%28v=vs.85%29.aspx

Отредактировано пользователем 27 ноября 2014 г. 15:01:36(UTC)  | Причина: Не указана

Offline edwveee  
#11 Оставлено : 27 ноября 2014 г. 15:21:24(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Как с помощью КриптоПро проверить отделенную подпись? Я чего-то не нашел даже, где само приложение запускается и тп.. Хотя на компьютере Крипто Про стоит
Online Андрей Писарев  
#12 Оставлено : 27 ноября 2014 г. 17:03:04(UTC)
Андрей Писарев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,437
Мужчина

Сказал «Спасибо»: 300 раз
Поблагодарили: 1186 раз в 929 постах
Автор: edwveee Перейти к цитате
Как с помощью КриптоПро проверить отделенную подпись? Я чего-то не нашел даже, где само приложение запускается и тп.. Хотя на компьютере Крипто Про стоит


csptest.exe

параметры для проверки\генерации ЭП можно найти на форуме или через запуск в консоли с нужным параметром
Техническую поддержку оказываем тут
Наша база знаний
Offline edwveee  
#13 Оставлено : 27 ноября 2014 г. 17:14:53(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Автор: Андрей * Перейти к цитате
Автор: edwveee Перейти к цитате
Как с помощью КриптоПро проверить отделенную подпись? Я чего-то не нашел даже, где само приложение запускается и тп.. Хотя на компьютере Крипто Про стоит


csptest.exe

параметры для проверки\генерации ЭП можно найти на форуме или через запуск в консоли с нужным параметром


Из хелпа к экзешнику не понял как там файл отделенной подписи сделать и как протестировать подпись. На сайте примеров не нашел. Вы не могли бы подсказать?
Offline edwveee  
#14 Оставлено : 27 ноября 2014 г. 17:32:20(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Посмотрел по вот этой ссылке: http://yandex.ru/clck/js...amp;mc=4.753553804197733

Получилось создать подпись, верную по КриптоАРМ.
Только я не понимаю одного: получается для проверки подписи надо указывать сертификат, но я ведь заранее не знаю, какой там сертификат в подписи лежит.
Offline edwveee  
#15 Оставлено : 27 ноября 2014 г. 17:42:09(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Протестировал в своем приложении подпись проверяя через CAPICOM. То же самое, что и с подписью примером. В чем разгадка-то? Вроде стандарт используется один и тот же.
Offline edwveee  
#16 Оставлено : 27 ноября 2014 г. 18:21:37(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Попробовал проверить созданную в своей программе подпись. csptest ответил "Встречено неверное значение тега ASN1".
Можно конечно научиться все делать с помощью cptest, но еще нужно будет в браузере подписывать, а там наверное нельзя утилиты через консоль запускать.
Offline Kirill Sobolev  
#17 Оставлено : 28 ноября 2014 г. 9:39:14(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,731
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
Попробуйте проверить с опцией -base64.
Техническую поддержку оказываем тут
Наша база знаний
Offline edwveee  
#18 Оставлено : 28 ноября 2014 г. 12:29:20(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

Пробовал, но такого параметра даже нет, если верить хелпу. Да и влиять не должно.
Пробовал подписывать через javascript(данные из файла присылаются с сервера, и отправляются для сохранения обратно на сервер) файл, в котором написал "1", чтобы быть независимым от кодировки, но все же пробовал его кодировать в UTF8, d UTF8 без BOM. Пробовал делать файл, в котором через 16-ричный редактор задавал один символ - 00. Ничего не сработало.
Что именно подписывает cptest -fsign? Данные из файла, прочитанные как есть? Если тут есть разработчики Крипто Про, то пожалуйста скажите.
Функция, которой подписываю:
Код:
CAPICOM_ENCODE_BASE64 = 0;
function signMessage(message)
{
	var vSettings = new ActiveXObject("CAPICOM.Settings");
	vSettings.EnablePromptForCertificateUI = true;
	var vData = new ActiveXObject("CAPICOM.SignedData");
	vData.Content = message;
	var signer = new ActiveXObject("CAPICOM.Signer");
	
	return vData.Sign(signer, true, CAPICOM_ENCODE_BASE64);
}

Файл записываю и считываю в php^ file_put_contents и file_get_contents.
Offline edwveee  
#19 Оставлено : 28 ноября 2014 г. 13:42:18(UTC)
edwveee

Статус: Участник

Группы: Участники
Зарегистрирован: 14.11.2014(UTC)
Сообщений: 23

На одном из сайтов нашел такой момент:
Код:
P.S. One important note when verifying afterward – Internet Explorer uses UnicodeLittleUnmarked (UTF-16LE) to encode the signed data, before signing it. So when verifying, use this encoding.

Может в этом дело? Только в голове не укладывается причем тут проверка программами вроде КриптоПро и КриптоАРМ. Как это можкт влиять на работу.
Online Андрей Писарев  
#20 Оставлено : 28 ноября 2014 г. 14:02:11(UTC)
Андрей Писарев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,437
Мужчина

Сказал «Спасибо»: 300 раз
Поблагодарили: 1186 раз в 929 постах
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.