Статус: Новичок
Группы: Участники
Зарегистрирован: 01.08.2024(UTC) Сообщений: 5 
|
Добрый день! Подскажите, я пытаюсь считать сертификат следующим образом: Цитата:// Функция для извлечения значений по ключу EXTRACTVALUE(key,inputString) { const regex = new RegExp(`${key}=([^,]+)`); const match = inputString.match(regex); return match && match[1] ? match[1].trim().replace(/^"|"$/g, '') : null; // Убираем кавычки, если они есть }
PARSE(base64Cert) { const self = this; // Сохраняем контекст в переменную return new Promise(function (resolve, reject){ cadesplugin.async_spawn(function* (args) {
var cert = yield cadesplugin.CreateObjectAsync("CAPICOM.Certificate"); yield cert.Import(base64Cert); var subjectname = yield cert.SubjectName var data = { O: self.EXTRACTVALUE('O',subjectname), C: self.EXTRACTVALUE('C',subjectname), S: self.EXTRACTVALUE('S',subjectname), L: self.EXTRACTVALUE('L',subjectname), STREET: self.EXTRACTVALUE('STREET',subjectname), ОГРН: self.EXTRACTVALUE('ОГРН',subjectname), ИНН: self.EXTRACTVALUE('ИНН',subjectname), СНИЛС: self.EXTRACTVALUE('СНИЛС',subjectname), CN: self.EXTRACTVALUE('CN',subjectname), SN: self.EXTRACTVALUE('SN',subjectname), G: self.EXTRACTVALUE('G',subjectname), OU: self.EXTRACTVALUE('OU',subjectname), T: self.EXTRACTVALUE('T',subjectname), E: self.EXTRACTVALUE('E',subjectname), PublicKey : yield cert.PublicKey, SerialNumber : yield cert.SerialNumber, DateBegin : yield cert.ValidFromDate, DateEnd : yield cert.ValidToDate } const dataString = JSON.stringify(data, null, 2); window.cert_info = dataString;; return args[0](data); }, resolve, reject); }); } Мне необходимо также получить значения OID.1.2.643.4.14.3.1.2 и 1.3.6.1.4.1.10244.4.3:Пробовала разные подходы: 1) Цитата:var extensions = yield cert.Extensions(); var extensionsCount = yield extensions.Count; for (var j = 1; j <= extensionsCount; j++) { var ext = yield extensions.Item(j); // Получаем элемент расширения var oidObject = yield ext.OID; // Получаем OID var oid = yield oidObject.Value; // Получаем строковое значение OID var noid = yield oidObject.Name; // Получаем строковое значение OID var foid = yield oidObject.FriendlyName; // Получаем строковое значение OID if (oid == "1.2.643.4.14.3.1.2") { console.log("Found OID: " + oid + " Value: " + val); } if (oid == "1.3.6.1.4.1.10244.4.3") { console.log("Found OID: " + oid + " Value: " + val); } } 2) через Цитата:var eku = yield cert.ExtendedKeyUsage(); // Получаем строковое значение OID var ekuCount = yield eku.OID; console.log("ekuCount: " + ekuCount); // Вывод значения
var ekuCount = yield eku.Item(1); console.log("ekuCount: " + ekuCount); // Вывод значения вообще далеко не продвинулось. Подскажите, как можно получить значения конкретно этих OID через cadesplugin в случае если сертификат в хранилище еще не установлен (требуется получить само "содержимое" конкретного OID)
|