RustCrypto / PAKEs

Password-Authenticated Key Agreement protocols
105 stars 34 forks source link

Standard implementation option #153

Open masihyeganeh opened 1 year ago

masihyeganeh commented 1 year ago

Added an option to use the implementation in the spec also added an option to omit username when calculating X

It's a draft implementation to start conversation on it. Please let me know what you think about it.

closes #152

masihyeganeh commented 1 year ago

OK, I decided to change my implementation completely. Sorry, but your comments are outdated now. Instead of choosing the implementation in the instantiation phase, I decided to go with having two different process_reply and process_reply_rfc5054 method. The thing is that RFC5054 calculates M1 (and accordingly M2) using session_key (hash of premaster secret) instead of the premaster secret, so I had to define SrpClientVerifierRfc5054 and SrpServerVerifierRfc5054 beside SrpClientVerifier and SrpServerVerifier that also returns the session_key. We can have this extra field in those structs, but I believe it would be a breaking change. I leave it to you to decide.

Please review this new code and let me know you like this approach better or not.

Thanks