Перейти к содержанию

Протокол

Оглавление

Схема классов

/svg/protos/key/keyapis/kms/v1/keyapis_kms_key_v1.proto.svg

keyapis/kms/v1/keyapis_kms_key_v1.proto

Сервис для генерации и хранения приватных и публичных ключей, в данном случае необходимых для подписи токена, находится в DMZ зоне, непосредственно не участвует в сценариях Партнёра

KmsService

Сервис KMS

Название метода Описание Тип запроса Тип ответа
PostKmsKeyGenerate Метод генерации пары ключей. Генерирует публичный и приватный ключи. Приватный ключ шифруется алгоритмом AES-GCM и сохранятеся в колонке kms.key_infos.encrypted_private_key. Формат хранения приватного ключа - строковое представление JSON: состоит из переменных: - Nonce: Number used once - представляет собой уникальный набор битов, используется один раз при шифровании блока данных в режиме GCM. - EncryptedString: зашифрованный приватный ключ в формате DER. - Tag: Message Authentication Code, используется для проверки целостности и подлинности данных после их расшифровки. Публичный ключ сохранятеся в колонке kms.key_infos.public_key в формате DER и передаётся в сервис JWKS методом PostKey. Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695357. Метод доступен для: admin, manager, service keyapis.kms.v1.PostKmsKeyGenerateRequest keyapis.kms.v1.PostKmsKeyGenerateResponse
GetKmsKeyList Метод получения ключей. Возвращает три последних ключа отсортированных по created_at DESC. Используется в административном интерфейсе, для отображения даты выпуска последней пары ключей. Сценарий использвания: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591. Метод доступен для: admin, manager, service keyapis.kms.v1.GetKmsKeyListRequest keyapis.kms.v1.GetKmsKeyListResponse stream

GetKmsKeyListRequest

Запрос на получение ключей

GetKmsKeyListResponse

Ответ на запрос на получение ключей

Поле Описание Тип Признак
data Ключ. В ключе должен отсутсвовать encrypted_private_key optional keyapis.kms.v1.KeyInfo

KeyInfo

Пара ключей.

Описание модели

Поле Описание Тип Признак
id Идентификатор. # Тип: Guid string REQUIRED
public_key Публичный ключ. # Диапазон: 0..800 string OUTPUT_ONLY
encrypted_private_key Приватный ключ в зашифрованном виде. # Диапазон: 0..4000 string OUTPUT_ONLY
created_at Дата и время создания ключа google.protobuf.Timestamp OUTPUT_ONLY
expired_at Дата и время истечения жизни ключа google.protobuf.Timestamp OUTPUT_ONLY

KeyInfo.GeneratingError

Ошибка генерации

Поле Описание Тип Признак
transaction Ошибка генерации ключа в сервисе KMS optional keyapis.kms.v1.KeyInfo.GeneratingError.TransactionError
publishing Ошибка сохранения публичного ключа в сервисе JWKS optional keyapis.kms.v1.KeyInfo.GeneratingError.PublishingKeyError

KeyInfo.GeneratingError.PublishingKeyError

Ошибка сохранения публичного ключа в сервисе JWKS. Причины: - Отсутсвует связанность с сервисом JWKS

KeyInfo.GeneratingError.TransactionError

Ошибка генерации ключа в сервисе KMS. Причины: - Отсутсвует связанность с базой данных

PostKmsKeyGenerateRequest

Запрос на генерацию пары ключей

PostKmsKeyGenerateResponse

Ответ на запрос на генерацию пары ключей

Поле Описание Тип Признак
data Идентификатор. # Тип: Guid optional string
error Ошибка optional keyapis.kms.v1.PostKmsKeyGenerateResponse.Error

PostKmsKeyGenerateResponse.Error

Ошибка

Поле Описание Тип Признак
generating Ошибка генерации ключей в сервисе KMS optional keyapis.kms.v1.KeyInfo.GeneratingError

Скалярные типы значений

.proto Type Примечание Python Go Ruby C# C++ Java PHP
double float float64 Float double double double float
float float float32 Float float float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int int32 Bignum or Fixnum (as required) int int32 int integer
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int/long int64 Bignum long int64 long integer/string
uint32 Uses variable-length encoding. int/long uint32 Bignum or Fixnum (as required) uint uint32 int integer
uint64 Uses variable-length encoding. int/long uint64 Bignum or Fixnum (as required) ulong uint64 long integer/string
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int int32 Bignum or Fixnum (as required) int int32 int integer
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int/long int64 Bignum long int64 long integer/string
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. int uint32 Bignum or Fixnum (as required) uint uint32 int integer
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. int/long uint64 Bignum ulong uint64 long integer/string
sfixed32 Always four bytes. int int32 Bignum or Fixnum (as required) int int32 int integer
sfixed64 Always eight bytes. int/long int64 Bignum long int64 long integer/string
bool boolean bool TrueClass/FalseClass bool bool boolean boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. str/unicode string String (UTF-8) string string String string
bytes May contain any arbitrary sequence of bytes. str []byte String (ASCII-8BIT) ByteString string ByteString string