diff --git a/examples/claims.rs b/examples/claims.rs index 850b828..d24c056 100644 --- a/examples/claims.rs +++ b/examples/claims.rs @@ -29,7 +29,7 @@ fn main() { company: "ACME".to_owned() }; let key = "secret"; - let token = match encode(Header::default(), &my_claims, key.as_ref()) { + let token = match encode(&Header::default(), &my_claims, key.as_ref()) { Ok(t) => t, Err(_) => panic!() // in practice you would return the error }; diff --git a/examples/custom_header.rs b/examples/custom_header.rs index b09def8..c93bccc 100644 --- a/examples/custom_header.rs +++ b/examples/custom_header.rs @@ -23,7 +23,7 @@ fn main() { header.kid = Some("signing_key".to_owned()); header.alg = Algorithm::HS512; - let token = match encode(header, &my_claims, key.as_ref()) { + let token = match encode(&header, &my_claims, key.as_ref()) { Ok(t) => t, Err(_) => panic!() // in practice you would return the error }; diff --git a/src/crypto.rs b/src/crypto.rs index 7161c69..f93e653 100644 --- a/src/crypto.rs +++ b/src/crypto.rs @@ -72,7 +72,7 @@ pub fn sign(signing_input: &str, key: &[u8], algorithm: Algorithm) -> Result(header: Header, claims: &T, key: &[u8]) -> Result { +pub fn encode(header: &Header, claims: &T, key: &[u8]) -> Result { let encoded_header = to_jwt_part(&header)?; let encoded_claims = to_jwt_part(&claims)?; let signing_input = [encoded_header.as_ref(), encoded_claims.as_ref()].join("."); diff --git a/src/serialization.rs b/src/serialization.rs index fb22d23..be4d736 100644 --- a/src/serialization.rs +++ b/src/serialization.rs @@ -15,13 +15,13 @@ pub struct TokenData { pub claims: T } -/// Serializes and encodes to base64 +/// Serializes to JSON and encodes to base64 pub fn to_jwt_part(input: &T) -> Result { let encoded = serde_json::to_string(input)?; Ok(base64::encode_config(encoded.as_bytes(), base64::URL_SAFE_NO_PAD)) } -/// Decodes from base64 and deserializes +/// Decodes from base64 and deserializes from JSON pub fn from_jwt_part, T: Deserialize>(encoded: B) -> Result { let decoded = base64::decode_config(encoded.as_ref(), base64::URL_SAFE_NO_PAD)?; let s = String::from_utf8(decoded)?; diff --git a/tests/lib.rs b/tests/lib.rs index 091ee46..abca7f1 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -33,7 +33,7 @@ fn encode_with_custom_header() { }; let mut header = Header::default(); header.kid = Some("kid".to_string()); - let token = encode(header, &my_claims, "secret".as_ref()).unwrap(); + let token = encode(&header, &my_claims, "secret".as_ref()).unwrap(); let token_data = decode::(&token, "secret".as_ref(), Algorithm::HS256).unwrap(); assert_eq!(my_claims, token_data.claims); assert_eq!("kid", token_data.header.kid.unwrap()); @@ -45,7 +45,7 @@ fn round_trip_claim() { sub: "b@b.com".to_string(), company: "ACME".to_string() }; - let token = encode(Header::default(), &my_claims, "secret".as_ref()).unwrap(); + let token = encode(&Header::default(), &my_claims, "secret".as_ref()).unwrap(); let token_data = decode::(&token, "secret".as_ref(), Algorithm::HS256).unwrap(); assert_eq!(my_claims, token_data.claims); assert!(token_data.header.kid.is_none()); diff --git a/tests/rsa.rs b/tests/rsa.rs index ce8fa07..6d678ce 100644 --- a/tests/rsa.rs +++ b/tests/rsa.rs @@ -25,7 +25,7 @@ fn round_trip_claim() { sub: "b@b.com".to_string(), company: "ACME".to_string() }; - let token = encode(Header::new(Algorithm::RS256), &my_claims, include_bytes!("private_rsa_key.der")).unwrap(); + let token = encode(&Header::new(Algorithm::RS256), &my_claims, include_bytes!("private_rsa_key.der")).unwrap(); let token_data = decode::(&token, include_bytes!("public_rsa_key.der"), Algorithm::RS256).unwrap(); assert_eq!(my_claims, token_data.claims); assert!(token_data.header.kid.is_none());