В Jsrsasign информация о версии доступна как часть глобального пространства библиотеки. В зависимости от способа подключения (UMD, CommonJS или ES-модуль), версия может быть получена напрямую из экспортируемого объекта или глобальной переменной.
При подключении через браузерный билд:
console.log(jsrsasign.version);
или в некоторых сборках:
console.log(KJUR.version);
Значение версии представляет собой строку вида x.y.z и
отражает текущую сборку библиотеки. Эта информация используется при
диагностике совместимости криптографических операций и проверке
корректности подключённого пакета.
В Node.js окружении:
import { version } from "jsrsasign";
console.log(version);
Версия не влияет на криптографические вычисления напрямую, но критична при работе с различиями в реализации ASN.1 парсинга и обработке X.509 сертификатов между релизами.
Серийный номер является обязательным полем X.509 сертификата и используется для его уникальной идентификации в рамках удостоверяющего центра.
В Jsrsasign работа с серийным номером осуществляется через объект
X509.
Базовый сценарий начинается с загрузки сертификата:
const certPEM = `
-----BEGIN CERTIFICATE-----
MIID...
-----END CERTIFICATE-----
`;
const x509 = new X509();
x509.readCertPEM(certPEM);
После разбора сертификата серийный номер извлекается в шестнадцатеричном виде:
const serialHex = x509.getSerialNumberHex();
console.log(serialHex);
Серийный номер возвращается без префикса 0x и
представляет собой строку HEX-значений. Внутренне это значение хранится
как ASN.1 INTEGER и преобразуется библиотекой в строковое
представление.
Дополнительно можно получить десятичное представление через преобразование:
const serialBigInt = BigInt("0x" + serialHex);
console.log(serialBigInt.toString(10));
Версия X.509 сертификата определяет используемую структуру и допустимые расширения. В практике встречаются версии v1, v2 и v3, при этом наиболее распространена v3.
В Jsrsasign версия извлекается через метод объекта
X509:
const version = x509.getVersion();
console.log(version);
Возвращаемое значение обычно представлено числом:
0 — X.509 v11 — X.509 v22 — X.509 v3Для приведения к человекочитаемому виду используется простое сопоставление:
const versionMap = ["v1", "v2", "v3"];
console.log(versionMap[version]);
Версия сертификата важна при анализе наличия расширений, таких как Subject Alternative Name или Key Usage, которые поддерживаются только начиная с v3.
Алгоритм подписи определяет криптографическую схему, использованную удостоверяющим центром для подписи сертификата. В Jsrsasign доступно несколько способов извлечения этой информации.
const sigAlg = x509.getSignatureAlgorithmField();
console.log(sigAlg);
Результат обычно представляет собой строковое обозначение, например:
SHA256withRSASHA384withECDSASHA1withRSAЭтот формат удобен для логирования и анализа совместимости.
Для более низкоуровневого анализа используется OID:
const sigAlgOid = x509.getSignatureAlgorithmOID();
console.log(sigAlgOid);
OID представляет собой числовую точку-нотацию, например:
1.2.840.113549.1.1.11 (SHA256withRSA)Использование OID необходимо при сопоставлении алгоритмов в ASN.1 структурах и при валидации цепочек доверия.
Алгоритм ключа отличается от алгоритма подписи и описывает криптографическую природу открытого ключа внутри сертификата.
После загрузки сертификата:
const publicKey = x509.getPublicKey();
Тип ключа определяется через свойства объекта:
console.log(publicKey.type);
Возможные значения:
RSAECDSADSAДля RSA-ключей дополнительно доступны параметры модуля и экспоненты:
if (publicKey.type === "RSA") {
console.log(publicKey.n.toString(16)); // modulus
console.log(publicKey.e.toString(16)); // exponent
}
Для ECDSA ключей можно получить параметры кривой:
if (publicKey.type === "EC") {
console.log(publicKey.ecparams.curveName);
}
Эти три элемента находятся в разных частях ASN.1 структуры X.509:
TBSCertificatetbsCertificate.serialNumbersignatureAlgorithmJsrsasign абстрагирует ASN.1 разбор, предоставляя методы доступа без необходимости ручного декодирования структуры.
Пример комплексного извлечения:
const x509 = new X509();
x509.readCertPEM(certPEM);
const info = {
version: x509.getVersion(),
serial: x509.getSerialNumberHex(),
sigAlg: x509.getSignatureAlgorithmField(),
sigAlgOid: x509.getSignatureAlgorithmOID()
};
console.log(info);
Серийный номер может содержать ведущие нули, которые имеют значение в криптографическом контексте. Jsrsasign сохраняет их в HEX-форме, чтобы избежать потери точности.
Алгоритмы подписи могут отличаться по отображению в зависимости от версии сертификата и способа кодирования OID. В некоторых случаях библиотека возвращает нормализованные имена, даже если в ASN.1 используется альтернативное представление.
Версия сертификата влияет на доступность расширений, но не влияет на способ извлечения базовых полей — методы Jsrsasign остаются одинаковыми для всех версий X.509.