diff --git a/Cargo.toml b/Cargo.toml index 7e9442a..c452515 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ authors = [ [dependencies] async-trait = "0.1.59" rand = "0.8.5" -base64 = "0.20.0" +base64 = "0.22.0" sha2 = "0.10.6" hmac = "0.12.1" serde_json = "1.0.89" diff --git a/src/cookie_store.rs b/src/cookie_store.rs index ff6eaa5..d739f2b 100644 --- a/src/cookie_store.rs +++ b/src/cookie_store.rs @@ -1,4 +1,5 @@ use crate::{async_trait, Result, Session, SessionStore}; +use base64::{engine::general_purpose::STANDARD, Engine as _}; /// A session store that serializes the entire session into a Cookie. /// @@ -32,14 +33,14 @@ impl CookieStore { #[async_trait] impl SessionStore for CookieStore { async fn load_session(&self, cookie_value: String) -> Result> { - let serialized = base64::decode(cookie_value)?; + let serialized = STANDARD.decode(cookie_value)?; let session: Session = bincode::deserialize(&serialized)?; Ok(session.validate()) } async fn store_session(&self, session: Session) -> Result> { let serialized = bincode::serialize(&session)?; - Ok(Some(base64::encode(serialized))) + Ok(Some(STANDARD.encode(serialized))) } async fn destroy_session(&self, _session: Session) -> Result { diff --git a/src/session.rs b/src/session.rs index df4ba3d..62304d7 100644 --- a/src/session.rs +++ b/src/session.rs @@ -1,3 +1,4 @@ +use base64::{engine::general_purpose::STANDARD, Engine as _}; use rand::RngCore; use serde::{Deserialize, Serialize}; use std::{ @@ -91,7 +92,7 @@ impl Default for Session { fn generate_cookie(len: usize) -> String { let mut key = vec![0u8; len]; rand::thread_rng().fill_bytes(&mut key); - base64::encode(key) + STANDARD.encode(key) } impl Session { @@ -138,9 +139,9 @@ impl Session { /// # Ok(()) }) } /// ``` pub fn id_from_cookie_value(string: &str) -> Result { - let decoded = base64::decode(string)?; + let decoded = STANDARD.decode(string)?; let hash = blake3::hash(&decoded); - Ok(base64::encode(hash.as_bytes())) + Ok(STANDARD.encode(hash.as_bytes())) } /// mark this session for destruction. the actual session record