Статус: Участник
Группы: Участники
Зарегистрирован: 06.06.2022(UTC) Сообщений: 11 
|
https://docs.cryptopro.r...-samples-cades-sign-hashСтраничка проверки плагина https://www.cryptopro.ru...ge/cades_bes_sample.html отрабатывает нормально, тестовым сертификатом пoдписывает. Copy-Past кода из https://docs.cryptopro.r...-samples-cades-sign-hash выдает ошибку Failed to create signature. Error: The parameter is incorrect. (0x80070057)Код:function SignMain_Async() {
cadesplugin.async_spawn(function* (args) {
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_HASH_ALGORITHM_CP_GOST_3411 = 100;
var sCertName = "Test Certificate"; // Здесь следует заполнить SubjectName сертификата
if ("" === sCertName) {
alert("Введите имя сертификата (CN).");
return;
}
// Ищем сертификат для подписи
var oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
yield oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var oStoreCerts = yield oStore.Certificates;
var oCertificates = yield oStoreCerts.Find(
CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, sCertName);
var certsCount = yield oCertificates.Count;
if (certsCount === 0) {
alert("Certificate not found: " + sCertName);
return;
}
var oCertificate = yield oCertificates.Item(1);
yield oStore.Close();
// Предварительно вычисленное хэш-значение исходных данных
// Хэш-значение должно быть представлено в виде строки шестнадцатеричных цифр,
// группами по 2 цифры на байт, с пробелами или без пробелов.
// Например, хэш-значение в таком формате возвращают объекты
// CAPICOM.HashedData и CADESCOM.HashedData.
var sHashValue = "92CD0CB36B10BFB88DEF198F80B7D2E667DBDA064D346405C25EEF77FFE375D7";
// Алгоритм хэширования, при помощи которого было вычислено хэш-значение
// Полный список поддерживаемых алгоритмов указан в перечислении CADESCOM_HASH_ALGORITHM
var hashAlg = CADESCOM_HASH_ALGORITHM_CP_GOST_3411; // ГОСТ Р 34.11-94
// Создаем объект CAdESCOM.HashedData
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
// Инициализируем объект заранее вычисленным хэш-значением
// Алгоритм хэширования нужно указать до того, как будет передано хэш-значение
yield oHashedData.propset_Algorithm(hashAlg);
yield oHashedData.SetHashValue(sHashValue);
// Создаем подписанное сообщение
// Такая подпись должна проверяться в КриптоАРМ и cryptcp.exe
// Создаем объект CAdESCOM.CPSigner
var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
yield oSigner.propset_Certificate(oCertificate);
yield oSigner.propset_CheckCertificate(true);
// Создаем объект CAdESCOM.CadesSignedData
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
var sSignedMessage = "";
// Вычисляем значение подписи
try {
sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, CADESCOM_CADES_BES);
} catch (err) {
alert("Failed to create signature. Error: " + cadesplugin.getLastError(err));
return;
}
document.getElementById("signature").innerHTML = sSignedMessage;
// Создаем объект CAdESCOM.CadesSignedData
var oSignedData2 = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
// Проверяем подпись
try {
yield oSignedData2.VerifyHash(oHashedData, sSignedMessage, CADESCOM_CADES_BES);
alert("Signature verified");
} catch (err) {
alert("Failed to verify signature. Error: " + cadesplugin.getLastError(err));
return;
}
});
}
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,162   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Здравствуйте. Цитата: var hashAlg = CADESCOM_HASH_ALGORITHM_CP_GOST_3411; // ГОСТ Р 34.11-94
потому что пример для 2001 ГОСТ |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,162   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Автор: dimzon541  И там же в браузере можно посмотреть исходный код ... |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 06.06.2022(UTC) Сообщений: 11 
|
Автор: Андрей *  Автор: dimzon541  И там же в браузере можно посмотреть исходный код ... И там же в браузере НЕТ ПРИМЕРА подписания хэша!
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 06.06.2022(UTC) Сообщений: 11 
|
Автор: Андрей *  Здравствуйте. Цитата: var hashAlg = CADESCOM_HASH_ALGORITHM_CP_GOST_3411; // ГОСТ Р 34.11-94
потому что пример для 2001 ГОСТ Значит наверное пример надо исправить?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,162   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Автор: dimzon541  Автор: Андрей *  Автор: dimzon541  И там же в браузере можно посмотреть исходный код ... И там же в браузере НЕТ ПРИМЕРА подписания хэша! Так определите пул задач и смотрите в примерах. Вычисление хеша для начала, если оно действительно нужно отдельно. |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,162   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 06.06.2022(UTC) Сообщений: 11 
|
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,162   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Автор: dimzon541  он работает, если используется другой алгоритм (сертификат) - будет ошибка. Если это не понятно, нужно начинать с теории, а не с копипаста. Аналогичные проблемы и с RSA. Для этого есть примечания\примеры и где смотреть. Это смотрели? |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 06.06.2022(UTC) Сообщений: 11 
|
Автор: Андрей *  он работает, если используется другой алгоритм (сертификат) - будет ошибка. Если это не понятно, нужно начинать с теории, а не с копипаста. Аналогичные проблемы и с RSA. Для этого есть примечания\примеры и где смотреть. Это смотрели? Смотрели естественно. Тестовый сертификат который выдается и устанавливается "по умолчанию" когда ни одного нет не работает с данным примером. Проблема решена использованием другого хэша.
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close