hoprd_keypair/
lib.rs

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
40
41
42
43
44
45
46
47
48
//! Generates, reads, and writes hopr key material following the Ethereum KeyStore standard.
//!
//! Reimplements the `eth_keystore` crate to support WASM which cannot be used because using custom FS access is not foreseen and utilized version of `uuid` cannot use JS `getrandom` entropy.
//!
//! Automatically migrates keyStore that only have a `chain_key` to those who also store a `packet_key`.
//!
//! # Key format
//! ```json
//! {
//!   "version": 2,
//!   "chain_key": "7a714c922cd769ab6702ffac411fb1a4d28500613e2ac8bf71f14c3604bba091",
//!   "packet_key": "5d147b58bce1664f88e60921a9aa8195cc54081e587b24e66005bbf60fbf480c"
//! }
//! ```
//!
//! # Example
//! Key store file (password: `e2e-test`)
//!
//! ```json
//! {
//!   "crypto": {
//!     "cipher": "aes-128-ctr",
//!     "cipherparams": { "iv": "3b0551f925bfd0ded154ec487dc78d29" },
//!     "ciphertext": "bbdb25cdbeff683926999baee0e929c4e9922ca0b4c99e90351aa8fa286b10d7a5bcdfe2e58cffc9d4f9df10121d0b4b1ac697f97909e8f9fdf15aff91b555cb7ca8b5e10ed747de9a99c0e9d3c540ed09997689ec5aba0d0a946e5ea167c7e4be91fa67be419fd0169aca1d73229d0049bff82e3f6c3256c7a2ba24bb4b02aefa224f0ad70479a5e117b3cc133adf03021aceb2152b8727ccd559ce3758bf523e429a4f4806b58fa5597532",
//!     "kdf": "scrypt",
//!     "kdfparams": {
//!       "dklen": 32,
//!       "n": 2,
//!       "p": 1,
//!       "r": 8,
//!       "salt": "01da6de6a096ba594fd1119ad907e8fbf531874a4bcc234a3a88b2e9e4d8cb06"
//!     },
//!     "mac": "a18ae65efbc0d0085ff6a26956695f704509cdb6a05ee168e2017c4399e8be43"
//!   },
//!   "id": "68172b5b-e4e7-4ac9-9932-352a95f11561",
//!   "version": 3
//! }
//! ```
//!
//! leading to following PeerIds:
//! ```shell
//!   chain_key 16Uiu2HAmJqfGeZPa8VJ8263NDjehHkMXYqYzbi4zqhH7Y3RKsEoV (secp256k1)
//!   packet_key 12D3KooWPGsW7vZ8VsmJ9Lws9vsKaBiACZXQ3omRm3rFUho5BpvF (ed25519)
//! ```

pub mod errors;
pub mod key_pair;
pub mod keystore;