x25519-dalek icon indicating copy to clipboard operation
x25519-dalek copied to clipboard

On the usage os OsRng

Open S3j5b0 opened this issue 2 years ago • 2 comments

Hi, this is more of a question than a issue.

In the example that you give of creating keypairs, you use the rand_core Osrng:


use rand_core::OsRng;
use x25519_dalek::{EphemeralSecret, PublicKey};

let alice_secret = EphemeralSecret::new(OsRng);
let alice_public = PublicKey::from(&alice_secret);

After reading a bit up on the osrng, I read that it was not a cryptographically secure source of randomness, and that I should use a resource that specifcally had a focus on that.

The most common option for a csprg, seems to be the StdRng in the rand crate. That I was advised to use.

Is it possible to use use rand::{rngs::StdRng}; to create keypairs in your crate? or is the use of osrng completely unproblematic?

S3j5b0 avatar Feb 09 '22 11:02 S3j5b0

The secret itself requires RngCore + CryptoRng and StdRng already impl that - but different version... The rest of the world use rand_core 0.6 but this crate use rand_core 0.5 so you'll get the trait bound "XxxRng: rand_core::RngCore" is not satisfied the trait "rand_core::RngCore" is not implemented for "XxxRng" the trait bound "XxxRng: rand_core::CryptoRng" is not satisfied the trait "rand_core::CryptoRng" is not implemented for "XxxRng"

There is a pr for version bump and everything should be fine and you can use StdRng or OsRng from rand_core 0.6 or whatever (hopefully, but nobody review or merge the pr)

sgkoishi avatar Feb 14 '22 12:02 sgkoishi

Can I use something other than OsRng? I've been trying to substitute other cores but I'm getting trait not satisfied errors.

kohsine avatar Jul 28 '22 15:07 kohsine