11use crate :: { errors:: AuthError , groups:: * , utils:: * } ;
22use alloc:: vec:: Vec ;
3+ use bigint:: { BoxedUint , ConcatenatingMul , Odd , Resize , modular:: BoxedMontyForm } ;
34use core:: marker:: PhantomData ;
4- use crypto_bigint:: { BoxedUint , ConcatenatingMul , Odd , Resize , modular:: BoxedMontyForm } ;
55use digest:: { Digest , Output } ;
66use subtle:: ConstantTimeEq ;
77
@@ -38,12 +38,15 @@ pub type ClientG4096<D> = Client<G4096, D>;
3838/// Next send handshake data (username and `a_pub`) to the server and receive
3939/// `salt` and `b_pub`:
4040///
41- /// ```rust
41+ #[ cfg_attr( feature = "getrandom" , doc = "```" ) ]
42+ #[ cfg_attr( not( feature = "getrandom" ) , doc = "```ignore" ) ]
4243/// # let client = srp::ClientG2048::<sha2::Sha256>::new();
4344/// # fn server_response()-> (Vec<u8>, Vec<u8>) { (vec![], vec![]) }
45+ /// // NOTE: requires `getrandom` crate feature is enabled
46+ ///
47+ /// use srp::{EphemeralSecret, Generate};
4448///
45- /// let mut a = [0u8; 64];
46- /// // rng.fill_bytes(&mut a);
49+ /// let mut a = EphemeralSecret::generate();
4750/// let a_pub = client.compute_public_ephemeral(&a);
4851/// let (salt, b_pub) = server_response();
4952/// ```
@@ -58,7 +61,6 @@ pub type ClientG4096<D> = Client<G4096, D>;
5861/// # let password = b"password";
5962/// # let salt = b"salt";
6063/// # let b_pub = b"b_pub";
61- ///
6264/// let private_key = (username, password, salt);
6365/// let verifier = client.process_reply_legacy(&a, username, password, salt, b_pub);
6466/// ```
@@ -71,7 +73,6 @@ pub type ClientG4096<D> = Client<G4096, D>;
7173/// # let client = srp::ClientG2048::<sha2::Sha256>::new();
7274/// # let verifier = client.process_reply(b"", b"", b"", b"", b"1").unwrap();
7375/// # fn send_proof(_: &[u8]) -> Vec<u8> { vec![173, 202, 13, 26, 207, 73, 0, 46, 121, 238, 48, 170, 96, 146, 60, 49, 88, 76, 12, 184, 152, 76, 207, 220, 140, 205, 190, 189, 117, 6, 131, 63] }
74- ///
7576/// let client_proof = verifier.proof();
7677/// let server_proof = send_proof(client_proof);
7778/// verifier.verify_server(&server_proof).unwrap();
@@ -82,7 +83,6 @@ pub type ClientG4096<D> = Client<G4096, D>;
8283/// ```rust
8384/// # let client = srp::ClientG2048::<sha2::Sha256>::new();
8485/// # let verifier = client.process_reply_legacy(b"", b"", b"", b"", b"1").unwrap();
85- ///
8686/// verifier.key();
8787/// ```
8888///
@@ -96,7 +96,6 @@ pub type ClientG4096<D> = Client<G4096, D>;
9696/// # let client = srp::ClientG2048::<sha2::Sha256>::new();
9797/// # let verifier = client.process_reply_rfc5054(b"", b"", b"", b"", b"1").unwrap();
9898/// # fn send_proof(_: &[u8]) -> Vec<u8> { vec![10, 215, 214, 40, 136, 200, 122, 121, 68, 160, 38, 32, 85, 82, 128, 30, 199, 194, 126, 222, 61, 55, 2, 28, 120, 181, 155, 102, 141, 65, 17, 64] }
99- ///
10099/// let client_proof = verifier.proof();
101100/// let server_proof = send_proof(client_proof);
102101/// let session_key = verifier.verify_server(&server_proof).unwrap();
@@ -114,7 +113,6 @@ pub type ClientG4096<D> = Client<G4096, D>;
114113/// # let password = b"password";
115114/// # let salt = b"salt";
116115/// # fn send_registration_data(_: &[u8], _: &[u8], _: &[u8]) {}
117- ///
118116/// let pwd_verifier = client.compute_verifier(username, password, salt);
119117/// send_registration_data(username, salt, &pwd_verifier);
120118/// ```
0 commit comments