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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline evg_negriy_posint  
#1 Оставлено : 10 марта 2016 г. 14:44:59(UTC)
evg_negriy_posint

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

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

Сказал(а) «Спасибо»: 2 раз
Создаю запрос на сертификат использую библиотеку async_code.js

Код:


// [ASYNC] Создание запроса на сертификат
function RetrieveCertificate_Async(dn, ext, onSuccess)
{
	cadesplugin.async_spawn (function*(arg) {

		// Генерируем приватный ключ
		try {
			var PrivateKey = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509PrivateKey");
		}
		catch (e) {
			alert('Failed to create X509Enrollment.CX509PrivateKey: ' + GetErrorMessage(e));
			return;
		}

		yield PrivateKey.propset_ProviderName("Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider");
		yield PrivateKey.propset_ProviderType(75);

		try {
			var CertificateRequestPkcs10 = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509CertificateRequestPkcs10");
		}
		catch (e) {
			alert('Failed to create X509Enrollment.CX509CertificateRequestPkcs10: ' + GetErrorMessage(e));
			return;
		}

		yield CertificateRequestPkcs10.InitializeFromPrivateKey(0x1, PrivateKey, "");



		//Инициализируем области применения
 		var objExtensionKeyUsage = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionKeyUsage");
        var objX509ExtensionEnhancedKeyUsage = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionEnhancedKeyUsage")
        try{
			yield objExtensionKeyUsage.InitializeEncode(
				0x80 |
				0x40 |
				0x20 |
				0x10);


			yield CertificateRequestPkcs10.X509Extensions.Add(objExtensionKeyUsage); //  --> Ошибка X509Extensions undefined,
// попытки CertificateRequestPkcs10.propset_X509Extensions(...) выдают исключение Not implimeted. 
//скорее всего функция установки X509Extensions внутри просто реализует выброс исключения не реализовано!
// Как быть ? Нужно иметь возможность указывать CX509ExtensionKeyUsage и CX509ExtensionEnhancedKeyUsage


			var cObjectIds = yield cadesplugin.CreateObjectAsync("X509Enrollment.CObjectIds");
			var keyUsageArr = ext.split(',');
			for( i=0; i<keyUsageArr.length; i++ )
			{
				var cObjectId = yield cadesplugin.CreateObjectAsync("X509Enrollment.CObjectId");
				yield cObjectId.InitializeFromValue(keyUsageArr[i]);
				yield cObjectIds.Add(cObjectId);
			}

			yield objX509ExtensionEnhancedKeyUsage.InitializeEncode(cObjectIds);
			yield CertificateRequestPkcs10.X509Extensions.Add(objX509ExtensionEnhancedKeyUsage);

        }
        catch(e)
        {
			alert('Failed to create X509Enrollment.CX509ExtensionKeyUsage: ' + GetErrorMessage(e));
			return;
        }



		try {
			var DistinguishedName = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX500DistinguishedName");
		}
		catch (e) {
			alert('Failed to create X509Enrollment.CX500DistinguishedName: ' + GetErrorMessage(e));
			return;
		}

		// Готовим передачу данных о владельце
		yield DistinguishedName.Encode(dn);
		yield CertificateRequestPkcs10.propset_Subject(DistinguishedName);

		try {
			var Enroll = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509Enrollment");
		}
		catch (e) {
			alert('Failed to create X509Enrollment.CX509Enrollment: ' + GetErrorMessage(e));
			return;
		}

		yield Enroll.InitializeFromRequest(CertificateRequestPkcs10);

		// Просим у CryptoPro запрос на сертификат и приватный ключ
		var cert_req = yield Enroll.CreateRequest(0x1);

		//Выполняем действие (callback) завершения генерации сертификата
		onSuccess(cert_req);

		return cert_req;
	});
}



Нужно иметь возможность указывать CX509ExtensionKeyUsage и CX509ExtensionEnhancedKeyUsage!
Offline cross  
#2 Оставлено : 11 марта 2016 г. 13:16:51(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
две подрядят точки в асинхронном варианте нельзя использовать. К моменту вызова Add у вас X509Extensions еще не отрезолвился.
yield CertificateRequestPkcs10.X509Extensions.Add(objExtensionKeyUsage);

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