Skip to content

Commit 2c600fe

Browse files
author
replydev
committed
Fix secret padding parsing, fix warnings
1 parent 0578a1e commit 2c600fe

File tree

6 files changed

+46
-32
lines changed

6 files changed

+46
-32
lines changed

src/argument_functions.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,15 @@ pub fn import(args: Vec<String>){
3838
return;
3939
}
4040
}
41-
database_loader::overwrite_database(elements);
42-
println!("Successfully imported database");
41+
42+
match database_loader::overwrite_database(elements){
43+
Ok(()) => {
44+
println!("Successfully imported database");
45+
},
46+
Err(e) => {
47+
println!("An error occurred during database overwriting: {}",e);
48+
}
49+
}
4350
}
4451
else{
4552
println!("Invalid arguments, type cotp --import [APPNAME] [PATH]");

src/cryptograpy.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,8 @@ fn argon_derive_key(key: &mut[u8;32],password_bytes: &[u8],salt: &pwhash::argon2
2828
pwhash::argon2id13::OPSLIMIT_INTERACTIVE,
2929
pwhash::argon2id13::MEMLIMIT_INTERACTIVE);
3030
match result{
31-
Ok(&[u8]) => Ok(Key(*key)),
32-
Ok(&[]) => Ok(Key(*key)),
33-
Ok(&[_,_,..]) =>Ok(Key(*key)),
34-
Err(()) => Err(String::from("Failed to derive encryption key"))
31+
Err(()) => Err(String::from("Failed to derive encryption key")),
32+
_=> Ok(Key(*key)),
3533
}
3634
}
3735

src/database_loader.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ pub fn read_from_file() -> Result<Vec<OTPElement>,String>{
8484

8585
pub fn check_secret(secret: &str) -> bool{
8686
//only uppercase characters and numbers
87-
let upper_secret = secret.to_uppercase();
87+
let upper_secret = secret.to_uppercase().replace("=", "");
8888
return upper_secret.chars().all(char::is_alphanumeric);
8989
}
9090

@@ -99,8 +99,10 @@ pub fn add_element(secret: &String,issuer: &String,label: &String) -> Result<(),
9999
Err(e) => return Err(e)
100100
}
101101
elements.push(otp_element);
102-
overwrite_database(elements);
103-
Ok(())
102+
match overwrite_database(elements){
103+
Ok(()) => Ok(()),
104+
Err(e) => Err(format!("{}",e))
105+
}
104106
}
105107

106108
pub fn remove_element_from_db(mut id: usize) -> Result<(),String>{
@@ -127,8 +129,10 @@ pub fn remove_element_from_db(mut id: usize) -> Result<(),String>{
127129
break;
128130
}
129131
}
130-
overwrite_database(elements);
131-
Ok(())
132+
match overwrite_database(elements){
133+
Ok(()) => Ok(()),
134+
Err(e) => Err(format!("{}",e)),
135+
}
132136
},
133137
Err(e) => Err(e)
134138
}
@@ -162,8 +166,10 @@ pub fn edit_element(mut id: usize, secret: &str,issuer: &str,label: &str) -> Res
162166
break;
163167
}
164168
}
165-
overwrite_database(elements);
166-
Ok(())
169+
match overwrite_database(elements){
170+
Ok(()) => Ok(()),
171+
Err(e) => Err(format!("{}",e)),
172+
}
167173
},
168174
Err(e) => Err(e)
169175
}

src/importers/aegis.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,31 @@ use serde::Deserialize;
55

66
#[derive(Deserialize)]
77
struct AegisJson{
8-
version: u64,
9-
header: AegisHeader,
8+
//version: u64,
9+
//header: AegisHeader,
1010
db: AegisDb,
1111
}
1212

1313
#[derive(Deserialize)]
1414
struct AegisHeader{
15-
slots: Option<String>,
16-
params: Option<String>,
15+
//slots: Option<String>,
16+
//params: Option<String>,
1717
}
1818

1919
#[derive(Deserialize)]
2020
struct AegisDb{
21-
version: u64,
21+
//version: u64,
2222
entries: Vec<AegisElement>,
2323
}
2424

2525
#[derive(Deserialize)]
2626
struct AegisElement{
2727
#[serde(rename = "type")]
2828
_type: String,
29-
uuid: String,
29+
//uuid: String,
3030
name: String,
3131
issuer: String,
32-
icon: Option<String>,
32+
//icon: Option<String>,
3333
info: AegisInfo,
3434
}
3535

src/main.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,19 @@ fn init() -> Result<(), String>{
3131
_=> {},
3232
}
3333
match utils::create_db_if_needed() {
34-
Ok(()) => {},
34+
Ok(value) => {
35+
if value {
36+
match database_loader::overwrite_database_json("[]"){
37+
Ok(()) => return Ok(()),
38+
Err(_e) => return Err(String::from("An error occurred during database overwriting")),
39+
}
40+
}
41+
Ok(())
42+
},
3543
Err(()) => {
3644
return Err(String::from("An error occurred during database creation"));
3745
},
3846
}
39-
match database_loader::overwrite_database_json("[]"){
40-
Ok(()) => Ok(()),
41-
Err(_e) => Err(String::from("An error occurred during database overwriting")),
42-
}
4347
}
4448

4549
fn main() {

src/utils.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use std::fs::{File};
22
use std::io::prelude::*;
3-
use std::path::{Path,PathBuf};
3+
use std::path::PathBuf;
44
use std::time::{SystemTime, UNIX_EPOCH};
55
use dirs::home_dir;
6-
use crate::database_loader;
76

87
#[cfg(debug_assertions)]
98
pub fn get_db_path() -> PathBuf{
@@ -26,22 +25,22 @@ fn get_cotp_folder() -> PathBuf{
2625
cotp_dir.join(".cotp")
2726
}
2827

29-
pub fn create_db_if_needed() -> Result<(),()>{
28+
pub fn create_db_if_needed() -> Result<bool,()>{
3029
let cotp_folder = get_cotp_folder();
3130
if !cotp_folder.exists(){
3231
match std::fs::create_dir(cotp_folder){
33-
Ok(()) => println!("Created .cotp folder"),
34-
Err(_e) => (),
32+
Ok(()) => {},
33+
Err(_e) => {},
3534
}
3635
}
3736
let db_path = get_db_path();
3837
if !db_path.exists() {
3938
match std::fs::File::create(db_path){
40-
Ok(_f) => return Ok(()),
39+
Ok(_f) => return Ok(true),
4140
Err(_e) => return Err(()),
4241
}
4342
}
44-
Ok(())
43+
Ok(false)
4544
}
4645

4746
pub fn write_to_file(content: &str, file: &mut File) -> Result<(),std::io::Error>{

0 commit comments

Comments
 (0)