Module sodiumoxide::crypto::kx[][src]

Expand description

Key exchange

Using the key exchange API, two parties can securely compute a set of shared keys using their peer’s public key and their own secret key.

This API was introduced in libsodium 1.0.12.

Example

use sodiumoxide::crypto::kx;

// client-side
let (client_pk, client_sk) = kx::gen_keypair();

// server-side
let (server_pk, server_sk) = kx::gen_keypair();

// client and server exchanges client_pk and server_pk

// client deduces the two session keys rx1 and tx1
let (rx1, tx1) = match kx::client_session_keys(&client_pk, &client_sk, &server_pk) {
    Ok((rx, tx)) => (rx, tx),
    Err(()) => panic!("bad server signature"),
};

// server performs the same operation
let (rx2, tx2) = match kx::server_session_keys(&server_pk, &server_sk, &client_pk) {
    Ok((rx, tx)) => (rx, tx),
    Err(()) => panic!("bad client signature"),
};

assert!(rx1==tx2);
assert!(rx2==tx1);

Re-exports

pub use self::x25519blake2b::*;

Modules

x25519blake2b

x25519blake2b is the current default key exchange scheme of libsodium.