diff --git a/src/wallet/wallet_impl.rs b/src/wallet/wallet_impl.rs index 9df5fce..802f960 100644 --- a/src/wallet/wallet_impl.rs +++ b/src/wallet/wallet_impl.rs @@ -178,7 +178,10 @@ impl Wallet { { let secp = Secp256k1::new(); let secret_key = self.get_secret_key(); - let hex_str = hex::decode(msg).unwrap(); + let hex_str = match hex::decode(msg){ + Ok(v) => v, + Err(e) => panic!("error decode hex str: {}", e), + }; let message_to_hash = Message::from_slice(&hex_str).unwrap(); let (_recovery_id, signature) = secp .sign_ecdsa_recoverable(&message_to_hash, &secret_key) @@ -192,29 +195,33 @@ impl Wallet { let pk = self.get_public_key(); let pk = &pk.serialize(); let msg = msg.as_bytes(); - println!("msg before encrypt: {:?}", msg); + // println!("msg before encrypt: {:?}", msg); let msg_encrypt = match encrypt(pk, &msg) { Ok(v) => v, Err(e) => panic!("error encrypt content: {}", e), }; - println!("msg after encrypt: {:?}", &msg_encrypt); + // println!("msg after encrypt: {:?}", &msg_encrypt); let str_encrypt = hex::encode(&msg_encrypt); Ok(str_encrypt) } - pub fn zdecrypt(&self, msg: &str) -> Result { + pub fn zdecrypt(&self, msg1: &str) -> Result { let sk = self.get_secret_key(); let sk = sk.secret_bytes(); + let mut msg: String = msg1.clone().to_string(); + if msg.len() % 2 == 1 { + msg = "0".to_owned() + &msg; + } + println!("msg to decrypt: {:?}", &msg); let msg = match hex::decode(&msg) { Ok(v) => v, - Err(e) => panic!("error decode hex str {}", e), + Err(e) => panic!("error decode hex str: {}", e), }; - println!("msg to decrypt: {:?}", &msg); let msg_decrypt = match decrypt(&sk, &msg) { Ok(v) => v, Err(e) => panic!("error decrypt content: {}", e), }; - println!("msg after decrypt: {:?}", &msg_decrypt); + // println!("msg after decrypt: {:?}", &msg_decrypt); // let msg_decrypt = hex::encode(msg_decrypt); let str_decrypt = match str::from_utf8(&msg_decrypt) { Ok(v) => v,