Explorar el Código

cashierdb: create MainTokenKey struct

ghassmo hace 4 años
padre
commit
4c5ab0da80
Se han modificado 2 ficheros con 37 adiciones y 21 borrados
  1. 13 7
      src/bin/cashierd.rs
  2. 24 14
      src/wallet/cashierdb.rs

+ 13 - 7
src/bin/cashierd.rs

@@ -25,7 +25,7 @@ use drk::{
     serial::{deserialize, serialize},
     service::{bridge, bridge::Bridge},
     util::{expand_path, generate_id, join_config_path, parse::truncate, NetworkName},
-    wallet::{CashierDb, WalletDb},
+    wallet::{cashierdb::MainTokenKey, CashierDb, WalletDb},
     Error, Result,
 };
 
@@ -482,12 +482,15 @@ impl Cashierd {
                         if main_keypairs.is_empty() {
                             main_keypair = Keypair::new();
                             self.cashier_wallet.put_main_keys(
-                                &serialize(&main_keypair),
-                                &serialize(&main_keypair.pubkey()),
+                                &MainTokenKey {
+                                    private_key: serialize(&main_keypair),
+                                    public_key: serialize(&main_keypair.pubkey()),
+                                },
                                 &NetworkName::Solana,
                             )?;
                         } else {
-                            main_keypair = deserialize(&main_keypairs[main_keypairs.len() - 1].0)?;
+                            main_keypair =
+                                deserialize(&main_keypairs[main_keypairs.len() - 1].private_key)?;
                         }
                     } else {
                         let keypair_str = drk::cli::cli_config::load_keypair_to_str(
@@ -518,12 +521,15 @@ impl Cashierd {
                         if main_keypairs.is_empty() {
                             main_keypair = Keypair::new();
                             self.cashier_wallet.put_main_keys(
-                                &serialize(&main_keypair),
-                                &serialize(&main_keypair.pubkey()),
+                                &MainTokenKey {
+                                    private_key: serialize(&main_keypair),
+                                    public_key: serialize(&main_keypair.pubkey()),
+                                },
                                 &NetworkName::Bitcoin,
                             )?;
                         } else {
-                            main_keypair = deserialize(&main_keypairs[main_keypairs.len() - 1].0)?;
+                            main_keypair =
+                                deserialize(&main_keypairs[main_keypairs.len() - 1].private_key)?;
                         }
                     } else {
                         let keypair_str = drk::cli::cli_config::load_keypair_to_str(

+ 24 - 14
src/wallet/cashierdb.rs

@@ -17,6 +17,11 @@ pub struct CashierDb {
     pub initialized: Mutex<bool>,
 }
 
+pub struct MainTokenKey {
+    pub public_key: Vec<u8>,
+    pub private_key: Vec<u8>,
+}
+
 impl WalletApi for CashierDb {
     fn get_password(&self) -> String {
         self.password.to_owned()
@@ -59,12 +64,7 @@ impl CashierDb {
         Ok(())
     }
 
-    pub fn put_main_keys(
-        &self,
-        token_key_private: &[u8],
-        token_key_public: &[u8],
-        network: &NetworkName,
-    ) -> Result<()> {
+    pub fn put_main_keys(&self, token_key: &MainTokenKey, network: &NetworkName) -> Result<()> {
         debug!(target: "CASHIERDB", "Put main keys");
 
         // open connection
@@ -80,15 +80,15 @@ impl CashierDb {
             VALUES
             (:token_key_private, :token_key_public, :network)",
             named_params! {
-                ":token_key_private": token_key_private,
-                ":token_key_public": token_key_public,
+                ":token_key_private": token_key.private_key,
+                ":token_key_public": token_key.public_key,
                 ":network": &network,
             },
         )?;
         Ok(())
     }
 
-    pub fn get_main_keys(&self, network: &NetworkName) -> Result<Vec<(Vec<u8>, Vec<u8>)>> {
+    pub fn get_main_keys(&self, network: &NetworkName) -> Result<Vec<MainTokenKey>> {
         debug!(target: "CASHIERDB", "Get main keys");
         // open connection
         let conn = Connection::open(&self.path)?;
@@ -110,7 +110,11 @@ impl CashierDb {
         let mut keys = vec![];
 
         for k in keys_iter {
-            keys.push(k?);
+            let k = k?;
+            keys.push(MainTokenKey {
+                private_key: k.0,
+                public_key: k.1,
+            });
         }
 
         Ok(keys)
@@ -488,14 +492,20 @@ mod tests {
 
         let network = NetworkName::Bitcoin;
 
-        wallet.put_main_keys(&token_addr_private, &token_addr, &network)?;
+        wallet.put_main_keys(
+            &MainTokenKey {
+                private_key: token_addr_private.clone(),
+                public_key: token_addr.clone(),
+            },
+            &network,
+        )?;
 
         let keys = wallet.get_main_keys(&network)?;
 
         assert_eq!(keys.len(), 1);
 
-        assert_eq!(keys[0].0, token_addr_private);
-        assert_eq!(keys[0].1, token_addr);
+        assert_eq!(keys[0].private_key, token_addr_private);
+        assert_eq!(keys[0].public_key, token_addr);
 
         std::fs::remove_file(walletdb_path)?;
 
@@ -541,7 +551,7 @@ mod tests {
         assert_eq!(resumed_keys[0].1, token_addr_private);
         assert_eq!(resumed_keys[0].2, token_addr);
         assert_eq!(resumed_keys[0].3, token_id);
-        
+
         wallet.confirm_deposit_key_record(&public2, &network)?;
 
         let keys = wallet.get_deposit_token_keys_by_dkey_public(&public2, &network)?;