#challenge #response #captcha #applications #validation #create #altcha

altcha-lib-rs

Community implementation of the Altcha library in Rust for your own server applications to create and validate challenges and responses

1 unstable release

0.1.1 Aug 21, 2024
0.1.0 Aug 21, 2024

#724 in Cryptography

Apache-2.0

23KB
391 lines

Community ALTCHA Rust Library   Build & test

Community implementation of the ALTCHA library in Rust for your own server applications to create and validate challenges and responses.

For more information about ALTCHA https://altcha.org/docs


Setup

[dependencies]
altcha-lib-rs = { version = "0", features = ["json"] }

Example

use altcha_lib_rs::{create_challenge, verify_json_solution, 
                    Payload, Challenge, ChallengeOptions};

// create a challenge
let challenge = create_challenge(ChallengeOptions {
    hmac_key: "super-secret",
    expires: Some(Utc::now() + chrono::TimeDelta::minutes(1)),
    ..Default::default()
}).expect("should be ok");

// transmit the challenge to the client and let the clint solve it
let res = solve_challenge(&challenge.challenge, &challenge.salt, None, None, 0)
    .expect("need to be solved");
// pack the solution into a json string
let payload = Payload {
    algorithm: challenge.algorithm,
    challenge: challenge.challenge,
    number: res,
    salt: challenge.salt,
    signature: challenge.signature,
    took: None,
};
let string_payload = serde_json::to_string(&payload).unwrap();

// receive the solution from the client and verify it
verify_json_solution(&string_payload, "super-secret", true).expect("should be verified");

See example server

Dependencies

~2–3MB
~59K SLoC