reverse_resonance_id 0.1.0

Self-checking symmetric tokens based on reversing squared user identifiers.
Documentation
use reverse_resonance_id::{make_token_baseline, validate_token_baseline};

#[cfg(feature = "hmac")]
use reverse_resonance_id::{make_token_hmac, validate_token_hmac};

#[cfg(feature = "salt-iter")]
use reverse_resonance_id::{make_token_salt_iter, validate_token_salt_iter};

#[cfg(feature = "hmac")]
const KEY: &[u8] = b"0123456789abcdef0123456789abcdef";

#[test]
#[ignore = "long-running smoke test for bulk generation"]
fn bulk_generation_smoke() {
    for uid in 1..=100_000_u64 {
        let baseline = make_token_baseline(uid).expect("baseline token");
        assert!(validate_token_baseline(baseline.as_str()));

        #[cfg(feature = "hmac")]
        let hmac = make_token_hmac(uid, KEY, 16).expect("hmac token");

        #[cfg(feature = "hmac")]
        assert!(validate_token_hmac(hmac.as_str(), KEY, 16));

        #[cfg(feature = "salt-iter")]
        if uid <= 10_000 {
            let salt = make_token_salt_iter(uid, 4, 2_048).expect("salt-iter token");
            assert!(validate_token_salt_iter(salt.as_str()));
        }
    }
}