From 1539d31566e1663fc94b8199c78b523c1bfe46d3 Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Mon, 6 Oct 2025 07:04:50 +0100 Subject: [PATCH 1/2] Update base64 dependency from 0.20 to 0.22 Since base64 is re-exported, this is an API-breaking change. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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" From d46eff4b3c1c70e421f04d963b8d5f683f6e4e33 Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Mon, 6 Oct 2025 07:08:18 +0100 Subject: [PATCH 2/2] Use base64 engine APIs instead of encode/decode The `base64::encode`/`base64::decode` APIs were deprecated in version 0.21. See https://docs.rs/base64/latest/base64/index.html#usage. --- src/cookie_store.rs | 5 +++-- src/session.rs | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) 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