dtf

Crates.iodtf
lib.rsdtf
version0.1.0
created_at2025-04-06 18:01:03.628659+00
updated_at2025-04-06 18:01:03.628659+00
descriptionObsecure the running time of a function call to diminish timing attacks
homepage
repositoryhttps://github.com/sbruton/dtf
max_upload_size
id1623245
size11,918
Sean Bruton (sbruton)

documentation

README

Deterministic Time Functions

Sync Example

use std::time::Duration;

use dtf::sync::dtf;

let sensitive_method = || {
    if let Some(user) = users.get(user_id) {
        if user.password_hash.validate(password) {
            return Ok(());
        }
    }
    return Err("invalid credentials");
}

let min_duration = Duration::from_millis(1500);
let jitter = Duration::from_millis(100);

let result = dtf(min_duration, jitter, sensitive_method);

Async Example

Requires the async feature be enabled.

use std::time::Duration;

use dtf::future::dtf;

let sensitive_method = async || {
    if let Some(user) = users.get(user_id) {
        if user.password_hash.validate(password) {
            return Ok(());
        }
    }
    return Err("invalid credentials");
}

let min_duration = Duration::from_millis(1500);
let jitter = Duration::from_millis(100);

let result = dtf(min_duration, jitter, sensitive_method).await;
Commit count: 2

cargo fmt