Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2022(UTC) Сообщений: 15  Откуда: Vologda Сказал(а) «Спасибо»: 2 раз
|
Добрый день! Нужно на сайте реализовать форму, в которую пользователь загружает sig и xml, а в ответ получает результат проверки подписи. Особенность в том , что подпись и открепленная и без сертификата(CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY). Проверка как в примере: https://docs.cryptopro.r...in-samples-sign-detached вовзвращает "cannot find the original signer". Ища на форуме могу предположить, что это как раз из-за того, что сертификат не включен в подписанное сообщение. Как тогда в таком случае можно реализовать проверку? Может где-то аналогично подписанию можно выставить .propset_Options? Ведь в "инструментах Крипто-Про" я такого вида подписи могу проверить без проблем.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Здравствуйте. Эта опция - добавить только сертификат подписанта. Пример файлов\кода - будет? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2022(UTC) Сообщений: 15  Откуда: Vologda Сказал(а) «Спасибо»: 2 раз
|
Автор: Андрей *  Здравствуйте. Эта опция - добавить только сертификат подписанта. Пример файлов\кода - будет?  test.xml (1kb) загружен 1 раз(а). test.sig.txt (2kb) загружен 2 раз(а).Код doc = await getFileContent('docFile'); sig = await getFileContent('sigFile'); verSig(sig, btoa(unescape(encodeURIComponent(doc)))); verSig = function(d,s) { g.verifySign(d,s) .then(function (e) { console.log(e); }).catch(function (e) { console.log(e); }) } function VerifySign(sSignedMessage, dataInBase64) { return new Promise(function (resolve, reject) { cadesplugin.async_spawn(function* (args) { var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData"); try { // Значение свойства ContentEncoding должно быть задано // до заполнения свойства Content yield oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY); yield oSignedData.propset_Content(dataInBase64); yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true); } catch (err) { var e = cadesplugin.getLastError(err); alert("Failed to verify signature. Error: " + e); return args[1](e); } return args[0](); }, resolve, reject); }); }
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Подпись проходит проверку. Цитата: doc = await getFileContent('docFile'); sig = await getFileContent('sigFile'); verSig(sig, btoa(unescape(encodeURIComponent(doc))));
Переписать на чтение как в примере |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2022(UTC) Сообщений: 15  Откуда: Vologda Сказал(а) «Спасибо»: 2 раз
|
Автор: Андрей *  Подпись проходит проверку. Цитата: doc = await getFileContent('docFile'); sig = await getFileContent('sigFile'); verSig(sig, btoa(unescape(encodeURIComponent(doc))));
Переписать на чтение как в примере Андрей, я в примерах по плагину вижу как создавать подпись, при этом при подписи мы указываем шифровку base64, а на проверку уже отправляем ответ от подписания. Правильно ли я предполагаю, что Вы меня направляете в сторону использования: https://docs.cryptopro.r...n-samples-enveloped-data var encMessage = yield oEnvelopedData.Encrypt(cadesplugin.CADESCOM_ENCODE_BASE64); То есть суть моей не удачи в том, что я неправильно кодирую в base64 полученное содержимое файла?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: МарияК2603  Автор: Андрей *  Подпись проходит проверку. Цитата: doc = await getFileContent('docFile'); sig = await getFileContent('sigFile'); verSig(sig, btoa(unescape(encodeURIComponent(doc))));
Переписать на чтение как в примере Андрей, я в примерах по плагину вижу как создавать подпись, при этом при подписи мы указываем шифровку base64, а на проверку уже отправляем ответ от подписания. Правильно ли я предполагаю, что Вы меня направляете в сторону использования: https://docs.cryptopro.r...n-samples-enveloped-data var encMessage = yield oEnvelopedData.Encrypt(cadesplugin.CADESCOM_ENCODE_BASE64); То есть суть моей не удачи в том, что я неправильно кодирую в base64 полученное содержимое файла? Нет. Отправляю смотреть, как при подписании читаются файлы и получается информация в памяти + не использовать выделенные функции, которые меняют содержимое от getFileContent. base64 - это кодирование. Encrypt - это шифрование файлов, не имеет отношение к проблеме. |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2022(UTC) Сообщений: 15  Откуда: Vologda Сказал(а) «Спасибо»: 2 раз
|
Автор: Андрей * 
Спасибо за совет! Все получилось!
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2022(UTC) Сообщений: 15  Откуда: Vologda Сказал(а) «Спасибо»: 2 раз
|
Автор: Андрей *  Автор: МарияК2603  Автор: Андрей *  Подпись проходит проверку. Цитата: doc = await getFileContent('docFile'); sig = await getFileContent('sigFile'); verSig(sig, btoa(unescape(encodeURIComponent(doc))));
Переписать на чтение как в примере Андрей, я в примерах по плагину вижу как создавать подпись, при этом при подписи мы указываем шифровку base64, а на проверку уже отправляем ответ от подписания. Правильно ли я предполагаю, что Вы меня направляете в сторону использования: https://docs.cryptopro.r...n-samples-enveloped-data var encMessage = yield oEnvelopedData.Encrypt(cadesplugin.CADESCOM_ENCODE_BASE64); То есть суть моей не удачи в том, что я неправильно кодирую в base64 полученное содержимое файла? Нет. Отправляю смотреть, как при подписании читаются файлы и получается информация в памяти + не использовать выделенные функции, которые меняют содержимое от getFileContent. base64 - это кодирование. Encrypt - это шифрование файлов, не имеет отношение к проблеме. Добрый день! Возвращаюсь к своему вопросу, то как у меня получилось работает если sig в бинарном виде, если файл в подписью содержит подпись в base64, то получается, что я читаю через FileReader и readAsDataURL. и в итоге на проверку потом идет подпись дважды кодированная в base64. Каким образом победить такую ситуацию?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Декодировать из base64...? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close