From 3d6fc65a520e87bf5ed27b298a86081f6d61f661 Mon Sep 17 00:00:00 2001 From: Arsenii Kulikov Date: Wed, 11 Jun 2025 01:14:19 +0200 Subject: [PATCH] fix: correctly decode jwt keys --- crates/rpc-types-engine/src/jwt.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/crates/rpc-types-engine/src/jwt.rs b/crates/rpc-types-engine/src/jwt.rs index 3d44dc29ebc..6986313d27c 100644 --- a/crates/rpc-types-engine/src/jwt.rs +++ b/crates/rpc-types-engine/src/jwt.rs @@ -172,7 +172,7 @@ impl JwtSecret { /// /// This strips the leading `0x`, if any. pub fn from_hex>(hex: S) -> Result { - let hex = hex.as_ref(); + let hex = hex.as_ref().trim(); match hex::decode_to_array(hex) { Ok(b) => Ok(Self(b)), Err(hex::FromHexError::InvalidStringLength | hex::FromHexError::OddLength) => { @@ -291,11 +291,19 @@ mod tests { #[test] fn from_hex() { let key = "f79ae8046bc11c9927afe911db7143c51a806c4a537cc08e0d37140b0192f430"; - let secret: Result = JwtSecret::from_hex(key); - assert!(secret.is_ok()); + let secret_0: Result = JwtSecret::from_hex(key); + assert!(secret_0.is_ok()); - let secret: Result = JwtSecret::from_hex(key); - assert!(secret.is_ok()); + let key = "0xf79ae8046bc11c9927afe911db7143c51a806c4a537cc08e0d37140b0192f430"; + let secret_1: Result = JwtSecret::from_hex(key); + assert!(secret_1.is_ok()); + + let key = "0xf79ae8046bc11c9927afe911db7143c51a806c4a537cc08e0d37140b0192f430 "; + let secret_2: Result = JwtSecret::from_hex(key); + assert!(secret_2.is_ok()); + + assert_eq!(secret_0.as_ref().unwrap().clone(), secret_1.unwrap()); + assert_eq!(secret_0.unwrap(), secret_2.unwrap()); } #[test]