ex3_crypto/verify/
tron.rs1use crate::evm_verify;
2evm_verify!("\x19TRON Signed Message:\n{}", TronMessageVerify);
3
4#[cfg(test)]
5mod tests {
6 use super::*;
7 use crate::secp256k1::Privkey;
8
9 #[test]
10 fn verify_message_signature_should_pass() {
11 let message =
12 "subject: wallet registration\nchain: 0x3c\nnetwork: 0x1\npub_key: 0x00\nversion: 0x0";
13 let private_str = "74deb7099cbe445d6917da6b5c3a43f03d6eafd3d760ed85d90933771369c0b9";
14 let signature: [u8; 65] = hex::decode("f8e6e1d4606cd8f12ea0530f69017ea1681a8b5288251827e859da92f272a53677bf98f3d74d21c17ab59df14caed0477d4ab45be2a74a654cd37c12e2660eae1c")
15 .unwrap()
16 .try_into()
17 .unwrap();
18 let pub_key = Privkey::from_slice(&hex::decode(private_str).unwrap())
19 .pubkey()
20 .unwrap();
21
22 let res = TronMessageVerify::verify(message.as_bytes(), &signature, None::<Vec<u8>>);
23 assert!(res.is_ok());
24 assert_eq!(res.unwrap(), pub_key.serialize(true));
25 }
26
27 #[test]
28 fn verify_wrong_message_signature_should_pass() {
29 let message =
30 "subject: wallet registration\nchain: 0x3c\nnetwork: 0x1\npub_key: 0x00\nversion: 0x0";
31 let wrong_message = message.replace("wallet", "wallets");
32 let private_str = "74deb7099cbe445d6917da6b5c3a43f03d6eafd3d760ed85d90933771369c0b9";
33 let signature: [u8; 65] = hex::decode("f8e6e1d4606cd8f12ea0530f69017ea1681a8b5288251827e859da92f272a53677bf98f3d74d21c17ab59df14caed0477d4ab45be2a74a654cd37c12e2660eae1c")
34 .unwrap()
35 .try_into()
36 .unwrap();
37 let pub_key = Privkey::from_slice(&hex::decode(private_str).unwrap())
38 .pubkey()
39 .unwrap();
40
41 let res = TronMessageVerify::verify(wrong_message.as_bytes(), &signature, None::<Vec<u8>>);
42 assert!(res.is_ok());
43 assert_ne!(res.unwrap(), pub_key.serialize(true));
44 }
45}