# Generated by the protocol buffer compiler.  DO NOT EDIT!
# Source: keyapis/kms/v1/keyapis_kms_key_v1.proto for package 'Keyapis.Kms.V1'
# Original file comments:
#
# Сервис для генерации и хранения приватных и публичных ключей, в данном случае необходимых для подписи токена, находится в DMZ зоне, непосредственно не участвует в сценариях Партнёра

require 'grpc'
require 'keyapis/kms/v1/keyapis_kms_key_v1_pb'

module Keyapis
  module Kms
    module V1
      module KmsService
        # Сервис KMS
        class Service

          include ::GRPC::GenericService

          self.marshal_class_method = :encode
          self.unmarshal_class_method = :decode
          self.service_name = 'keyapis.kms.v1.KmsService'

          # Метод генерации пары ключей.
          # Генерирует публичный и приватный ключи.
          # Приватный ключ шифруется алгоритмом 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
          rpc :PostKmsKeyGenerate, ::Keyapis::Kms::V1::PostKmsKeyGenerateRequest, ::Keyapis::Kms::V1::PostKmsKeyGenerateResponse
          # Метод получения ключей.
          # Возвращает три последних ключа отсортированных по created_at DESC.
          # Используется в административном интерфейсе, для отображения даты выпуска последней пары ключей.
          # Сценарий использвания: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
          # Метод доступен для: admin, manager, service
          rpc :GetKmsKeyList, ::Keyapis::Kms::V1::GetKmsKeyListRequest, stream(::Keyapis::Kms::V1::GetKmsKeyListResponse)
        end

        Stub = Service.rpc_stub_class
      end
    end
  end
end
