diff options
author | Lars Wirzenius <liw@liw.fi> | 2018-11-30 13:29:28 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2018-11-30 13:29:28 +0200 |
commit | 87fbe71e376edfc8e8de098d5c6eff3d5a77e45e (patch) | |
tree | ef76f091a3dbc5ff307400ca22e3e9f5da90d1e1 /src | |
parent | fed7b3acb1efe7358e6864afe0b9dd819ba54996 (diff) | |
download | jwt-decode-87fbe71e376edfc8e8de098d5c6eff3d5a77e45e.tar.gz |
Change: try checking existing JWT tokent (does not work)
Diffstat (limited to 'src')
-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); |