Статус: Участник
Группы: Участники
Зарегистрирован: 04.10.2017(UTC) Сообщений: 16
|
Добрый день! изучаю возможности КриптоПро ЭЦП Browser plug-in. Хочу на своей страничке реализовать подпись и проверку. Пока получилось только сформировать подпись для тестового сообщения "Message" (пример взял из справки). Подпись пытаюсь реализовать в браузере Chrome/
Код: function SignCreate(certSubjectName, dataToSign) { return new Promise(function(resolve, reject){ cadesplugin.async_spawn(function *(args) { try { var oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store"); yield oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var CertificatesObj = yield oStore.Certificates; var oCertificates = yield CertificatesObj.Find( CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);
var Count = yield oCertificates.Count; if (Count == 0) { throw("Certificate not found: " + args[0]); } var oCertificate = yield oCertificates.Item(1); var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner"); yield oSigner.propset_Certificate(oCertificate);
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData"); yield oSignedData.propset_Content(dataToSign);
var sSignedMessage = yield oSignedData.SignCades(oSigner, CADESCOM_CADES_BES);
yield oStore.Close();
args[2](sSignedMessage); } catch (e) { args[3]("Failed to create signature. Error: " + cadesplugin.getLastError(err)); } }, certSubjectName, dataToSign, resolve, reject); }); }
Далее пытаюсь проверить эту подпись, код function Verify(sSignedMessage) { return new Promise(function(resolve, reject){ cadesplugin.async_spawn(function *(args1) { try { alert('www'); var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
verify = yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES); alert('xxx'+verify); //yield oSignedData.Close(); args1[0](verify); } catch (err) { args1[1]("Failed to create signature. Error: " + cadesplugin.getLastError(err)); }
}, sSignedMessage, resolve, reject); });
}
verify=undefined
Подскажите как правильно проверить подпись? В документации не нашел примера для Chrome.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
oSignedData.VerifyCades не возвращает значений. При ошибке будет исключение, если его нет то подпись проверилась. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.10.2017(UTC) Сообщений: 16
|
Автор: cross VerifyCades где вообще описан этот метод? в cadesplugin_api.js ничего такого не нашел.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.10.2017(UTC) Сообщений: 16
|
сейчас пробую так
function Verify(sSignedMessage) { return new Promise(function(resolve, reject){ cadesplugin.async_spawn(function *(args1) { try {
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData"); yield oSignedData.propset_ContentEncoding(1); yield oSignedData.propset_Content("Message"); yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES); } catch (err) { args1[1]("Failed to create signature. Error: " + cadesplugin.getLastError(err)); } args1[0]("OK");
}, sSignedMessage, resolve, reject); });
}
ошибка Failed to create signature. Error: The parameter is incorrect. (0x80070057)
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.10.2017(UTC) Сообщений: 16
|
Что-то я совсем запутался, ошибку из прошлого поста удалось победить, и вроде подпись даже проверяется, но если я меняю саму строку подпись все равно проверяется
код:
function Verify(sSignedMessage) { return new Promise(function(resolve, reject){ cadesplugin.async_spawn(function *(args1) { try { var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData"); yield oSignedData.propset_Content("Message1111111111"); <- Подписывал "Message" yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES); //args1[0]("OK"); args1[2]("OK"); <- Ошибок нет, выводится "ОК" } catch (err) { args1[3]("Failed to create signature. Error: " + cadesplugin.getLastError(err)); } }, sSignedMessage, resolve, reject); }); }
Как проверить подпись простого сообщения? бьюсь второй день уже
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.10.2017(UTC) Сообщений: 16
|
Как мне убедиться, что функционал работает? Я бы хотел подписать сообщение, затем выполнить какие-то действия у убедиться, что подпись слетела?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Можете сделать или отсоединенную подпись или открыть созданную подпись asn1 редактором найти дам подписанные данные и изменить их. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.10.2017(UTC) Сообщений: 16
|
Я подписываю сообщение, при этом файл у меня никакой не формируется, как в этом случае использовать asn.1 editor? Как можно создать отсоединенную подпись для сообщения? Как будет поддерживаться связь сообщения и подписи?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.10.2017(UTC) Сообщений: 16
|
Вопрос актуален, прошу помощи!
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close