@startuml
!theme vibrant
title: 6.1. Получение публичного ключа для верификации JWT
skinparam maxMessageSize 300
autonumber

box "Компьютер пользователя" #DEDEDE
    participant "CLI Клиент" as client
    participant "Сервис шифрования" as cli_crypto
    database "Файловая система" as file
end box

box "GophKeeper" #d3f3fa
    participant "Обработчик запроса" as handler
    participant "Служба JavaScript Object Signing and Encryption" as jose
end box

client -> handler ++ : Отправляет запрос на получение публичного ключа
note over client, handler
    GET /api/v1/auth/certs HTTP/2.0
end note

handler -> jose ++ : Вызывает поведение получения публичного ключа
return Публичный ключ
return HTTP 200 Ok
note over client, handler
    200 OK HTTP/2.0
    Content-Type: application/json

    {"kty":"RSA","use":"sig","alg":"RS256","kid":"4Ecg...DE","n":"r3Yf...TQ","e":"AQAB"} 
end note
client -> cli_crypto ++ : Шифрует публичный ключ
return зашифрованные данные
client -> file: Сохраняет зашифрованные данные в файл
activate file
deactivate file
@enduml