ezidam: on launch: in testing environment, use premade keys, else generate them

This commit is contained in:
Philippe Loctaux 2023-03-12 19:20:00 +01:00
parent d62cfcd1d9
commit 36fb1cff52

View file

@ -61,48 +61,70 @@ impl Database {
); );
} }
None => { None => {
info!("No valid keys are present. Starting generation..."); // When running tests, import premade keys to save time
// Otherwise, generate keys
let (key_id, private, public) = if cfg!(test) {
use std::str::FromStr;
// Generate key id info!("Importing testing keys");
let key_id = match task::spawn_blocking(id::KeyID::default).await {
Ok(key_id) => {
info!("Generated KeyID {}", key_id);
key_id
}
Err(e) => {
error!("Failed to run KeyID generation: {}", e);
return Err(rocket);
}
};
// Generate keys let key_id = id::KeyID::from_str("SgTG8ulMHAp5UsGWuCclw36zWsdEo5").unwrap();
info!("Starting key generation. This should not be long."); let private_key = jwt::PrivateKey::from_der(
let key_id_for_generation = key_id.clone(); include_bytes!("../../jwt/tests/private_key.der"),
let new_keys = match task::spawn_blocking(move || { &key_id,
jwt::generate(&key_id_for_generation) )
}) .unwrap();
.await let public_key = jwt::PublicKey::from_der(
{ include_bytes!("../../jwt/tests/public_key.der"),
Ok(res) => match res { &key_id,
Ok(keys) => { )
info!("Generated public and private key! Starting to save in database."); .unwrap();
keys
(key_id, private_key, public_key)
} else {
info!("No valid keys are present. Starting generation...");
// Generate key id
let key_id = match task::spawn_blocking(id::KeyID::default).await {
Ok(key_id) => {
info!("Generated KeyID {}", key_id);
key_id
} }
Err(e) => { Err(e) => {
error!("Failed to generate keys: {}", e); error!("Failed to run KeyID generation: {}", e);
return Err(rocket); return Err(rocket);
} }
}, };
Err(e) => {
error!("Failed to run key generation: {}", e); // Generate keys
return Err(rocket); info!("Starting key generation. This should not be long.");
} let key_id_for_generation = key_id.clone();
let new_keys = match task::spawn_blocking(move || {
jwt::generate(&key_id_for_generation)
})
.await
{
Ok(res) => match res {
Ok(keys) => {
info!("Generated public and private key! Starting to save in database.");
keys
}
Err(e) => {
error!("Failed to generate keys: {}", e);
return Err(rocket);
}
},
Err(e) => {
error!("Failed to run key generation: {}", e);
return Err(rocket);
}
};
(key_id, new_keys.0, new_keys.1)
}; };
// Insert keys in database // Insert keys in database
match jwt::database::save_new_keys(&db.0, &key_id, &new_keys.0, &new_keys.1) match jwt::database::save_new_keys(&db.0, &key_id, &private, &public).await {
.await
{
Ok(Some(())) => { Ok(Some(())) => {
info!("Saved keys with id {}", key_id); info!("Saved keys with id {}", key_id);
} }