Skip to main content

DiffieHellmanSim

Struct DiffieHellmanSim 

Source
pub struct DiffieHellmanSim {
    pub p: u64,
    pub g: u64,
    pub alice_priv: u64,
    pub bob_priv: u64,
}
Expand description

Toy Diffie-Hellman key exchange simulation.

Encapsulates a full simulated key exchange between Alice and Bob.

§WARNING

Uses tiny parameters with no real security.

Fields§

§p: u64

Shared prime p

§g: u64

Generator g

§alice_priv: u64

Alice’s private key

§bob_priv: u64

Bob’s private key

Implementations§

Source§

impl DiffieHellmanSim

Source

pub fn new(p: u64, g: u64, alice_priv: u64, bob_priv: u64) -> Self

Create a simulation with given parameters.

Source

pub fn alice_public(&self) -> u64

Alice’s public key: g^a mod p.

Source

pub fn bob_public(&self) -> u64

Bob’s public key: g^b mod p.

Source

pub fn alice_shared_secret(&self) -> u64

Shared secret computed by Alice: (g^b)^a mod p.

Source

pub fn bob_shared_secret(&self) -> u64

Shared secret computed by Bob: (g^a)^b mod p.

Source

pub fn secrets_match(&self) -> bool

Verify that Alice and Bob derive the same shared secret.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.