Simplify SRP authentication.
It uses srp crate under the hood, and can compile for WebAssembly.
Check security warnings there please. USE AT YOUR OWN RISK!
Sign up flow:
- [
Client::sign_up] - client creates salt and verifier for registration.
And send it to server, to store it for future logins.
Login flow:
- [
Client::login_hello] - client creates login hello message with public key. - [
Server::hello_reply] - server responds with salt and its public key. - [
Client::create_evidence] - client creates evidence message to prove knowledge of password. - [
Server::authenticate] - server verifies client evidence and responds with its own evidence. - [
Client::verify_server] - client verifies server evidence to complete authentication.
And used structs can be serialized/deserialized for communication.
That's all, it's simple!
Example
An example to help you to get started quickly. It's all together here for simplicity only.
use ;
let username = "testuser".to_string;
let password = "testpass".to_string;
let client = new;
let server = new;
// Registration
let creds = client.sign_up;
// Login Hello
let = client.login_hello;
let = server.hello_reply.unwrap;
// Client creates evidence
let = client.create_evidence.unwrap;
// Server authenticates
let auth_result = server.authenticate.unwrap;
// Client verifies server evidence
let server_verification = client.verify_server;
assert!;