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); } 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; }