Add err handling on sign
arnaucube root@arnaucube.com
Sun, 10 Jul 2022 15:42:47 +0200
1 files changed,
4 insertions(+),
6 deletions(-)
jump to
M
src/lib.rs
→
src/lib.rs
@@ -40,7 +40,7 @@ pub fn key_image(&self) -> EdwardsProjective {
hash_to_point(self.pk).mul(self.sk.into_repr()) } - pub fn sign(&self, ring: Vec<PublicKey>, m: Vec<u8>) -> Signature { + pub fn sign(&self, ring: Vec<PublicKey>, m: Vec<u8>) -> Result<Signature, String> { let ring_size = ring.len(); // determine pi (the position of signer's public key in R let mut pi = 0;@@ -54,8 +54,7 @@ break;
} } if !found { - // error - println!("key not found in the ring"); + return Err("key not found in the ring".to_string()); } let mut rng = ark_std::rand::thread_rng();@@ -97,7 +96,7 @@ }
// compute r_pi r[pi] = a - c[pi] * self.sk; - (c[0], r) + Ok((c[0], r)) } }@@ -112,7 +111,6 @@
let c1 = sig.0; let r = sig.1; if ring_size != r.len() { - println!("ERROR"); // TODO return false; } // TODO check that key_image \in G (EC), by l * key_image == 0@@ -190,7 +188,7 @@ // set K_pi
ring[pi] = k_pi.pk; let m: Vec<u8> = vec![1, 2, 3, 4]; - let sig = k_pi.sign(ring.clone(), m.clone()); + let sig = k_pi.sign(ring.clone(), m.clone()).unwrap(); println!("sig {:?}", sig); let key_image = k_pi.key_image();