Приложение Б

Проверки Приложения Б — проверки обработки некорректных запросов прикладного программного интерфейса, дополняющие проверки Приложения А. Проверки выполняются последовательно: сначала проверки Приложения А, затем Приложения Б; внутри приложения — в порядке возрастания номеров.

Б.1 Проверка обработки запроса с несуществующим ОГРН

Проверка подтверждает, что запросы к методам реестра с указанием ОГРН, не зарегистрированного в реестре удостоверяющих центров, а также с ОГРН, не прошедшим форматно-логический контроль, отклоняются с возвратом кода ошибки. Проверка дополняет проверку А.2: приёму корректных сведений об удостоверяющем центре противопоставляется отказ в обработке недостоверных сведений.

Предварительные условия: развёрнут тестовый стенд; демонстрирующему предоставлен ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «История аккредитаций УЦ» (GET /ca/{ogrn}/accreditation) с ОГРН, отсутствующим в реестре удостоверяющих центров:
curl -X GET 'http://{host}:{port}/ca/9999999999999/accreditation' -H 'x-api-key: {ключ доступа}'

HTTP 200; запрос отклонён с возвратом кода ошибки ввиду отсутствия удостоверяющего центра в реестре; перечень событий аккредитации не возвращён

2

Выполнить запрос «Регистрация УЦ» (POST /ca/create) с ОГРН, не прошедшим форматно-логический контроль (12 цифр вместо 13):
curl -X POST 'http://{host}:{port}/ca/create' -H 'Content-Type: application/json' -H 'x-api-key: {ключ доступа}' -d '{"subjectOGRN": "102770006734", "subjectINN": "7743020560", "subjectName": "АКЦИОНЕРНОЕ ОБЩЕСТВО «ИНФОТЕКС ИНТЕРНЕТ ТРАСТ»", "subjectAddress": "107078, Москва, г. Москва, ул. Мишина, д. 56, стр. 2, эт. 2, пом. IX, ком. 11"}'

HTTP 200; запрос отклонён с возвратом кода ошибки по результатам форматно-логического контроля; запись «Удостоверяющий центр» не создана

Б.2 Проверка обработки идентификатора сертификата с недопустимыми символами

Проверка подтверждает, что запрос логической отмены сертификата с идентификатором, содержащим недопустимые символы (кириллицу), отклоняется с возвратом кода ошибки разбора идентификатора. Проверка дополняет проверку А.1: корректному идентификатору записи вида «дата начала действия;hashTBS» противопоставляется идентификатор с недопустимыми символами в части значения хэш-функции.

Предварительные условия: развёрнут тестовый стенд с каналами сертификатов УКЭП; демонстрирующему предоставлен ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «Логическая отмена» (POST /certificate/qual/cancel), передав идентификатор сертификата с кириллицей в части значения хэш-функции:
curl -X POST 'http://{host}:{port}/certificate/qual/cancel' -H 'Content-Type: application/json' -H 'x-api-key: {ключ доступа}' -d '{"cert": "2025-03-15T09:00:00Z;сертификат"}'

HTTP 200; возвращён код ошибки ERR-0731 «Ошибка разбора идентификатора cert»; логическая отмена сертификата не выполнена, запись о сертификате не изменена

Б.3 Проверка обработки даты изменения статуса с неверным форматом

Проверка подтверждает, что запросы изменения статуса сертификата с датой и временем вступления изменения в силу, заданными в неверном формате, отклоняются с возвратом кода ошибки. Проверка дополняет проверку А.1: корректному значению updatedAt противопоставляется значение, не соответствующее установленному формату.

Предварительные условия: развёрнут тестовый стенд с каналами сертификатов УКЭП и УНЭП; имеются идентификаторы зарегистрированных сертификатов {cert} (результаты проверок А.1 и А.7); демонстрирующему предоставлен ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «Изменить статус сертификата в приватном канале» (POST /certificate/qual/status-update), передав updatedAt в неверном формате:
curl -X POST 'http://{host}:{port}/certificate/qual/status-update' -H 'Content-Type: application/json' -H 'x-api-key: {ключ доступа}' -d '{"cert": "{cert}", "event": "2", "updatedAt": "01.01.2026", "reason": "1"}'

HTTP 200; возвращён код ошибки ERR-0802 «У поля updatedAt некорректный формат»; статус сертификата не изменён, новое событие истории не сформировано

2

Выполнить запрос «Изменить статус сертификата в приватном канале» (POST /certificate/unqual/status-update), передав updatedAt в неверном формате:
curl -X POST 'http://{host}:{port}/certificate/unqual/status-update' -H 'Content-Type: application/json' -H 'x-api-key: {ключ доступа}' -d '{"cert": "{cert}", "event": "2", "updatedAt": "31.02.2025"}'

HTTP 200; возвращён код ошибки ERR-0802 «У поля updatedAt некорректный формат»; статус сертификата не изменён, новое событие истории не сформировано

Б.4 Проверка обработки идентификатора несуществующего сертификата

Проверка подтверждает, что запросы представлений данных о сертификате с идентификатором, отсутствующим в реестре, отклоняются с возвратом кода ошибки. Проверка дополняет проверки А.6 и А.8: корректному идентификатору зарегистрированного сертификата противопоставляется корректный по формату идентификатор несуществующего сертификата.

Предварительные условия: развёрнут тестовый стенд; демонстрирующему предоставлен ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «История статуса сертификата» (GET /certificate-validity/qual/all) с идентификатором, корректным по формату, но отсутствующим в реестре:
curl -X GET 'http://{host}:{port}/certificate-validity/qual/all?cert=2020-01-01T00:00:00Z;9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' -H 'x-api-key: {ключ доступа}'

HTTP 200; возвращён код ошибки ERR-0729 «Отсутствует сертификат»; история изменения статуса не возвращена

2

Выполнить запрос «История изменения статуса неквалифицированного сертификата» (GET /certificate-validity/unqual/all) с идентификатором, корректным по формату, но отсутствующим в реестре:
curl -X GET 'http://{host}:{port}/certificate-validity/unqual/all?cert=2020-01-01T00:00:00Z;9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' -H 'x-api-key: {ключ доступа}'

HTTP 200; возвращён код ошибки ERR-0729 «Отсутствует сертификат»; история изменения статуса не возвращена

Б.5 Проверка обработки запроса создания сертификата при отсутствии промежуточных сертификатов

Проверка подтверждает, что запрос создания нового сертификата отклоняется, если цепочка сертификатов от создаваемого сертификата до корневого сертификата удостоверяющего центра не выстраивается: сертификат промежуточного удостоверяющего центра, подписавшего создаваемый сертификат, не зарегистрирован в реестре. Проверка дополняет проверку А.1: корректной цепочке сертификатов противопоставляется цепочка без промежуточного сертификата.

Предварительные условия: развёрнут тестовый стенд с каналами сертификатов УКЭП; демонстрирующему предоставлены тестовый сертификат {cert_no_chain} — сертификат, подписанный промежуточным удостоверяющим центром, сертификат которого не зарегистрирован в реестре, — и ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «Внесение квалифицированного сертификата» (POST /certificate/qual/create), передав {cert_no_chain}:
curl -X POST 'http://{host}:{port}/certificate/qual/create' -H 'Content-Type: application/json' -H 'x-api-key: {ключ доступа}' -d '{"certificate": "{cert_no_chain}"}'

HTTP 200; возвращён код ошибки о невозможности построения цепочки сертификатов; запись о сертификате не создана

Б.6 Проверка обработки запроса создания сертификата при отозванном промежуточном сертификате

Проверка подтверждает, что запрос создания нового сертификата отклоняется, если промежуточный сертификат цепочки отозван. Проверка дополняет проверку А.1: действующей цепочке сертификатов противопоставляется цепочка с отозванным промежуточным сертификатом.

Предварительные условия: развёрнут тестовый стенд с каналами сертификатов УКЭП; демонстрирующему предоставлены тестовый сертификат {cert_revoked_chain} — сертификат, подписанный промежуточным удостоверяющим центром, сертификат которого отозван, — и ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «Внесение квалифицированного сертификата» (POST /certificate/qual/create), передав {cert_revoked_chain}:
curl -X POST 'http://{host}:{port}/certificate/qual/create' -H 'Content-Type: application/json' -H 'x-api-key: {ключ доступа}' -d '{"certificate": "{cert_revoked_chain}"}'

HTTP 200; возвращён код ошибки о недействительности цепочки сертификатов; запись о сертификате не создана

Б.7 Проверка обработки запроса создания сертификата при недействующем сертификате удостоверяющего центра

Проверка подтверждает, что запрос создания нового сертификата отклоняется, если сертификат удостоверяющего центра, подписавшего создаваемый сертификат, не действует на дату подписания. Проверка дополняет проверку А.1: действующему сертификату удостоверяющего центра противопоставляется недействующий.

Предварительные условия: развёрнут тестовый стенд с каналами сертификатов УКЭП; демонстрирующему предоставлены тестовый сертификат {cert_expired_ca} — сертификат, подписанный удостоверяющим центром, сертификат которого не действует на дату подписания, — и ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «Внесение квалифицированного сертификата» (POST /certificate/qual/create), передав {cert_expired_ca}:
curl -X POST 'http://{host}:{port}/certificate/qual/create' -H 'Content-Type: application/json' -H 'x-api-key: {ключ доступа}' -d '{"certificate": "{cert_expired_ca}"}'

HTTP 200; возвращён код ошибки о недействительности сертификата удостоверяющего центра; запись о сертификате не создана

Б.8 Проверка обработки запроса сведений о сертификате, цепочка сертификатов которого не действует

Проверка подтверждает, что по зарегистрированному в реестре сертификату, цепочка сертификатов которого перестала действовать, сертификат не признаётся действующим, при этом запись о сертификате в реестре сохраняется. Проверка дополняет проверки А.1 и А.7: действующей цепочке сертификатов противопоставляется цепочка с отозванным промежуточным сертификатом и цепочка с недействующим сертификатом удостоверяющего центра.

Предварительные условия: развёрнут тестовый стенд с каналами сертификатов УКЭП; демонстрирующему предоставлены идентификаторы зарегистрированных сертификатов {cert_1} — сертификат, промежуточный сертификат цепочки которого отозван, и {cert_2} — сертификат, сертификат удостоверяющего центра которого не действует, — и ключ доступа к REST API (заголовок x-api-key).

№

Шаг

Ожидаемый результат

1

Выполнить запрос «Получение сведений о сертификате» (GET /certificate/qual/{cert}/info), передав {cert_1}:
curl -X GET 'http://{host}:{port}/certificate/qual/{cert_1}/info' -H 'x-api-key: {ключ доступа}'

HTTP 200; возвращены сведения о сертификате; сертификат не признаётся действующим ввиду отозванного промежуточного сертификата; запись о сертификате в реестре сохраняется

2

Выполнить запрос «Получение сведений о сертификате» (GET /certificate/qual/{cert}/info), передав {cert_2}:
curl -X GET 'http://{host}:{port}/certificate/qual/{cert_2}/info' -H 'x-api-key: {ключ доступа}'

HTTP 200; возвращены сведения о сертификате; сертификат не признаётся действующим ввиду недействующего сертификата удостоверяющего центра; запись о сертификате в реестре сохраняется