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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline bodope  
#1 Оставлено : 4 августа 2014 г. 17:25:25(UTC)
bodope

Статус: Новичок

Группы: Участники
Зарегистрирован: 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();


Буду рад помощи.
Offline Новожилова Елена  
#2 Оставлено : 4 августа 2014 г. 17:53:14(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Здравствуйте!

В какой момент возникает ошибка?
Offline bodope  
#3 Оставлено : 4 августа 2014 г. 17:56:01(UTC)
bodope

Статус: Новичок

Группы: Участники
Зарегистрирован: 04.08.2014(UTC)
Сообщений: 8

Сказал(а) «Спасибо»: 1 раз
На этой строчке:
Код:

var str = enrollment.CreateRequest(1);

Offline Новожилова Елена  
#4 Оставлено : 4 августа 2014 г. 19:21:52(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 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) ;
        }
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
bodope оставлено 06.08.2014(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.