Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Александр Лавник  
#11 Оставлено : 1 августа 2018 г. 16:46:41(UTC)
Александр Лавник

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,404
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 779 раз в 721 постах
Автор: CryptoSanEffect Перейти к цитате
Автор: Андрей Писарев Перейти к цитате

КриптоПро CSP 4.0 R3 (исполнения 1-Base/2-Base и 1-Lic/2-Lic)
Цитата:

Сертифицированная версия КриптоПро CSP 4.0.9944 (Xenocrates) от 22.02.2018.


Обновил криптопровайдер. К сожалению, не помогло.


Уточните, где и что Вы пытаетесь подписать и получаете ошибку (приложите скриншот)?
Техническую поддержку оказываем тут
Наша база знаний
Offline CryptoSanEffect  
#12 Оставлено : 1 августа 2018 г. 17:02:48(UTC)
CryptoSanEffect

Статус: Участник

Группы: Участники
Зарегистрирован: 01.08.2018(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: Александр Лавник Перейти к цитате

Уточните, где и что Вы пытаетесь подписать и получаете ошибку (приложите скриншот)?


Подписать пытаюсь на веб-форме. Последовательность действий следующая:
1. Сначала выбираю сертификат (который указан выше).
2. Прикладываю zip-файл
3. Отправляю форму и в процессе отправки пытаюсь подписать приложенный файл.

Скриншот функции подписания файла (вставка ссылок на изображение через форму почему-то не работает):
http://prntscr.com/kddxuz

Ошибка возникает на строке - yield oSignedData.SignHash(oHashedData, oSigner, SIGN_TYPE); // SIGN_TYPE = 1
Объект ошибки:
Цитата:
{message: "Invalid algorithm specified. (0x80090008)", requestid: 85, type: "error"}

Отредактировано пользователем 1 августа 2018 г. 17:05:36(UTC)  | Причина: Не указана

Offline cross  
#13 Оставлено : 1 августа 2018 г. 17:17:03(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Хеш с каким алгоритмом считаете после создания oHashedData?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline CryptoSanEffect  
#14 Оставлено : 1 августа 2018 г. 17:26:52(UTC)
CryptoSanEffect

Статус: Участник

Группы: Участники
Зарегистрирован: 01.08.2018(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: cross Перейти к цитате
Хеш с каким алгоритмом считаете после создания oHashedData?


Изначально, алгоритм хэширования использовался по умолчанию. Но потом пробовал указывать вручную:
Цитата:

oHashedData.Algorithm = cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256; // также *_512


Или нужно каким-то другим образом его указывать?
Offline cross  
#15 Оставлено : 1 августа 2018 г. 17:39:09(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
судя по куску куда что вы приводили вы пишете код для асинхронной версии. Там свойства нужно задавать немного по другому.
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
CryptoSanEffect оставлено 02.08.2018(UTC)
Offline CryptoSanEffect  
#16 Оставлено : 1 августа 2018 г. 17:44:46(UTC)
CryptoSanEffect

Статус: Участник

Группы: Участники
Зарегистрирован: 01.08.2018(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: cross Перейти к цитате
судя по куску куда что вы приводили вы пишете код для асинхронной версии. Там свойства нужно задавать немного по другому.
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);


Сделал как Вы сказали:
Цитата:

yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);

var sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, SIGN_TYPE);


В результате появилась другая ошибка:
Цитата:
{message: "The parameter is incorrect. (0x80070057)", requestid: 86, type: "error"}
Offline cross  
#17 Оставлено : 1 августа 2018 г. 17:50:17(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
А можете полный код показать?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline CryptoSanEffect  
#18 Оставлено : 1 августа 2018 г. 17:56:42(UTC)
CryptoSanEffect

Статус: Участник

Группы: Участники
Зарегистрирован: 01.08.2018(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: cross Перейти к цитате
А можете полный код показать?


После вставки, форматирование кода стало ужасным, но если надо, могу отдельным файлом приложить.

Цитата:

...
//подписываем и шифруем чанк, затем отправляем на сервер
return SignAndEncryptFileChunk_Async(certThumbprint, progressBox, originalBlob)
.then(/* sending to server */);
...

//подписание и шифрование чанка
function SignAndEncryptFileChunk_Async(certThumbprint, progressBox, fileChunk) {
return cadesplugin.async_spawn(function*(arg) {
let pb = arg[1];
var objForSignAndEnc = pb.signAndEnvelopObj;
if (!objForSignAndEnc)
throw "Возникла ошибка! Файл не содержит объект CPSigner и CadesSignedData";

var oHashedData = objForSignAndEnc.oHashedData;
if (!oHashedData)
throw "Возникла ошибка! Файл не содержит объект HashedData";

var oEnvelop = objForSignAndEnc.oEnvelop;
if (!oEnvelop)
throw "Возникла ошибка! Файл не содержит объект CPEnvelopedData";

var isLastChunk = pb.isLastChunk;

//получение base64 строки из чанка
let data = yield ReadFileChunk(arg[2]);
if (!data)
throw "Возникла ошибка при чтении части файла";

//Подписание
try {
//при разрыве соединения чанк мог быть уже подписан, проверяем для валидности oHashedData
if (pb.lastSucceededSignedChunkIndex !== pb.chunkIndex) {
yield oHashedData.Hash(data);
console.log("Часть № " + pb.chunkIndex + " подписана");
}
else console.log("Часть № " + pb.chunkIndex + " уже была ранее подписана, подписание не требуется");

} catch (err) {
let error = "Возникла ошибка при подписании: " + err;
console.log(error);
throw error;
}

//Шифрование
let encryptedData = "";
try {
//при разрыве соединения чанк мог быть уже зашифрован, проверяем для валидности шифрования
if (pb.lastSucceededSignedChunkIndex !== pb.chunkIndex && objForSignAndEnc.lastEncryptedData === "") {
encryptedData = yield oEnvelop.StreamEncrypt(data, isLastChunk);
console.log("Часть № " + pb.chunkIndex + " зашифрована");
} else {
encryptedData = objForSignAndEnc.lastEncryptedData;
console.log("Часть № " + pb.chunkIndex + " уже была ранее зашифрована, шифрование не требуется");
}
//очищаем base64 чанка
data = null;
} catch (err) {
let error = "Возникла ошибка при шифровании: " + err;
console.log(error);
throw error;
}

let resultObj = {
hashedData: oHashedData,
encryptedData: encryptedData
}

//если это была последняя часть и отдельного файла с подписью нет, то создаем подпись
if (isLastChunk && !SigExistsForFile(progressBox.fileName)) {

try {
resultObj.sign = yield signCreate_Async(arg[0], oHashedData, objForSignAndEnc);
if (!resultObj.sign)
throw "Ошибка при создании подписи";

console.log("Подпись успешно создана");

var verifyResult = yield Verify(resultObj.sign, oHashedData);
if (!verifyResult)
throw "Ошибка при проверке подписи";

console.log("Подпись проверена");

} catch (error) {

console.log(error);
throw error;
}
}

return resultObj;
}, certThumbprint, progressBox, fileChunk);
};

//создание подписи для файла, подписанного по чанкам
function signCreate_Async(certSubjectName, oHashedData, signerObj) {
return cadesplugin.async_spawn(function*(arg) {
var oSigner = signerObj.oSigner;
var oSignedData = signerObj.oSignedData;

try {
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);

var sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, SIGN_TYPE);
} catch (err) {
console.log("Failed to create signature. Error: " + cadesplugin.getLastError(err));
throw err;
}

return sSignedMessage;
}, certSubjectName, oHashedData, signerObj);
}

Отредактировано пользователем 1 августа 2018 г. 17:59:00(UTC)  | Причина: Не указана

Offline cross  
#19 Оставлено : 1 августа 2018 г. 18:15:39(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
вот это надо делать перед первым хешированием данных, сразу после создания обьекта
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
CryptoSanEffect оставлено 02.08.2018(UTC)
Offline CryptoSanEffect  
#20 Оставлено : 1 августа 2018 г. 18:22:42(UTC)
CryptoSanEffect

Статус: Участник

Группы: Участники
Зарегистрирован: 01.08.2018(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: cross Перейти к цитате
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
вот это надо делать перед первым хешированием данных, сразу после создания обьекта


Сделал следующим образом:
Цитата:

...
try {
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
} catch (err) {
errormes = "Failed to create CAdESCOM.HashedData: " + err.number;
throw errormes;
}

if (oHashedData) {
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
yield oHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
} else {
errormes = "Failed to create CAdESCOM.HashedData";
throw errormes;
}
...


Ошибка та же - Invalid algorithm specified. (0x80090008).

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.