diff --git a/Cargo.lock b/Cargo.lock index 3cda2ff..f5180c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -193,14 +193,13 @@ dependencies = [ [[package]] name = "ip_lib" -version = "0.1.0" +version = "1.0.0" dependencies = [ "aes-gcm", "brotli", "hex", "home", "rand", - "rpassword", "sha2", ] @@ -264,27 +263,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rpassword" -version = "7.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322" -dependencies = [ - "libc", - "rtoolbox", - "winapi", -] - -[[package]] -name = "rtoolbox" -version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "sha2" version = "0.10.6" diff --git a/Cargo.toml b/Cargo.toml index 69c0280..9782f5a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,13 +1,12 @@ [package] name = "ip_lib" -version = "0.1.0" +version = "1.0.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] home = "0.5.4" -rpassword = "7.2" rand = { features = ["std"], default-features = false, version = "0.8.5" } aes-gcm = { features = ["alloc", "aes"], default-features = false, version = "0.10.1" } sha2 = { default-features = false, version = "0.10.6" } diff --git a/src/lib.rs b/src/lib.rs index 2ea44b1..838b6dd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -198,11 +198,10 @@ pub fn get_ipass_folder() -> String { return path; } -pub fn create_entry(name: &String, pw: String) -> bool { +pub fn create_entry(name: &String, pw: String, mpw: String) -> bool { if std::path::Path::new(&(get_ipass_folder()+name+".ipass")).exists() { return false; } - let mpw = ask_for_pw(); // println!("{pw}"); let pw = encrypt_pass(name.to_owned(), pw,mpw); let mut file = File::create(get_ipass_folder()+name+".ipass").unwrap(); @@ -215,13 +214,11 @@ fn read_entry(name:&String,mpw:String) -> String { return decrypt_pass(name.to_owned(),hex::decode(content).unwrap(),mpw).to_owned(); } -pub fn get_entry(name:&String) -> String { - let mpw = ask_for_pw(); +pub fn get_entry(name:&String, mpw: String) -> String { return read_entry(name,mpw); } -pub fn edit_password(name:&String, password:String) { - let mpw = ask_for_pw(); +pub fn edit_password(name:&String, password:String, mpw: String) { let entry = read_entry(name, mpw.clone()); // println!("entry: {entry}"); let mut parts = entry.split(";"); @@ -232,8 +229,7 @@ pub fn edit_password(name:&String, password:String) { file.write_all(data.as_bytes()).unwrap(); } -pub fn edit_username(name:&String, username: String) { - let mpw = ask_for_pw(); +pub fn edit_username(name:&String, username: String, mpw: String) { let entry = read_entry(name, mpw.clone()); // println!("entry: {entry}"); let mut parts = entry.split(";"); @@ -244,11 +240,6 @@ pub fn edit_username(name:&String, username: String) { file.write_all(data.as_bytes()).unwrap(); } -fn ask_for_pw() -> String { - let output = rpassword::prompt_password("Please enter the master password: ").unwrap(); - return output.replace("\n", "").replace("\r",""); -} - pub fn prompt_answer(toprint: String) -> String { prompt_answer_nolower(toprint).to_lowercase() } @@ -262,7 +253,7 @@ pub fn prompt_answer_nolower(toprint: String) -> String { return choice.trim().to_string(); } -pub fn rename(name: &String, new_name: &String) { +pub fn rename(name: &String, new_name: &String, mpw: String) { if !std::path::Path::new(&(get_ipass_folder()+name+".ipass")).exists() { return; } @@ -270,7 +261,6 @@ pub fn rename(name: &String, new_name: &String) { return; } let content = &mut read_to_string(get_ipass_folder()+name+".ipass").expect("Should have been able to read the file"); - let mpw = ask_for_pw(); let mut pw = decrypt_pass(name.to_owned(),hex::decode(content).unwrap(),mpw.clone()).to_owned(); pw = encrypt_pass(new_name.to_owned(), pw,mpw);