Статус: Участник
Группы: Участники
Зарегистрирован: 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!
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
две подрядят точки в асинхронном варианте нельзя использовать. К моменту вызова Add у вас X509Extensions еще не отрезолвился. yield CertificateRequestPkcs10.X509Extensions.Add(objExtensionKeyUsage);
Нужно получить X509Exntesnions и потом у него позвать Add. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close