Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2014(UTC) Сообщений: 13
Сказал(а) «Спасибо»: 6 раз
|
Ситуация: беру файл на бэкэнде, считаю его хэш, вставляю во вьюху, отправляю вьюху в браузер. Там скриптами (при помощи CAdESCOM.CadesSignedData, CAdESCOM.HashedData, SignHash(...) и т.п.) подписываю этот хэш. Т.е. формата CMS я не получаю, но подпись есть, верно?
Далее проверяю подпись так же на клиенте (VerifyHash(...)) - все ок. Одновременно отправляю этот хэш и подпись на сервер. На серваке нахожу файл, который соответствует данному хэшу. Передаю byte[] файла и byte[] подписи в старый, проверенный метод проверки подписи (наш самописный, через CryptVerifyDetachedMessageSignature(...)). Этот метод говорит, что подпись верна.
Вопросы: 1. Натыкался на форуме, что получить хэш на сервере, передать клиенту и там (с помощью CAdESCOM) получить подпись нельзя. Но описанное выше работает. Где подвох или что я неправильно понял? 2. Для подписи нужен закрытый ключ, который берется с токена. Порядок действий: ставлю сертификат в систему (с помощью crypropro csp), вытаскиваю токен из компа, тыкаю кнопку подписи в браузере, выбираю установленный сертификат. Меня просят вставить токен - ок, вставляю; подпись создается, проверяется - все ок. Теперь обновляю страничку, вытаскиваю токен, тыкаю подписать - все ок?О_О Вопроса о токене больше нет и не появится?! Только если снести и заново установить сертификат в систему - тогда вопрос будет. 1 раз. Получается закрытый ключ кэшируется где-то или вроде того?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 116 раз в 105 постах
|
1. Скорее всего обсуждаемая ситуация не совпадала с вашей. 2. У вас создается подпись на ключе с токена при вытащенном токене? Или после обновления страницы вы выбираете другой сертификат?
|
 1 пользователь поблагодарил Новожилова Елена за этот пост.
|
moroz оставлено 09.10.2014(UTC)
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2014(UTC) Сообщений: 13
Сказал(а) «Спасибо»: 6 раз
|
Автор: Новожилова Елена  1. Скорее всего обсуждаемая ситуация не совпадала с вашей. 2. У вас создается подпись на ключе с токена при вытащенном токене? Или после обновления страницы вы выбираете другой сертификат? 1. Т.е. описанное мной работает как надо? В смысле, звучит рационально?) 2. Дело происходит в IE. Код:
//выбираю сертификат
var oStore = ObjCreator("CAPICOM.store");
var oCert = oStore.Certificates.Select("...", "...", false);
//данные для подписи
var txtDataToSign = $('#' + dataID + ' li.selected [name*="Hash"]').val();
var sHashValue = InitializeHashedData(txtDataToSign);
//пошла подпись
var oSigner = ObjCreator("CAdESCOM.CPSigner");
oSigner.Certificate = oCert.Item(1);
var oSignedData = ObjCreator("CAdESCOM.CadesSignedData");
var CADES_BES = 1;
var sSignedData = oSignedData.SignHash(sHashValue, oSigner, CADES_BES);
Опустил всякие проверки. "oStore.Certificates.Select" <-- вот тут вот появляется список с сертификатами. Порядок: удаляю сертификат из системы, с помощью csp заново ставлю его. Вынимаю токен, обновляю страничку браузера, тыкаю подписать, в списке выбираю только что установленный сертификат - появляется окошко стандартное "Insert key carrier media". Вставляю токен - оно пропадает, подпись создается. Опять вынимаю токен, обновляю страничку, тыкаю подписать - подпись создается... Больше никто "key carrier media" у меня не спрашивает. И подпись корректная. Отредактировано пользователем 6 октября 2014 г. 16:14:20(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 116 раз в 105 постах
|
1. Да, все работает как и должно. 2. "Опять вынимаю токен, обновляю страничку, тыкаю подписать - подпись создается... " После "обновляю страничку" и "тыкаю подписать" должен быть выбор сертификата. Вы тот же сертификат выбираете? Отредактировано пользователем 6 октября 2014 г. 16:29:13(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2014(UTC) Сообщений: 13
Сказал(а) «Спасибо»: 6 раз
|
Автор: Новожилова Елена  1. Да, все работает как и должно. 2. "Опять вынимаю токен, обновляю страничку, тыкаю подписать - подпись создается... "
Между "обновляю страничку" и "тыкаю подписать" должен быть выбор сертификата. Вы тот же сертификат выбираете? 1. Ура. 2. Да, пропустил этот шаг. Тот же сертификат конечно.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 116 раз в 105 постах
|
Какой криптопровайдер вы используете?
Кстати, а почему вы считаете, что не получаете CMS? Судя по вашему коду - это не так.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2014(UTC) Сообщений: 13
Сказал(а) «Спасибо»: 6 раз
|
Автор: Новожилова Елена  Какой криптопровайдер вы используете? CryptoPro CSP 3.9.8000 Автор: Новожилова Елена  Кстати, а почему вы считаете, что не получаете CMS? Судя по вашему коду - это не так. IRawSignatureТам внизу пояснение. По поводу подписи хэша.Этим постом и был вызван самый первый вопрос топика о подписи хэша на клиенте.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 116 раз в 105 постах
|
В вашем коде:
var sSignedData = oSignedData.SignHash(sHashValue, oSigner, CADES_BES);
При чем здесь IRawSignature? Ветка, на которую вы ссылаетесь, была создана 3 года назад. До появления метода CadesSignedData.SignHash
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2014(UTC) Сообщений: 13
Сказал(а) «Спасибо»: 6 раз
|
Автор: Новожилова Елена  В вашем коде: var sSignedData = oSignedData.SignHash(sHashValue, oSigner, CADES_BES); При чем здесь IRawSignature? Согласен, ошибся тут. Спасибо. Автор: Новожилова Елена  Ветка, на которую вы ссылаетесь, была создана 3 года назад. До появления метода CadesSignedData.SignHash ~ так и думал. Поэтому не стал сразу ссылку кидать на те посты, ограничился "Ура"=) Второй вопрос остался: откуда берется ключ для подписи, если токен вытащен физически из компьютера?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 116 раз в 105 постах
|
У вас случайно не включено кэширование ключей?
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close