|
|
@ -15,6 +15,16 @@ pub struct PublicKey { |
|
|
|
pub key: [u8; 32] |
|
|
|
pub key: [u8; 32] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
impl PublicKey { |
|
|
|
|
|
|
|
pub fn verify_sign(&self, raw: &Vec<u8>, sign: &Vec<u8>) -> bool { |
|
|
|
|
|
|
|
PK::from_bytes(&self.key).unwrap() |
|
|
|
|
|
|
|
.verify( |
|
|
|
|
|
|
|
raw, |
|
|
|
|
|
|
|
&Signature::from_bytes(sign.clone().into_boxed_slice().as_ref()).unwrap(), |
|
|
|
|
|
|
|
).is_ok() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub struct Keys { |
|
|
|
pub struct Keys { |
|
|
|
pub pair: Keypair, |
|
|
|
pub pair: Keypair, |
|
|
@ -31,11 +41,7 @@ pub fn verify_sign(msg: &crate::message::Message) -> bool { |
|
|
|
match &msg.clone().sign { |
|
|
|
match &msg.clone().sign { |
|
|
|
Sign::NoSign => true, |
|
|
|
Sign::NoSign => true, |
|
|
|
Sign::Signed(key, sign) => { |
|
|
|
Sign::Signed(key, sign) => { |
|
|
|
PK::from_bytes(&key.key).unwrap() |
|
|
|
key.verify_sign(&msg.get_hash(), sign) |
|
|
|
.verify( |
|
|
|
|
|
|
|
msg.get_hash().as_ref(), |
|
|
|
|
|
|
|
&Signature::from_bytes(sign.clone().into_boxed_slice().as_ref()).unwrap(), |
|
|
|
|
|
|
|
).is_ok() |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|