Статус: Новичок
Группы: Участники
Зарегистрирован: 04.08.2014(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Возникла проблема с плагином , возможно я что-то не так делаю. Пытаюсь сгенерировать запрос на сертификат с помощью CertEnroll , и в итоге получаю ошибку 0x80090020. Вот код: Код:
function isIE() {
var retVal = (('Microsoft Internet Explorer' == navigator.appName) ||
// IE < 11
navigator.userAgent.match(/Trident\/./i));
// IE 11
return retVal;
}
function isIOS() {
var retVal = (navigator.userAgent.match(/ipod/i) ||
navigator.userAgent.match(/ipad/i) ||
navigator.userAgent.match(/iphone/i));
return retVal;
}
// Функция активации объектов КриптоПро ЭЦП Browser plug-in
function createObject(name) {
if (isIOS()) {
// На iOS для создания объектов используется функция
// call_ru_cryptopro_npcades_10_native_bridge, определенная в NativeBridge.js
return call_ru_cryptopro_npcades_10_native_bridge('CreateObject', [
name
]);
}
if (!isIE()) {
// В Firefox, Opera, Chrome, Safari создаются объекты NPAPI
var pluginObject = document.getElementById('cadesplugin');
return pluginObject.CreateObject(name);
}
// В Internet Explorer создаются COM-объекты
if (name.match(/X509Enrollment/i)) {
// Объекты CertEnroll создаются через CX509EnrollmentWebClassFactory
var objCertEnrollClassFactory = document.getElementById('certEnrollClassFactory');
return objCertEnrollClassFactory.CreateObject(name);
}
// Объекты CAPICOM и CAdESCOM создаются обычным способом
return new ActiveXObject(name);
}
function createOID(oid,name) {
var CObjectId = createObject('X509Enrollment.CObjectId');
console.log(_.keys(CObjectId));
if (oid){
CObjectId.InitializeFromValue(oid);
}else{
CObjectId.InitializeFromName(name);
}
return CObjectId;
}
function createDN(dnString) {
var dn = createObject('X509Enrollment.CX500DistinguishedName');
dn.Encode(dnString, 0);
return dn;
}
function createRequest() {
var enrollment = createObject('X509Enrollment.CX509Enrollment');
var csr = createCSR();
enrollment.InitializeFromRequest(csr);
//var clientAuth = createOID('1.3.6.1.5.5.7.3.2')
//var ekuIds = createObject('X509Enrollment.CObjectIds');
//ekuIds.Add(clientAuth);
//var ekuExtension = createObject('X509Enrollment.CX509ExtensionEnhancedKeyUsage');
//ekuExtension.InitializeEncode(ekuIds);
//csr.X509Extensions.Add(ekuExtension);
var str = enrollment.CreateRequest(1);
return str;
}
function createCSR() {
var csr = createObject('X509Enrollment.CX509CertificateRequestPkcs10');
console.log(_.keys(csr));
var privateKey = createPrivateKey();
csr.InitializeFromPrivateKey(1, privateKey, '');
var subject = createDN('CN=AlejaCMa');
csr.Subject = subject;
var hashAlgo = createOID('1.2.643.2.2.9');
console.log(hashAlgo.FriendlyName);
//csr.HashAlgorithm = hashAlgo;
return csr;
}
function createPrivateKey() {
var privateKey = createObject('X509Enrollment.CX509PrivateKey');
console.log(_.keys(privateKey));
var algo = createOID('1.2.643.2.2.3');
console.log(algo.FriendlyName);
privateKey.Algorithm = algo;
//privateKey.ContainerName = 'test';
privateKey.Existing = false;
//privateKey.ExportPolicy = 1;
privateKey.Length = 512;
privateKey.KeySpec = 1;
privateKey.KeyUsage = 1;
//privateKey.KeyProtection = 1;
//privateKey.MachineContext = false;
privateKey.ProviderType = 75;
return privateKey;
}
createRequest();
Буду рад помощи.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Здравствуйте!
В какой момент возникает ошибка?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.08.2014(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
На этой строчке: Код:
var str = enrollment.CreateRequest(1);
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Код: function CreateRequest() {
try {
var objPrivateKey = CreateObject("X509Enrollment.CX509PrivateKey");
objPrivateKey.ProviderName = "Crypto-Pro GOST R 34.10-2001 KC1 CSP";
objPrivateKey.ProviderType = 75;
var AT_KEYEXCHANGE = 1;
objPrivateKey.KeySpec = AT_KEYEXCHANGE;
var ContextUser = 1;
var objRequest = CreateObject("X509Enrollment.CX509CertificateRequestPkcs10");
objRequest.InitializeFromPrivateKey(ContextUser, objPrivateKey, "");
var objDn = CreateObject("X509Enrollment.CX500DistinguishedName");
var XCN_CERT_NAME_STR_NONE = 0;
objDn.Encode("CN=Rutoken test user", XCN_CERT_NAME_STR_NONE);
objRequest.Subject = objDn;
// Enroll
var objEnroll = CreateObject("X509Enrollment.CX509Enrollment");
objEnroll.InitializeFromRequest(objRequest);
var XCN_CRYPT_STRING_BASE64REQUESTHEADER = 3;
var pkcs10 = objEnroll.CreateRequest(XCN_CRYPT_STRING_BASE64REQUESTHEADER);
}
catch (err) {
alert("Ошибка при создании запроса: " + GetErrorMessage(err));
return;
}
alert (pkcs10) ;
}
|
1 пользователь поблагодарил Новожилова Елена за этот пост.
|
bodope оставлено 06.08.2014(UTC)
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close