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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline chikory  
#1 Оставлено : 11 июля 2017 г. 12:41:56(UTC)
chikory

Статус: Активный участник

Группы: Участники
Зарегистрирован: 17.11.2011(UTC)
Сообщений: 35
Откуда: Екатеринбург

Добрый день.
Подскажите пожалуйста как в асинхронном режиме cформировать объекты (пример):
Код:

var objCSP = yield cadesplugin.CreateObjectAsync("X509Enrollment.CCspInformation");
var objCSPs = yield cadesplugin.CreateObjectAsync("X509Enrollment.CCspInformations");
var objPrivateKey = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509PrivateKey");
var objRequest = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509CertificateRequestPkcs10")
var objObjectIds = yield cadesplugin.CreateObjectAsync("X509Enrollment.CObjectIds");
var objObjectId = yield cadesplugin.CreateObjectAsync("X509Enrollment.CObjectId");
var objX509ExtensionEnhancedKeyUsage = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionEnhancedKeyUsage");
var objExtensionTemplate = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionTemplate");
var objDn = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX500DistinguishedName");
var objEnroll = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509Enrollment");
var objExtensionKeyUsage = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionKeyUsage");

при использовании NAPI работал такой вариант:
Код:

var objCSP = cadesplugin.CreateObject("X509Enrollment.CCspInformation");
var objCSPs = cadesplugin.CreateObject("X509Enrollment.CCspInformations");
var objPrivateKey = cadesplugin.CreateObject("X509Enrollment.CX509PrivateKey");
var objRequest = cadesplugin.CreateObject("X509Enrollment.CX509CertificateRequestPkcs10")
var objObjectIds = cadesplugin.CreateObject("X509Enrollment.CObjectIds");
var objObjectId = cadesplugin.CreateObject("X509Enrollment.CObjectId");
var objX509ExtensionEnhancedKeyUsage = cadesplugin.CreateObject("X509Enrollment.CX509ExtensionEnhancedKeyUsage");
var objExtensionTemplate = cadesplugin.CreateObject("X509Enrollment.CX509ExtensionTemplate");
var objDn = cadesplugin.CreateObject("X509Enrollment.CX500DistinguishedName");
var objEnroll = cadesplugin.CreateObject("X509Enrollment.CX509Enrollment");
var objExtensionKeyUsage = cadesplugin.CreateObject("X509Enrollment.CX509ExtensionKeyUsage");

пытался сделать по аналогии, но ругается на вызов
Offline cross  
#2 Оставлено : 11 июля 2017 г. 17:41:14(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
А не могли бы вы уточнить на какой вызов ругается?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline chikory  
#3 Оставлено : 12 июля 2017 г. 9:57:15(UTC)
chikory

Статус: Активный участник

Группы: Участники
Зарегистрирован: 17.11.2011(UTC)
Сообщений: 35
Откуда: Екатеринбург

Автор: cross Перейти к цитате
А не могли бы вы уточнить на какой вызов ругается?

Skrinshot.JPG (236kb) загружен 17 раз(а).
в целом ругалось на саму формулировку каждой строки, я убрал yield. сейчас, строка
Код:
var objCSP = cadesplugin.CreateObjectAsync("X509Enrollment.CCspInformation");

возвращает Promise, не совсем понимаю, как затем вызвать функцию, Например
Код:
objCSP.InitializeFromName(providerName);


PS. весь код функции:
Код:

function CreateRequest_Async(dn, eku, provider){
	var providerName ="";
	var providerType ="";
	providerName = (provider == "КриптоПро CSP") ? "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider":"Infotecs Cryptographic Service Provider";
	providerType = (provider == "КриптоПро CSP") ? 75:2;

	var objCSP = cadesplugin.CreateObjectAsync("X509Enrollment.CCspInformation");
	var objCSPs = cadesplugin.CreateObjectAsync("X509Enrollment.CCspInformations");
	var objPrivateKey = cadesplugin.CreateObjectAsync("X509Enrollment.CX509PrivateKey");
	var objRequest = cadesplugin.CreateObjectAsync("X509Enrollment.CX509CertificateRequestPkcs10");
	var objObjectIds = cadesplugin.CreateObjectAsync("X509Enrollment.CObjectIds");
	var objObjectId = cadesplugin.CreateObjectAsync("X509Enrollment.CObjectId");
	var objX509ExtensionEnhancedKeyUsage = cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionEnhancedKeyUsage");
	var objExtensionTemplate = cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionTemplate");
	var objDn = cadesplugin.CreateObjectAsync("X509Enrollment.CX500DistinguishedName");
	var objEnroll = cadesplugin.CreateObjectAsync("X509Enrollment.CX509Enrollment");
	var objExtensionKeyUsage = cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionKeyUsage");

	objCSP.InitializeFromName(providerName);
	objCSPs.Add(objCSP);
	objPrivateKey.Length = 512;
	objPrivateKey.KeySpec = 1;
	// Политика экспорта ключа
	objPrivateKey.ExportPolicy = 0;
	objPrivateKey.Existing = false;
	//
	objPrivateKey.ContainerName = "test-name-for script";
	// Наименование криптопровайдера
	objPrivateKey.ProviderName = providerName;
	// Тип криптопровайдера
	objPrivateKey.ProviderType = 75;
	objRequest.InitializeFromPrivateKey(1, objPrivateKey, "");
	// Динамически формируем X509Enrollment.CObjectId и инициализируем по значению OID
	eku.forEach(function(item, i, eku) {
	  var temp = cadesplugin.CreateObject("X509Enrollment.CObjectId");
	  temp.InitializeFromValue(item);
	  objObjectIds.Add(temp);
	});
	//Инициализация полей запроса
	objX509ExtensionEnhancedKeyUsage.InitializeEncode(objObjectIds);
	//Добавление в запрос полей сертификата
	objRequest.X509Extensions.Add(objX509ExtensionEnhancedKeyUsage);
	// XCN_CERT_NAME_STR_NONE = 0 XCN_CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG  = 0x100000
	objDn.Encode(dn, 0x100000);
	objRequest.Subject = objDn;
	// SMIME
	objRequest.SmimeCapabilities = true;
	// Электронная подпись, Неотрекаемость, Шифрование ключей, Шифрование данных (F0)
	objExtensionKeyUsage.InitializeEncode(0x80|0x40|0x20|0x10);
	// Добавление в запрос расширения Расширенное использование ключа
	objRequest.X509Extensions.Add(objExtensionKeyUsage);
	// Инициализаци объекта CX509Enrollment с использованием запроса CX509CertificateRequestPkcs10
	objEnroll.InitializeFromRequest(objRequest);
	// Формирование запроса
	var pkcs10 = objEnroll.CreateRequest(3);

	return pkcs10;
}
Offline cross  
#4 Оставлено : 12 июля 2017 г. 17:38:11(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
ключевое слово "yield" можно использовать только внутри функции генератора. Как использовать асинхронный API можно посмотреть вот тут https://www.cryptopro.ru...ge/cades_bes_sample.html (см. файлик async_code.js)
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.