defmodule Chessh.SSH.ServerKey do
  alias Chessh.PlayerSession
  alias Chessh.Auth.KeyAuthenticator

  @behaviour :ssh_server_key_api

  @impl true
  def is_auth_key(key, username, _daemon_options) do
    PlayerSession.update_sessions_and_player_satisfies(
      username,
      fn player -> KeyAuthenticator.authenticate(player, key) end
    )
  end

  @impl true
  def host_key(algorithm, daemon_options) do
    :ssh_file.host_key(algorithm, daemon_options)
  end
end
