SRP-6a Secure Remote Password protocol for OCaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

ocaml-srp: rewrite README example against the real API

[Srp.Client.v] / [Srp.Server.v] / [Srp.Client.public] don't exist;
the API names are [Client.create], [Client.public_key],
[Client.compute_session_key] (returning [(_, [`Msg of string]) result]).
[Server.create] also takes [~username]; salt isn't passed by the
client to [compute_session_key], it's [~big_b] / [~big_a]. Initialise
[Crypto_rng_unix] so [Client.create] doesn't raise.

Pattern-match the [result], [assert] [String.equal] on the derived
keys, and add [nox-crypto-rng.unix] to the mdx libs.

+18 -10
+17 -9
README.md
··· 36 36 ### Client authentication 37 37 38 38 ```ocaml 39 - (* Client side: generate A and ephemeral key; send (username, A) to server *) 40 - let client = Srp.Client.v ~username:"alice" ~password:"secret" 41 - let a_pub = Srp.Client.public client 39 + let () = Crypto_rng_unix.use_default () 42 40 43 - (* Server receives (username, A), looks up salt+verifier; sends (salt, B) *) 44 - let server = Srp.Server.v ~verifier 45 - let b_pub = Srp.Server.public server 41 + (* Client side: generate A and ephemeral key; send (username, A) to server. *) 42 + let client = Srp.Client.create ~username:"alice" ~password:"secret" 43 + let big_a = Srp.Client.public_key client 46 44 47 - (* Both derive the shared session key *) 48 - let client_key = Srp.Client.session_key client ~salt ~b_pub 49 - let server_key = Srp.Server.session_key server ~username:"alice" ~a_pub 45 + (* Server receives (username, A), looks up salt+verifier; sends (salt, B). *) 46 + let server = Srp.Server.create ~username:"alice" ~salt ~verifier 47 + let big_b = Srp.Server.public_key server 48 + 49 + (* Both derive the shared session key. *) 50 + let () = 51 + match 52 + ( Srp.Client.compute_session_key client ~salt ~big_b, 53 + Srp.Server.compute_session_key server ~big_a ) 54 + with 55 + | Ok client_key, Ok server_key -> 56 + assert (String.equal client_key server_key) 57 + | _ -> failwith "session key derivation failed" 50 58 ``` 51 59 52 60 ## API
+1 -1
dune
··· 4 4 5 5 (mdx 6 6 (files README.md) 7 - (libraries srp)) 7 + (libraries srp nox-crypto-rng.unix))