summaryrefslogtreecommitdiff
path: root/src/keys.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/keys.rs')
-rw-r--r--src/keys.rs28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/keys.rs b/src/keys.rs
index 16b943c..675eb61 100644
--- a/src/keys.rs
+++ b/src/keys.rs
@@ -1,6 +1,9 @@
+use crate::database::{Database, DbRsaKey};
+use anyhow::Result;
use base64::{Engine, engine::general_purpose::URL_SAFE_NO_PAD};
+use chrono::Utc;
use jsonwebtoken::{DecodingKey, EncodingKey};
-use rsa::pkcs8::{EncodePrivateKey, EncodePublicKey, DecodePrivateKey, DecodePublicKey};
+use rsa::pkcs8::{DecodePrivateKey, DecodePublicKey, EncodePrivateKey, EncodePublicKey};
use rsa::traits::PublicKeyParts;
use rsa::{RsaPrivateKey, RsaPublicKey};
use serde::Serialize;
@@ -8,9 +11,6 @@ use std::collections::HashMap;
use std::sync::{Arc, Mutex};
use std::time::{SystemTime, UNIX_EPOCH};
use uuid::Uuid;
-use chrono::Utc;
-use crate::database::{Database, DbRsaKey};
-use anyhow::Result;
#[derive(Clone)]
pub struct KeyPair {
@@ -56,28 +56,28 @@ impl KeyManager {
// Load existing keys from database
manager.load_keys_from_db()?;
-
+
// If no keys exist, generate the first one
if manager.keys.is_empty() {
manager.generate_new_key()?;
}
-
+
Ok(manager)
}
-
+
fn load_keys_from_db(&mut self) -> Result<()> {
let db_keys = {
let db = self.database.lock().unwrap();
db.get_all_rsa_keys()?
};
-
+
for db_key in db_keys {
let private_key = RsaPrivateKey::from_pkcs8_pem(&db_key.private_key_pem)?;
let public_key = RsaPublicKey::from_public_key_pem(&db_key.public_key_pem)?;
-
+
let encoding_key = EncodingKey::from_rsa_pem(db_key.private_key_pem.as_bytes())?;
let decoding_key = DecodingKey::from_rsa_pem(db_key.public_key_pem.as_bytes())?;
-
+
let key_pair = KeyPair {
kid: db_key.kid.clone(),
private_key,
@@ -86,14 +86,14 @@ impl KeyManager {
encoding_key,
decoding_key,
};
-
+
self.keys.insert(db_key.kid.clone(), key_pair);
-
+
if db_key.is_current {
self.current_key_id = Some(db_key.kid);
}
}
-
+
Ok(())
}
@@ -121,7 +121,7 @@ impl KeyManager {
created_at: now,
is_current: true, // This will be the new current key
};
-
+
{
let db = self.database.lock().unwrap();
db.create_rsa_key(&db_key)?;