|
@@ -56,7 +56,7 @@ impl WalletDB {
|
|
|
let contents = include_str!("../../res/schema.sql");
|
|
let contents = include_str!("../../res/schema.sql");
|
|
|
let conn = Connection::open(&self.path)?;
|
|
let conn = Connection::open(&self.path)?;
|
|
|
debug!(target: "walletdb", "OPENED CONNECTION AT PATH {:?}", self.path);
|
|
debug!(target: "walletdb", "OPENED CONNECTION AT PATH {:?}", self.path);
|
|
|
- conn.execute("PRAGMA key=(?1)", params![self.password])?;
|
|
|
|
|
|
|
+ //conn.execute("PRAGMA key=(?1)", params![self.password])?;
|
|
|
conn.execute_batch(&contents)?
|
|
conn.execute_batch(&contents)?
|
|
|
} else {
|
|
} else {
|
|
|
println!("Password is empty. You must set a password to use the wallet.");
|
|
println!("Password is empty. You must set a password to use the wallet.");
|
|
@@ -139,6 +139,7 @@ impl WalletDB {
|
|
|
|
|
|
|
|
pub fn put_keypair(&self, key_public: Vec<u8>, key_private: Vec<u8>) -> Result<()> {
|
|
pub fn put_keypair(&self, key_public: Vec<u8>, key_private: Vec<u8>) -> Result<()> {
|
|
|
let conn = Connection::open(&self.path)?;
|
|
let conn = Connection::open(&self.path)?;
|
|
|
|
|
+ println!("{}", self.password);
|
|
|
conn.execute("PRAGMA key=(?1)", params![self.password])?;
|
|
conn.execute("PRAGMA key=(?1)", params![self.password])?;
|
|
|
conn.execute(
|
|
conn.execute(
|
|
|
"INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
|
|
"INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
|
|
@@ -221,89 +222,101 @@ mod tests {
|
|
|
use super::*;
|
|
use super::*;
|
|
|
|
|
|
|
|
#[test]
|
|
#[test]
|
|
|
- pub fn test_keypair() -> Result<()> {
|
|
|
|
|
|
|
+ pub fn test_unlock() -> Result<()> {
|
|
|
|
|
+ let password = "roseiscool2021";
|
|
|
let path = join_config_path(&PathBuf::from("wallet.db"))?;
|
|
let path = join_config_path(&PathBuf::from("wallet.db"))?;
|
|
|
- let conn = Connection::open(path)?;
|
|
|
|
|
- let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
|
|
|
|
|
- let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
|
|
|
|
|
- let key_public = serial::serialize(&public);
|
|
|
|
|
- let key_private = serial::serialize(&secret);
|
|
|
|
|
- let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
|
|
|
|
|
- let _rows = stmt.query([])?;
|
|
|
|
|
- conn.execute(
|
|
|
|
|
- "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
|
|
|
|
|
- params![key_public, key_private],
|
|
|
|
|
- )?;
|
|
|
|
|
|
|
+ let contents = include_str!("../../res/schema.sql");
|
|
|
|
|
+ let conn = Connection::open(&path)?;
|
|
|
|
|
+ debug!(target: "walletdb", "OPENED CONNECTION AT PATH {:?}", path);
|
|
|
|
|
+ conn.execute("PRAGMA key=(?1)", params![password])?;
|
|
|
|
|
+ conn.execute_batch(&contents)?;
|
|
|
Ok(())
|
|
Ok(())
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- #[test]
|
|
|
|
|
- pub fn test_get_id() -> Result<()> {
|
|
|
|
|
- let path = join_config_path(&PathBuf::from("wallet.db"))?;
|
|
|
|
|
- let conn = Connection::open(path)?;
|
|
|
|
|
- let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
|
|
|
|
|
- let key_private = serial::serialize(&secret);
|
|
|
|
|
- let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
|
|
|
|
|
- let key_public = serial::serialize(&public);
|
|
|
|
|
- let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
|
|
|
|
|
- let _rows = stmt.query([])?;
|
|
|
|
|
- conn.execute(
|
|
|
|
|
- "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
|
|
|
|
|
- params![key_public, key_private],
|
|
|
|
|
- )?;
|
|
|
|
|
- let mut get_id =
|
|
|
|
|
- conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
|
|
|
|
|
- let rows =
|
|
|
|
|
- get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
|
|
|
|
|
- let mut key_id = Vec::new();
|
|
|
|
|
- for id in rows {
|
|
|
|
|
- key_id.push(id?)
|
|
|
|
|
- }
|
|
|
|
|
- println!("FOUND ID: {:?}", key_id.pop().unwrap());
|
|
|
|
|
- Ok(())
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //#[test]
|
|
|
|
|
+ //pub fn test_keypair() -> Result<()> {
|
|
|
|
|
+ // let path = join_config_path(&PathBuf::from("wallet.db"))?;
|
|
|
|
|
+ // let conn = Connection::open(path)?;
|
|
|
|
|
+ // let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
|
|
|
|
|
+ // let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
|
|
|
|
|
+ // let key_public = serial::serialize(&public);
|
|
|
|
|
+ // let key_private = serial::serialize(&secret);
|
|
|
|
|
+ // let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
|
|
|
|
|
+ // let _rows = stmt.query([])?;
|
|
|
|
|
+ // conn.execute(
|
|
|
|
|
+ // "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
|
|
|
|
|
+ // params![key_public, key_private],
|
|
|
|
|
+ // )?;
|
|
|
|
|
+ // Ok(())
|
|
|
|
|
+ //}
|
|
|
|
|
|
|
|
- #[test]
|
|
|
|
|
- pub fn test_own_coins() -> Result<()> {
|
|
|
|
|
- let key_private = Vec::new();
|
|
|
|
|
- let coin = Vec::new();
|
|
|
|
|
- let serial = Vec::new();
|
|
|
|
|
- let coin_blind = Vec::new();
|
|
|
|
|
- let valcom_blind = Vec::new();
|
|
|
|
|
- let value = Vec::new();
|
|
|
|
|
- let asset_id = Vec::new();
|
|
|
|
|
- let witness = Vec::new();
|
|
|
|
|
- let path = join_config_path(&PathBuf::from("wallet.db"))?;
|
|
|
|
|
- let conn = Connection::open(path)?;
|
|
|
|
|
- let contents = include_str!("../../res/schema.sql");
|
|
|
|
|
- match conn.execute_batch(&contents) {
|
|
|
|
|
- Ok(v) => println!("Database initalized successfully {:?}", v),
|
|
|
|
|
- Err(err) => println!("Error: {}", err),
|
|
|
|
|
- };
|
|
|
|
|
- //let mut unlock = conn.prepare("PRAGMA key = 'testkey'")?;
|
|
|
|
|
- //let _rows = unlock.query([])?;
|
|
|
|
|
- let mut get_id =
|
|
|
|
|
- conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
|
|
|
|
|
- let rows =
|
|
|
|
|
- get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
|
|
|
|
|
- let mut key_id = Vec::new();
|
|
|
|
|
- for id in rows {
|
|
|
|
|
- key_id.push(id?)
|
|
|
|
|
- }
|
|
|
|
|
- conn.execute(
|
|
|
|
|
- "INSERT INTO coins(coin, serial, value, asset_id, coin_blind, valcom_blind, witness, key_id)
|
|
|
|
|
- VALUES (:coin, :serial, :value, :asset_id, :coin_blind, :valcom_blind, :witness, :key_id)",
|
|
|
|
|
- named_params! {
|
|
|
|
|
- ":coin": coin,
|
|
|
|
|
- ":serial": serial,
|
|
|
|
|
- ":value": value,
|
|
|
|
|
- ":asset_id": asset_id,
|
|
|
|
|
- ":coin_blind": coin_blind,
|
|
|
|
|
- ":valcom_blind": valcom_blind,
|
|
|
|
|
- ":witness": witness,
|
|
|
|
|
- ":key_id": key_id.pop().expect("key_id not found!"),
|
|
|
|
|
- },
|
|
|
|
|
- )?;
|
|
|
|
|
- Ok(())
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //#[test]
|
|
|
|
|
+ //pub fn test_get_id() -> Result<()> {
|
|
|
|
|
+ // let path = join_config_path(&PathBuf::from("wallet.db"))?;
|
|
|
|
|
+ // let conn = Connection::open(path)?;
|
|
|
|
|
+ // let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
|
|
|
|
|
+ // let key_private = serial::serialize(&secret);
|
|
|
|
|
+ // let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
|
|
|
|
|
+ // let key_public = serial::serialize(&public);
|
|
|
|
|
+ // let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
|
|
|
|
|
+ // let _rows = stmt.query([])?;
|
|
|
|
|
+ // conn.execute(
|
|
|
|
|
+ // "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
|
|
|
|
|
+ // params![key_public, key_private],
|
|
|
|
|
+ // )?;
|
|
|
|
|
+ // let mut get_id =
|
|
|
|
|
+ // conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
|
|
|
|
|
+ // let rows =
|
|
|
|
|
+ // get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
|
|
|
|
|
+ // let mut key_id = Vec::new();
|
|
|
|
|
+ // for id in rows {
|
|
|
|
|
+ // key_id.push(id?)
|
|
|
|
|
+ // }
|
|
|
|
|
+ // println!("FOUND ID: {:?}", key_id.pop().unwrap());
|
|
|
|
|
+ // Ok(())
|
|
|
|
|
+ //}
|
|
|
|
|
+
|
|
|
|
|
+ //#[test]
|
|
|
|
|
+ //pub fn test_own_coins() -> Result<()> {
|
|
|
|
|
+ // let key_private = Vec::new();
|
|
|
|
|
+ // let coin = Vec::new();
|
|
|
|
|
+ // let serial = Vec::new();
|
|
|
|
|
+ // let coin_blind = Vec::new();
|
|
|
|
|
+ // let valcom_blind = Vec::new();
|
|
|
|
|
+ // let value = Vec::new();
|
|
|
|
|
+ // let asset_id = Vec::new();
|
|
|
|
|
+ // let witness = Vec::new();
|
|
|
|
|
+ // let path = join_config_path(&PathBuf::from("wallet.db"))?;
|
|
|
|
|
+ // let conn = Connection::open(path)?;
|
|
|
|
|
+ // let contents = include_str!("../../res/schema.sql");
|
|
|
|
|
+ // match conn.execute_batch(&contents) {
|
|
|
|
|
+ // Ok(v) => println!("Database initalized successfully {:?}", v),
|
|
|
|
|
+ // Err(err) => println!("Error: {}", err),
|
|
|
|
|
+ // };
|
|
|
|
|
+ // //let mut unlock = conn.prepare("PRAGMA key = 'testkey'")?;
|
|
|
|
|
+ // //let _rows = unlock.query([])?;
|
|
|
|
|
+ // let mut get_id =
|
|
|
|
|
+ // conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
|
|
|
|
|
+ // let rows =
|
|
|
|
|
+ // get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
|
|
|
|
|
+ // let mut key_id = Vec::new();
|
|
|
|
|
+ // for id in rows {
|
|
|
|
|
+ // key_id.push(id?)
|
|
|
|
|
+ // }
|
|
|
|
|
+ // conn.execute(
|
|
|
|
|
+ // "INSERT INTO coins(coin, serial, value, asset_id, coin_blind, valcom_blind, witness, key_id)
|
|
|
|
|
+ // VALUES (:coin, :serial, :value, :asset_id, :coin_blind, :valcom_blind, :witness, :key_id)",
|
|
|
|
|
+ // named_params! {
|
|
|
|
|
+ // ":coin": coin,
|
|
|
|
|
+ // ":serial": serial,
|
|
|
|
|
+ // ":value": value,
|
|
|
|
|
+ // ":asset_id": asset_id,
|
|
|
|
|
+ // ":coin_blind": coin_blind,
|
|
|
|
|
+ // ":valcom_blind": valcom_blind,
|
|
|
|
|
+ // ":witness": witness,
|
|
|
|
|
+ // ":key_id": key_id.pop().expect("key_id not found!"),
|
|
|
|
|
+ // },
|
|
|
|
|
+ // )?;
|
|
|
|
|
+ // Ok(())
|
|
|
|
|
+ //}
|
|
|
}
|
|
}
|