9737c787f9
Инфраструктура M2M (живой обмен с НРД через ИШ): - обработка M2MTransferResponse: ERROR(M2Mxx) → заявка Отклонена, сохранение ответа; INFO → ждём Decision; идемпотентность поллера - fallback-корреляция ответов с нулевым GUID (M2M14/M2M17) по FIFO - сырой XML ответа НРД в карточке заявки (для пересылки в ТП) - тестовый пакет роботу приведён к эталону m2m_robot_samples (CostInfo=Yes, 4 бумаги, IsolationStatus, DocumentSeries=сценарий); override паспорта - редирект из теста сразу в карточку заявки Мастер установки ключа Валидаты на флешку (admin/setup/keywizard): - пошаговый: загрузка .7z+пароль → выбор флешки → запись → справочник сертификатов (CRL) → перезапуск+проверка ИШ → готово - привилегированный воркер (bj-keymedia) в host-namespace через файл-обмен, bj-server остаётся в песочнице - сохранение структуры профиля архива (spr<N>), перечисление съёмных USB Прочее: - пакет-доказательство для ТП НРД + форма регистрации участника M2M - эталонные образцы робота (DOC/m2m_robot_samples) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
114 lines
4.2 KiB
Protocol Buffer
114 lines
4.2 KiB
Protocol Buffer
syntax = "proto3";
|
||
|
||
package bridge_and_joins.crypto.v1;
|
||
|
||
option go_package = "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/cryptocli/cryptopb;cryptopb";
|
||
option java_package = "ru.zetit.bridgeandjoins.crypto.v1";
|
||
option java_multiple_files = true;
|
||
|
||
// CryptoService — серверная криптография по ГОСТ через КриптоПро JCP.
|
||
// Слушает на Unix Domain Socket (по умолчанию /run/bj/crypto.sock).
|
||
service CryptoService {
|
||
// Проверка XMLDSig-подписи (ГОСТ или RSA). Возвращает сведения о
|
||
// подписанте: CN, ИНН (если есть), срок действия сертификата.
|
||
rpc VerifyXMLDSig(VerifyRequest) returns (VerifyResponse);
|
||
|
||
// Подпись XML по ГОСТ — для резервного канала WS ONYX и для
|
||
// серверной подписи действий оператора в admin-ui.
|
||
rpc SignXMLDSig(SignRequest) returns (SignResponse);
|
||
|
||
// Health-check.
|
||
rpc Health(HealthRequest) returns (HealthResponse);
|
||
|
||
// Activate — переинициализирует провайдер Валидаты на указанный
|
||
// профиль из pki1.conf. Если profile пуст — переходит в
|
||
// VCERT_InitMinimal (без доступа к ПСП/ЛСП/ССС). Не требует
|
||
// перезапуска сайдкара.
|
||
rpc Activate(ActivateRequest) returns (ActivateResponse);
|
||
|
||
// Shutdown — корректно завершает процесс сайдкара (System.exit(2)
|
||
// после отправки ответа). systemd с Restart=on-failure поднимет
|
||
// его снова через RestartSec секунд. Используется для UI-кнопки
|
||
// «Перезапустить crypto-service» без sudo.
|
||
rpc Shutdown(ShutdownRequest) returns (ShutdownResponse);
|
||
}
|
||
|
||
message ActivateRequest {
|
||
// Имя профиля в pki1.conf. Пустая строка = minimal mode.
|
||
string profile = 1;
|
||
}
|
||
|
||
message ActivateResponse {
|
||
// true если провайдер успешно (пере)инициализирован.
|
||
bool ok = 1;
|
||
// Имя активного провайдера ("validata" / "stub").
|
||
string provider = 2;
|
||
// Имя активного профиля (пусто для minimal).
|
||
string profile = 3;
|
||
// Сообщение о результате (для UI).
|
||
string message = 4;
|
||
}
|
||
|
||
message ShutdownRequest {}
|
||
|
||
message ShutdownResponse {
|
||
// true означает «запрос принят, процесс завершится через ~500ms».
|
||
bool ok = 1;
|
||
}
|
||
|
||
message VerifyRequest {
|
||
// Целиком подписанный XML.
|
||
bytes payload = 1;
|
||
|
||
// Профиль ключей и сертификатов: "guest-gost" | "test3-gost" |
|
||
// "prod-gost" | "guest-rsa" | ... — определяет хранилище и trust store.
|
||
string profile = 2;
|
||
}
|
||
|
||
message VerifyResponse {
|
||
// Прошла ли проверка.
|
||
bool valid = 1;
|
||
|
||
// CN из сертификата подписанта.
|
||
string signer_cn = 2;
|
||
|
||
// ИНН из сертификата (если присутствует в OID 1.2.643.3.131.1.1).
|
||
string signer_inn = 3;
|
||
|
||
// Серийный номер сертификата (hex).
|
||
string serial = 4;
|
||
|
||
// Срок действия сертификата (unix epoch, секунды).
|
||
int64 not_before = 5;
|
||
int64 not_after = 6;
|
||
|
||
// Тексты ошибок проверки (если valid=false).
|
||
repeated string errors = 7;
|
||
}
|
||
|
||
message SignRequest {
|
||
// Канонизированный XML, который нужно подписать.
|
||
bytes payload = 1;
|
||
|
||
// Алиас ключа в JCP-keystore.
|
||
string key_alias = 2;
|
||
|
||
// Профиль (тот же что у Verify).
|
||
string profile = 3;
|
||
}
|
||
|
||
message SignResponse {
|
||
// Подписанный XML (с детачированной или встроенной подписью —
|
||
// зависит от профиля).
|
||
bytes signed_xml = 1;
|
||
}
|
||
|
||
message HealthRequest {}
|
||
|
||
message HealthResponse {
|
||
bool ok = 1;
|
||
string version = 2;
|
||
// Активный провайдер криптографии: "cryptopro" | "validata" | "vipnet" | "stub".
|
||
string provider = 3;
|
||
}
|