1 unstable release
0.1.1 | Aug 21, 2024 |
---|---|
0.1.0 |
|
#810 in Cryptography
23KB
391 lines
Community ALTCHA Rust Library 
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
~4.5MB
~78K SLoC