diff options
Diffstat (limited to 'src/keys.rs')
| -rw-r--r-- | src/keys.rs | 28 |
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)?; |
