From 3c8e12a8d231bee55ad9cd02e53417f605244f33 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 24 Jul 2022 18:14:56 +0800 Subject: [PATCH] feat: add update --- src/serve.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/serve.rs b/src/serve.rs index 57b61af..852867a 100644 --- a/src/serve.rs +++ b/src/serve.rs @@ -71,6 +71,7 @@ async fn response_requests( ) -> Result> { match (req.method(), req.uri().path()) { (&Method::POST, "/init") => init(req).await, + (&Method::POST, "/update") => update().await, (&Method::POST, "/decrypt") => decrypt(req).await, (&Method::POST, "/encrypt") => encrypt(req).await, (&Method::GET, "/status") => status().await, @@ -122,6 +123,17 @@ fn init_instance(db: &str) -> XResult { } } +fn update_instance_rsa_key_pair() -> XResult { + let mut startup_rw_lock = STATUP_RW_LOCK.write().expect("Lock write startup rw lock error"); + match &mut *startup_rw_lock { + Some(k) => { + k.instance_rsa_key_pair = jose::generate_rsa_key(4096)?; + Ok(true) + } + None => Ok(false), + } +} + #[derive(Serialize, Deserialize)] struct MultipleViewValue { value: Option, @@ -178,6 +190,17 @@ async fn inner_encrypt(req: Request) -> XResult<(StatusCode, Value)> { }) } +async fn update() -> Result> { + do_response!(inner_update().await) +} + +async fn inner_update() -> XResult<(StatusCode, Value)> { + let update = update_instance_rsa_key_pair()?; + Ok((StatusCode::OK, json!({ + "update": update, + }))) +} + async fn init(req: Request) -> Result> { do_response!(inner_init(req).await) }