diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/src/main.rs b/src/main.rs index b096410..c123572 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,13 @@ use std::env; +use std::fs::File; +use std::io::Read; extern crate jsonwebtoken as jwt; #[macro_use] extern crate serde_derive; extern crate serde_json; -use jwt::dangerous_unsafe_decode; +use jwt::{decode, Validation, Algorithm}; #[derive(Debug, Serialize, Deserialize)] struct Claims { @@ -17,25 +19,36 @@ struct Claims { } fn main() { + println!("reading key"); + let mut f = File::open("foo").unwrap(); + let bufsize = 1024 * 1024; + + let mut key = vec![0; bufsize]; + f.read(&mut key).unwrap(); + println!("key len {}", key.len()); + + println!("finding tokens on command line"); let mut tokens = env::args(); tokens.next(); + for token in tokens { - decode_token(&token); + println!("token {}", token); + decode_token(&token, &key); } } -fn decode_token(token: &str) { - let data = - match dangerous_unsafe_decode::<Claims>(&token) { - Ok(c) => c, - Err(err) => match *err.kind() { - _ => { - println!("{:?}", err); - panic!(); - }, +fn decode_token(token: &str, key: &[u8]) { + let v = Validation::new(Algorithm::RS512); + let data = match decode::<Claims>(&token, key, &v) { + Ok(c) => c, + Err(err) => match *err.kind() { + _ => { + eprintln!("ERROR: {:?}", err); + panic!(); }, - }; + }, + }; let claims = data.claims; let j = serde_json::to_string_pretty(&claims).expect("JSON error"); println!("{}", j); |