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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline CrUlf643  
#1 Оставлено : 8 декабря 2018 г. 20:09:35(UTC)
CrUlf643

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

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

Сказал(а) «Спасибо»: 9 раз
Добрый день. У меня есть код, смысл подписание хеша на клиенте с возвратом на сервер.
Это часть кода, смысл высылать весь я не вижу. Я пытаюсь плучить OID если он есть
каждый раз в среде разработчика в браузере выдается ошибка
"Uncaught (in promise) TypeError: Cannot read property 'PublicKey' of undefined"

Да я прекрасно понимаю, что вы можете сказать убери его из Promise, я делал и без него результат абсолютно идентичный.
Единственное что, нет задачи использования генератора, поэтому все связанное с yield отпадает напрочь.
CryptoPro, также как и плагин установлены. Сертификатами проверял разными и вашим тестовым ГОСТ 34.11 и рабочим, которым все прекрасно подписывается на рабочей станции. Также локальный сервер добавлен в доверенный в настройках ЭЦП.
Сам код из области oid смотрел как в интернете, так и в функциях внутри скрипта Code.js который есть на тестовой странице CryptoPro. То есть по сути я угрохал 3 дня, но так и не могу понять, что я делаю не так. У меня просто уже начался полный ступор от переисбытка информации, я чрезмерно много раз менял код но результат тот же самый. Естествено ошибок в нем было намного больше, но по факту осталось вот эта одна.
Заранее спасибо!


var oStorePromise = cadesplugin.CreateObjectAsync("CAPICOM.Store");
oStorePromise.then(
function (oStore) {
oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
certificate = global_selectbox_container[selectedCertID];
oStore.Certificate = certificate;
alert('oStore - ok');
var oSignerData = cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
oSignerData.then(
function (oSigner) {
oSigner.Certificate = certificate;
oSigner.Options = CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
oSigner.TSAAddress = "https://www.cryptopro.ru/tsp/";
alert('oSigner - ok');
var oHashedDataPromise = cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
oHashedDataPromise.then(
function (oHashedData) {
var pubkey = certificate.PublicKey();
var alg = pubkey.Algorithm;
var oid = alg.Value;
alert('cert-ok');
if (oid == "1.2.643.7.1.1.1.1") {
oHashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
}
else if (oid == "1.2.643.7.1.1.1.2") {
oHashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512;
}
else if (oid == "1.2.643.2.2.19") {
oHashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
}
else {
alert('Невозможно подписать этим сертификатом! OID ' + oid);
return;
}
oHashedData.SetHashValue(dataToSign.Hash);
alert('OID: ' + oid + ' Hash - Ok');

Отредактировано пользователем 8 декабря 2018 г. 20:14:53(UTC)  | Причина: Не указана

Offline two_oceans  
#2 Оставлено : 10 декабря 2018 г. 4:40:03(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 394 раз в 366 постах
Предполагаю, либо что-то неустановлено (отключено) либо может быть опечатка в регистре. Так, когда-то я много времени потерял на выяснение почему присваивание innerHtml не отражается на виде страницы, а потом увидел через обзор объектов что правильное свойство innerHTML и JavaScript "услужливо" создал мне еще одно свойство innerHtml.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.