Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix invalid random ExpiredToken error #3

Merged
merged 1 commit into from
Feb 21, 2020
Merged

Conversation

gallegogt
Copy link
Contributor

@gallegogt gallegogt commented Feb 18, 2020

The logical error is produced when trying to convert from u128 (nano
secs) to u32 (secs) in the check of TTL

Example test code:

Rust Version: rustc 1.41.0 (5e1a79984 2020-01-27)

use branca::{decode, Branca};
use std::{thread, time};

fn main() {
    let key = b"supersecretkeyyoushouldnotcommit".to_vec();
    let branca = Branca::new(&key).unwrap();
    let token = branca.encode("Mensaje, Hola").unwrap();

    let d_secs = time::Duration::from_secs(5);

    loop {
        let b = decode(&token, &key, 3600_000);
        println!("Branca Result {:?} => Token {}", b, token);

        thread::sleep(d_secs);
    }
}

branca = "0.9"

Output:


Output Error:

Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Err(ExpiredToken) => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Err(ExpiredToken) => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Err(ExpiredToken) => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Err(ExpiredToken) => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q
Branca Result Ok("Mensaje, Hola") => Token XbhP8jilrQlHwIBxFMFUytF8sBpllvilipCHG8xkk5ZksdtaPEcLeb6bTZ30ok4v5zL5oHEbHPzG7Q

After change:

Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h
Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h
Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h
Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h
Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h
Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h
Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h
Branca Result Ok("Mensaje, Hola") => Token Xb45cIEGQjlXM3BHhVmhhVXXSnUbTae5ZzpC1udOpWUxwiothbo7UZvnCZEil1oGYrld1ovjguiL0h

The logical error is produced when trying to convert from u128 (nano
secs) to u32 (secs) in the check of ttl
Copy link
Owner

@return return left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for catching this, LGTM!

@return return merged commit b301d0e into return:master Feb 21, 2020
@brycx brycx mentioned this pull request Aug 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants