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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline danbka  
#1 Оставлено : 7 ноября 2016 г. 13:55:24(UTC)
danbka

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Вставляем в запрос расширение subjectSignTool:

Код:
var cObjectId = yield cadesplugin.CreateObjectAsync("X509Enrollment.CObjectId");
yield cObjectId.InitializeFromValue('1.2.643.100.111');

var Extension = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509Extension");
yield Extension.Initialize(cObjectId, 0x1, base64_Data);

X509Extensions = yield CertificateRequestPkcs10.X509Extensions;
yield X509Extensions.Add(Extension);


В запросе получается Octet string, а нужен UTF8String. Как этого добиться?

test.png (5kb) загружен 24 раз(а).
Offline Андрей Емельянов  
#2 Оставлено : 11 ноября 2016 г. 15:23:23(UTC)
Андрей Емельянов

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

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

Сказал «Спасибо»: 4 раз
Поблагодарили: 148 раз в 144 постах
Добрый день.
Попробуйте положить в Extension.Initialize(cObjectId, 0x1, 'dGVzdA=='); // test в base64
уже asn1 закодированное значение атрибута.
Похожая тема была
http://www.cryptopro.ru/...ts&m=38406#post38406


Техническую поддержку оказываем тут
Наша база знаний
Наша страничка в Instagram
Offline danbka  
#3 Оставлено : 14 ноября 2016 г. 11:36:12(UTC)
danbka

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: eav Перейти к цитате
Добрый день.
Попробуйте положить в Extension.Initialize(cObjectId, 0x1, 'dGVzdA=='); // test в base64
уже asn1 закодированное значение атрибута.
Похожая тема была
http://www.cryptopro.ru/...ts&m=38406#post38406


Добрый день.

Из указанной Вами темы код на C# мы переписываем на JS:


Код:
// var objSubjectSignToolBytes = Encoding.UTF8.GetBytes("Домен-КС2").ToList();
// objSubjectSignToolBytes.InsertRange(0, new byte[] { 0x0c, 0x10 });
var objSubjectSignToolBytes = toUTF8Array('Домен-КС2');
objSubjectSignToolBytes.unshift(12, 16);
// Точно такой же массив байт получается в C# и у нас:
// [12, 16, 208, 148, 208, 190, 208, 188, 208, 181, 208, 189, 45, 208, 154, 208, 161, 50]

//var objSubjectSignToolValue = Encoding.Unicode.GetString(objSubjectSignToolBytes.ToArray());
objSubjectSignToolValue = bin2String(objSubjectSignToolBytes);

var cObjectId = yield cadesplugin.CreateObjectAsync("X509Enrollment.CObjectId");
yield cObjectId.InitializeFromValue('1.2.643.100.111');
var Extension = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509Extension");
yield Extension.Initialize(cObjectId, 0x2, objSubjectSignToolValue);
yield X509Extensions.Add(Extension);


функция bin2String:
Код:
function bin2String(array) {
  return String.fromCharCode.apply(String, array);
}


Но в результате получаем вот такую asn.1 структуру:
test2.png (8kb) загружен 13 раз(а).

Подскажите, пожалуйста, что мы делаем не так?
Offline Андрей Емельянов  
#4 Оставлено : 15 ноября 2016 г. 12:06:37(UTC)
Андрей Емельянов

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

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

Сказал «Спасибо»: 4 раз
Поблагодарили: 148 раз в 144 постах
Добрый день.
Уточните, пожалуйста, у Вас имеется Сертификат на годовую техническую поддержку "КриптоПро SDK"?
Создайте обращение на нашем портале ТП:
https://www.cryptopro.ru/support

Техническую поддержку оказываем тут
Наша база знаний
Наша страничка в Instagram
Offline 2ndbrezhnev  
#5 Оставлено : 28 ноября 2016 г. 23:07:52(UTC)
2ndbrezhnev

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Добрый день
Вопрос каким-нибудь образом получилось решить?
В каком виде подаётся текст в Initialize.
Пробовал разместить код в base64, как предлагалось изначально, ничего не вышло(

Код:
	var Request    = CreateObject("X509Enrollment.CX509CertificateRequestPkcs10");
...
	var objObjectId = CreateObject("X509Enrollment.CObjectId");
	objObjectId.InitializeFromValue('1.2.643.100.111');
	var objExt = CreateObject("X509Enrollment.CX509Extension");
	objExt.Initialize(objObjectId, 0x1, "dGVzdA==");
	Request.X509Extensions.Add(objExt);


В запросе получаю

Код:

    1.2.643.100.111: Флаги = 0, Длина = 4
    Средство электронной подписи владельца

    0000  74 65 73 74                                        test
0000: 74 65 73 74                                       ; test
================ ОШИБКА РАСШИФРОВКИ! ================

Отредактировано пользователем 29 ноября 2016 г. 11:54:12(UTC)  | Причина: Не указана

Offline danbka  
#6 Оставлено : 29 ноября 2016 г. 12:57:47(UTC)
danbka

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: 2ndbrezhnev Перейти к цитате
Добрый день
Вопрос каким-нибудь образом получилось решить?
В каком виде подаётся текст в Initialize.


Да, вот рабочий код:



Код:


var strSubjectSignTool = '"КриптоПро CSP" (версия 3.6)';
var byteSubjectSignTool = calstr(strSubjectSignTool).replace(/\s/g, '');
var lengthSubjectSignTool = (byteSubjectSignTool.length / 2).toString(16);

var cObjectId = cadesplugin.CreateObject("X509Enrollment.CObjectId");
cObjectId.InitializeFromValue('1.2.643.100.111');
var Extension = cadesplugin.CreateObject("X509Enrollment.CX509Extension");
Extension.Initialize(cObjectId, 4, "0C" + lengthSubjectSignTool + byteSubjectSignTool);
CertificateRequestPkcs10.X509Extensions.Add(Extension);
thanks 1 пользователь поблагодарил danbka за этот пост.
2ndbrezhnev оставлено 30.11.2016(UTC)
Offline 2ndbrezhnev  
#7 Оставлено : 30 ноября 2016 г. 14:43:26(UTC)
2ndbrezhnev

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Спасибо, всё работает.
Только нужно ещё расчёт lengthSubjectSignTool немного подправить - добавить ведущий 0, если lengthSubjectSignTool получился нечётным по количеству символов
Offline 2ndbrezhnev  
#8 Оставлено : 26 января 2017 г. 13:43:55(UTC)
2ndbrezhnev

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Появилась проблема с формированием запросов на некоторых машинах.
При формировании запроса одним и тем же кодом на одной машине получаю запрос с указанием шаблона и Средством ЭП, на другой нет.

Может ли код ниже отработать на машине, но так, что в запросе шаблон не будет указан, но ошибки при формировании запрос не получаю?:

<object id="g_objClassFactory" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>

sTemplate - OID шаблона

Код:

Set objRequest = g_objClassFactory.CreateObject("X509Enrollment.CX509CertificateRequestPkcs10")
...
Set ObjectId = g_objClassFactory.CreateObject("X509Enrollment.CObjectId")
ObjectId.InitializeFromValue(sTemplate)   
	
Set objTemplateExt = g_objClassFactory.CreateObject("X509Enrollment.CX509ExtensionTemplate")
Call objTemplateExt.InitializeEncode(ObjectId, 1, 0)  
Call objRequest.X509Extensions.Add(objTemplateExt)

Отредактировано пользователем 26 января 2017 г. 13:44:44(UTC)  | Причина: Не указана

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