From 0a5ab5a19998ebff384f49f30294d3c5e725e85f Mon Sep 17 00:00:00 2001 From: Xiretza Date: Sat, 10 Feb 2024 11:40:00 +0000 Subject: [PATCH] Add /generate-user-server-key-2 prototype --- src/server.rs | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/src/server.rs b/src/server.rs index 316bf8c..9370578 100644 --- a/src/server.rs +++ b/src/server.rs @@ -9,14 +9,18 @@ use secrecy::ExposeSecret; use serde::{Deserialize, Serialize}; use tracing::{event, instrument, Level}; -use crate::auth::AuthenticationError; -use crate::secrets::{Password, UserToken}; +use crate::auth::{AuthenticationError, UserServerKeyGenerator}; +use crate::secrets::{Password, ServerHash, UserToken}; #[instrument] pub async fn run() -> color_eyre::Result<()> { let app = Router::new() .route("/tls-check/success", get(|| async { "OK" })) - .route("/api-login", post(api_login)); + .route("/api-login", post(api_login)) + .route( + "/generate-user-server-key-2", + post(generate_user_server_key_2), + ); let listener = tokio::net::TcpListener::bind("[::]:8080").await?; axum::serve(listener, app).await?; @@ -79,3 +83,38 @@ async fn api_login( token: user_token.0.expose_secret().to_owned(), })) } + +#[derive(Debug, Clone, Deserialize)] +struct UserServerKeyRequest { + username: String, + token: UserToken, + server_hash: ServerHash, +} + +#[derive(Debug, Clone, Serialize)] +struct UserServerKeyResponse { + server_key: String, + server_key_timestamp: String, +} + +#[instrument] +async fn generate_user_server_key_2( + Query(ApiVersion { api_version }): Query, + Form(UserServerKeyRequest { + username, + token, + server_hash, + }): Form, +) -> ApiResult> { + event!(Level::WARN, "Creating dummy user_server_key"); + + let generator: UserServerKeyGenerator = todo!(); + let (server_key, server_key_timestamp) = generator + .generate_user_server_key(&username, &token, &server_hash) + .await?; + + Ok(Json(UserServerKeyResponse { + server_key: server_key.0.expose_secret().to_owned(), + server_key_timestamp, + })) +}