multiversx_sdk/data/
keystore.rs

1use serde::{Deserialize, Serialize};
2
3pub const KDF_N: u32 = 4096;
4pub const KDF_R: u32 = 8;
5pub const KDF_P: u32 = 1;
6pub const KDF_DKLEN: usize = 32;
7pub const KEYSTORE_VERSION: u32 = 4;
8
9#[derive(Debug)]
10pub enum WalletError {
11    InvalidPassword,
12    InvalidKdf,
13    InvalidCipher,
14}
15
16#[derive(Debug)]
17pub enum InsertPassword {
18    Plaintext(String),
19    StandardInput,
20}
21
22#[derive(Debug, Serialize, Deserialize)]
23pub struct CryptoParams {
24    pub iv: String,
25}
26
27#[derive(Debug, Serialize, Deserialize)]
28pub struct KdfParams {
29    pub dklen: u32,
30    pub salt: String,
31    pub n: u32,
32    pub r: u32,
33    pub p: u32,
34}
35
36#[derive(Debug, Serialize, Deserialize)]
37pub struct Crypto {
38    pub ciphertext: String,
39    pub cipherparams: CryptoParams,
40    pub cipher: String,
41    pub kdf: String,
42    pub kdfparams: KdfParams,
43    pub mac: String,
44}
45
46#[derive(Debug, Serialize, Deserialize)]
47pub struct Keystore {
48    pub version: u32,
49    pub kind: String,
50    pub id: String,
51    pub address: String,
52    pub bech32: String,
53    pub crypto: Crypto,
54}
55
56#[derive(Clone, Debug)]
57pub struct DecryptionParams {
58    pub derived_key_first_half: Vec<u8>,
59    pub iv: Vec<u8>,
60    pub data: Vec<u8>,
61}