Module srp::server
[−]
[src]
SRP server implementation
Usage
First receive user's username and public value a_pub
, retrieve from a
database UserRecord
for a given username, generate b
(e.g. 512 bits
long) and initialize SRP server instance:
use srp::groups::G_2048; let (username, a_pub) = conn.receive_handshake(); let user = db.retrieve_user_record(username); let b = rng.gen_iter::<u8>().take(64).collect::<Vec<u8>>(); let server = SrpServer::<Sha256>::new(&user, &a_pub, &b, &G_2048)?;
Next send to user b_pub
and salt
from user record:
let b_pub = server.get_b_pub(); conn.reply_to_handshake(&user.salt, b_pub);
And finally recieve user proof, verify it and send server proof in the reply:
let user_proof = conn.receive_proof(); let server_proof = server.verify(user_proof)?; conn.send_proof(server_proof);
To get the shared secret use get_key
method. As alternative to using
verify
method it's also possible to use this key for authentificated
encryption.
Structs
SrpServer |
SRP server state |
UserRecord |
Data provided by users upon registration, usually stored in the database. |