Статус: Участник
Группы: Участники
Зарегистрирован: 10.04.2015(UTC) Сообщений: 18  Сказал(а) «Спасибо»: 4 раз
|
Добрый день! Не получается проверить корректность подписи. Подпись создавали, как в примере Проверка работы КриптоПро ЭЦП Browser plug-in, с помощью функции MakeCadesBesSign(dataToSign, oCert). При попытке проверить подпись с помощью функции Verify (взятой из раздела с примерами): function Verify(sSignedMessage, dataToVerify) { var oSignedData = CreateObject("CAdESCOM.CadesSignedData"); try { // Значение свойства ContentEncoding должно быть задано // до заполнения свойства Content oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY; oSignedData.Content = dataToVerify; oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true); } catch (err) { alert("Failed to verify signature. Error: " + GetErrorMessage(err)); return false; } return true; } сначала вылетела ошибка, что функция CreateObject не определена. Поправили CreateObject("CAdESCOM.CadesSignedData") на ObjCreator("CAdESCOM.CadesSignedData") и данная ошибка ушла, но теперь вылетает другая: "Failed to verify signature. Error: Error calling method on NPObject". Не знаем, что делать. Подскажите, пожалуйста, решение.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
Можно например сделать так: Код:var CADESCOM_CADES_BES = 1;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_MY_STORE = "My";
var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
var CADESCOM_BASE64_TO_BINARY = 1;
function ObjCreator(name) {
switch (navigator.appName) {
case 'Microsoft Internet Explorer':
return new ActiveXObject(name);
default:
var userAgent = navigator.userAgent;
if (userAgent.match(/Trident\/./i)) { // IE10, 11
return new ActiveXObject(name);
}
if (userAgent.match(/ipod/i) || userAgent.match(/ipad/i) || userAgent.match(/iphone/i)) {
return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]);
}
var cadesobject = document.getElementById('cadesplugin');
return cadesobject.CreateObject(name);
}
}
function GetErrorMessage(e) {
var err = e.message;
if (!err) {
err = e;
} else if (e.number) {
err += " (" + e.number + ")";
}
return err;
}
function SignCreate(certSubjectName, dataToSign) {
var oStore = ObjCreator("CAPICOM.Store");
oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var oCertificates = oStore.Certificates.Find(
CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);
if (oCertificates.Count == 0) {
alert("Certificate not found: " + certSubjectName);
return;
}
var oCertificate = oCertificates.Item(1);
var oSigner = ObjCreator("CAdESCOM.CPSigner");
oSigner.Certificate = oCertificate;
var oSignedData = ObjCreator("CAdESCOM.CadesSignedData");
// Значение свойства ContentEncoding должно быть задано
// до заполнения свойства Content
oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = dataToSign;
var sSignedMessage = "";
try {
sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_BES, true);
} catch (err) {
alert("Failed to create signature. Error: " + GetErrorMessage(err));
return;
}
oStore.Close();
return sSignedMessage;
}
function Verify(sSignedMessage, dataToVerify) {
var oSignedData = ObjCreator("CAdESCOM.CadesSignedData");
try {
// Значение свойства ContentEncoding должно быть задано
// до заполнения свойства Content
oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = dataToVerify;
oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true);
} catch (err) {
alert("Failed to verify signature. Error: " + GetErrorMessage(err));
return false;
}
return true;
}
function run() {
var oCertName = document.getElementById("CertName");
var sCertName = oCertName.value; // Здесь следует заполнить SubjectName сертификата
if ("" == sCertName) {
alert("Введите имя сертификата (CN).");
return;
}
// Предварительно закодированные в BASE64 бинарные данные
// В данном случае закодирована строка "Some Data."
var dataInBase64 = "U29tZSBEYXRhLg==";
// Подписаны будут исходные бинарные данные (в данном случае - "Some Data.")
// Такая подпись должна проверяться в КриптоАРМ и cryptcp.exe
var signedMessage = SignCreate(sCertName, dataInBase64);
document.getElementById("signature").innerHTML = signedMessage;
var verifyResult = Verify(signedMessage, dataInBase64);
if (verifyResult) {
alert("Signature verified");
}
}
и тестовая страничка такого типа: Код:
<html>
<head>
<object id="cadesplugin" type="application/x-cades" class="hiddenObject"></object>
<script language="javascript" src="testcode.js"></script>
</head>
<body>
Имя сертификата:<input id="CertName"/></br>
Подписаны будут исходные бинарные данные (в данном случае - "Some Data.")</br>
Такая подпись должна проверяться в КриптоАРМ и cryptcp.exe</br>
<button onclick="run()">test</button></br>
подпись:<textarea id="signature" rows=15 cols=50></textarea>
</body>
</html>
Отредактировано пользователем 30 апреля 2015 г. 15:05:35(UTC)
| Причина: грамматика
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.04.2015(UTC) Сообщений: 29
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 6 раз в 5 постах
|
Наблюдаю аналогичную проблему (ошибка Error calling method on NPObject) - во всех браузерах, кроме Internet Explorer. Код взят из примеров (http://cpdn.cryptopro.ru/default.asp?url=content/cades/plugin.html). Подскажите, поддерживается ли метод VerifyCades где-либо кроме Internet Explorer?
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.05.2015(UTC) Сообщений: 11 
|
Добрый день. Аналогичная ошибка, помогите решить.
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.12.2014(UTC) Сообщений: 5 
|
К сожалению, та же ошибка. В IE дополнена кодом "Неправильное значение хэша. (0x80091007)".
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close