Add endpoint to get server publishing keys
This commit is contained in:
parent
38af22fea6
commit
ef9ae82e75
5 changed files with 58 additions and 13 deletions
34
lib/matrix_server_web/controllers/key_controller.ex
Normal file
34
lib/matrix_server_web/controllers/key_controller.ex
Normal file
|
@ -0,0 +1,34 @@
|
|||
defmodule MatrixServerWeb.KeyController do
|
||||
use MatrixServerWeb, :controller
|
||||
|
||||
import MatrixServerWeb.Plug.Error
|
||||
|
||||
alias MatrixServer.SigningServer
|
||||
|
||||
@key_valid_time_ms 1000 * 60 * 24 * 30
|
||||
|
||||
def get_signing_keys(conn, _params) do
|
||||
keys =
|
||||
SigningServer.get_signing_keys()
|
||||
|> Enum.into(%{}, fn {key_id, key} ->
|
||||
{key_id, %{"key" => key}}
|
||||
end)
|
||||
|
||||
data = %{
|
||||
server_name: MatrixServer.server_name(),
|
||||
verify_keys: keys,
|
||||
old_verify_keys: %{},
|
||||
valid_until_ts: System.os_time(:millisecond) + @key_valid_time_ms
|
||||
}
|
||||
|
||||
case SigningServer.sign_object(data) do
|
||||
{:ok, signed_data} ->
|
||||
conn
|
||||
|> put_status(200)
|
||||
|> json(signed_data)
|
||||
|
||||
{:error, _msg} ->
|
||||
put_error(conn, :unknown, "Error signing object.")
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue