Пространство имён KJUR.asn1.ocsp в Jsrsasign реализует
набор ASN.1-структур и вспомогательных классов для формирования и
разбора OCSP-сообщений (Online Certificate Status Protocol). Основная
задача модуля — работа с запросами и ответами OCSP на уровне структуры
ASN.1, включая построение корректно закодированных DER-объектов,
соответствующих RFC 6960.
Модуль строится вокруг нескольких ключевых сущностей:
Каждая структура представлена в виде класса, наследующегося от
KJUR.asn1.ASN1Object или использующего композицию
ASN.1-элементов.
OCSPCertID используется для однозначной идентификации
сертификата, статус которого запрашивается через OCSP.
Идентификатор включает:
hashAlg — алгоритм (например SHA-1, SHA-256)issuerNameHash — хэш имени издателяissuerKeyHash — хэш публичного ключа издателяserial — серийный номер сертификатаconstructor(params)Создаёт объект идентификатора сертификата.
Параметры:
alg — алгоритм хешированияissuerName — ASN.1 структура имени издателяissuerKey — публичный ключ издателяserial — серийный номерgetEncodedHex()Возвращает DER-кодированное представление идентификатора в HEX-строке.
OCSPRequest формирует структуру запроса, отправляемого
OCSP-респонденту для проверки статуса одного или нескольких
сертификатов.
OCSPRequest включает:
Содержит:
Массив объектов Request, каждый из которых содержит
CertID.
constructor(params)Создаёт OCSP-запрос.
Параметры:
reqList — массив объектов запросаextensions — ASN.1 расширенияsigner — параметры подписи (если запрос
подписывается)setRequestList(requests)Устанавливает список проверяемых сертификатов.
Каждый элемент должен содержать:
certId — объект OCSPCertIDsetRequestorName(name)Добавляет имя инициатора запроса.
Используется редко и требует ASN.1 GeneralName структуры.
sign(privateKey, alg)Подписывает OCSP-запрос.
Параметры:
privateKey — приватный ключ в PEM или KEY форматеalg — алгоритм подписи (например SHA256withRSA)Результатом является добавление поля signature в ASN.1
структуру.
getEncodedHex()Возвращает полный OCSPRequest в DER HEX-формате.
OCSPResponse используется для разбора и формирования
ответов OCSP-сервера.
OCSPResponse включает:
Возможные значения:
constructor(params)Создаёт объект ответа OCSP.
Параметры:
status — код состоянияbasic — базовый ответ (BasicOCSPResponse)getStatus()Возвращает числовой код статуса ответа.
getBasicOCSPResponse()Извлекает объект BasicOCSPResponse, если он
присутствует.
Представляет основное содержимое успешного OCSP-ответа.
Включает:
Содержит:
Каждый элемент массива responses описывает статус одного
сертификата.
Может принимать значения:
getResponseList()Возвращает список проверенных сертификатов.
Каждый элемент содержит статус и временные метки.
getCertStatus(serialNumber)Позволяет получить статус сертификата по серийному номеру.
Возвращает:
verifySignature(publicKey)Проверяет подпись OCSP-ответа.
Параметры:
publicKey — публичный ключ OCSP-респондентаСодержит закодированные данные ответа:
Используется для указания алгоритма подписи:
Структура построения включает последовательность:
Процесс декодирования:
Все структуры OCSP опираются на базовые ASN.1 классы Jsrsasign:
ASN1ObjectASN1SequenceASN1IntegerASN1OctetStringASN1EnumeratedOCSP-модуль не выполняет криптографию напрямую, а использует внешние механизмы Jsrsasign для хэширования и подписи.
KJUR.asn1.ocsp тесно связан с:
KJUR.crypto — для хэширования и подписиKJUR.asn1.x509 — для работы с сертификатамиKJUR.asn1.ASN1Object — базовая ASN.1
инфраструктураТипичные ошибки при работе:
Обработка осуществляется через исключения Jsrsasign или возврат null-структур при парсинге.