|
12 | 12 | //!
|
13 | 13 | //! Webcryptobox helps with elliptic curve key generation, derivation, fingerprinting, import and
|
14 | 14 | //! export as well as AES encryption and decryption.
|
| 15 | +//! |
| 16 | +//! # Example: |
| 17 | +//! |
| 18 | +//! ```rust |
| 19 | +//! let wcb = webcryptobox::Webcryptobox::default(); |
| 20 | +//! |
| 21 | +//! // Alice creates a key and sends her public key pem to Bob |
| 22 | +//! let alice = wcb.generate_key_pair().unwrap(); |
| 23 | +//! let alice_public_key = wcb.derive_public_key(&alice).unwrap(); |
| 24 | +//! let alice_public_key_pem = wcb.export_public_key_pem(&alice_public_key).unwrap(); |
| 25 | +//! |
| 26 | +//! // Bob also creates a key and sends his public key pem to Alice |
| 27 | +//! let bob = wcb.generate_key_pair().unwrap(); |
| 28 | +//! let bobs_public_key = wcb.derive_public_key(&bob).unwrap(); |
| 29 | +//! let bob_public_key_pem = wcb.export_public_key_pem(&bobs_public_key).unwrap(); |
| 30 | +//! |
| 31 | +//! // Alice uses Bobs public key to derive a shared key |
| 32 | +//! let bobs_key = wcb.import_public_key_pem(&bob_public_key_pem).unwrap(); |
| 33 | +//! let alice_shared_key = wcb.derive_key(alice, bobs_key).unwrap(); |
| 34 | +//! |
| 35 | +//! // She now encrypts a message and sends the encrypted message and the iv to Bob |
| 36 | +//! let iv = wcb.generate_iv().unwrap(); |
| 37 | +//! let data = (b"a secret message").to_vec(); |
| 38 | +//! let encrypted_message = wcb.encrypt(&alice_shared_key, &iv, &data).unwrap(); |
| 39 | +//! |
| 40 | +//! // Now Bob derives the same shared secret |
| 41 | +//! let alice_key = wcb.import_public_key_pem(&alice_public_key_pem).unwrap(); |
| 42 | +//! let bobs_shared_key = wcb.derive_key(bob, alice_key).unwrap(); |
| 43 | +//! |
| 44 | +//! // and decrypts the message |
| 45 | +//! let message = wcb.decrypt(&bobs_shared_key, &iv, &encrypted_message); |
| 46 | +//! ``` |
15 | 47 |
|
16 | 48 | use openssl::derive::Deriver;
|
17 | 49 | use openssl::ec::{EcGroup, EcKey};
|
@@ -494,8 +526,8 @@ impl Webcryptobox {
|
494 | 526 | ///
|
495 | 527 | /// let alice = wcb.generate_key_pair().unwrap();
|
496 | 528 | /// let bob = wcb.generate_key_pair().unwrap();
|
497 |
| - /// let bobs_public_key = wcb.derive_public_key(&bob).unwrap(); |
498 | 529 | /// let alice_public_key = wcb.derive_public_key(&alice).unwrap();
|
| 530 | + /// let bobs_public_key = wcb.derive_public_key(&bob).unwrap(); |
499 | 531 | ///
|
500 | 532 | /// let iv = wcb.generate_iv().unwrap();
|
501 | 533 | /// let data = (b"a secret message").to_vec();
|
|
0 commit comments