altcha-lib-rs

Crates.ioaltcha-lib-rs
lib.rsaltcha-lib-rs
version0.1.1
sourcesrc
created_at2024-08-21 20:42:07.087167
updated_at2024-08-21 20:59:12.166316
descriptionCommunity implementation of the Altcha library in Rust for your own server applications to create and validate challenges and responses.
homepage
repositoryhttps://github.com/jmic/altcha-lib-rs
max_upload_size
id1346909
size78,090
(jmic)

documentation

README

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

Commit count: 0

cargo fmt