1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//! 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 rust_sodium::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);
//!
//! ```
pub use *;