Struct x25519_dalek::ReusableSecret
source · pub struct ReusableSecret(/* private fields */);
Expand description
A Diffie-Hellman secret key which may be used more than once, but is purposefully not serialiseable in order to discourage key-reuse. This is implemented to facilitate protocols such as Noise (e.g. Noise IK key usage, etc.) and X3DH which require an “ephemeral” key to conduct the Diffie-Hellman operation multiple times throughout the protocol, while the protocol run at a higher level is only conducted once per key.
Similarly to EphemeralSecret
, this type does not have serialisation
methods, in order to discourage long-term usage of secret key material. (For
long-term secret keys, see StaticSecret
.)
§Warning
If you’re uncertain about whether you should use this, then you likely
should not be using this. Our strongly recommended advice is to use
EphemeralSecret
at all times, as that type enforces at compile-time that
secret keys are never reused, which can have very serious security
implications for many protocols.
Implementations§
source§impl ReusableSecret
impl ReusableSecret
sourcepub fn diffie_hellman(&self, their_public: &PublicKey) -> SharedSecret
Available on crate feature reusable_secrets
only.
pub fn diffie_hellman(&self, their_public: &PublicKey) -> SharedSecret
reusable_secrets
only.Perform a Diffie-Hellman key agreement between self
and
their_public
key to produce a SharedSecret
.
sourcepub fn new<T: RngCore + CryptoRng>(csprng: T) -> Self
👎Deprecated since 2.0.0: Renamed to random_from_rng
. This will be removed in 2.1.0.Available on crate feature reusable_secrets
only.
pub fn new<T: RngCore + CryptoRng>(csprng: T) -> Self
random_from_rng
. This will be removed in 2.1.0.reusable_secrets
only.Generate a new ReusableSecret
with the supplied RNG.
sourcepub fn random_from_rng<T: RngCore + CryptoRng>(csprng: T) -> Self
Available on crate feature reusable_secrets
only.
pub fn random_from_rng<T: RngCore + CryptoRng>(csprng: T) -> Self
reusable_secrets
only.Generate a new ReusableSecret
with the supplied RNG.
sourcepub fn random() -> Self
Available on crate features reusable_secrets
and getrandom
only.
pub fn random() -> Self
reusable_secrets
and getrandom
only.Generate a new ReusableSecret
.
Trait Implementations§
source§impl Clone for ReusableSecret
impl Clone for ReusableSecret
source§fn clone(&self) -> ReusableSecret
fn clone(&self) -> ReusableSecret
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'a> From<&'a ReusableSecret> for PublicKey
Available on crate feature reusable_secrets
only.
impl<'a> From<&'a ReusableSecret> for PublicKey
reusable_secrets
only.source§fn from(secret: &'a ReusableSecret) -> PublicKey
fn from(secret: &'a ReusableSecret) -> PublicKey
Given an x25519 ReusableSecret
key, compute its corresponding PublicKey
.