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
pub fn diffie_hellman(&self, their_public: &PublicKey) -> SharedSecret
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.
pub fn new<T: RngCore + CryptoRng>(csprng: T) -> Self
random_from_rng
. This will be removed in 2.1.0.Generate a new ReusableSecret
with the supplied RNG.
sourcepub fn random_from_rng<T: RngCore + CryptoRng>(csprng: T) -> Self
pub fn random_from_rng<T: RngCore + CryptoRng>(csprng: T) -> Self
Generate a new ReusableSecret
with the supplied RNG.
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
impl<'a> From<&'a ReusableSecret> for PublicKey
source§fn from(secret: &'a ReusableSecret) -> PublicKey
fn from(secret: &'a ReusableSecret) -> PublicKey
Given an x25519 ReusableSecret
key, compute its corresponding PublicKey
.
Auto Trait Implementations§
impl Freeze for ReusableSecret
impl RefUnwindSafe for ReusableSecret
impl Send for ReusableSecret
impl Sync for ReusableSecret
impl Unpin for ReusableSecret
impl UnwindSafe for ReusableSecret
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)