diff options
| author | Matthieu <matthieu@developershouse.xyz> | 2021-10-16 09:33:56 +0400 |
|---|---|---|
| committer | Matthieu <matthieu@developershouse.xyz> | 2021-10-16 09:33:56 +0400 |
| commit | b94b0552f81e667bec31352901bbc8c76f1b4216 (patch) | |
| tree | ccc73abd12875502a954eaf10d080e02b5eb42ac /webhook/src/handler/tests/utils.rs | |
| parent | b8c904a2ccef5b7389356b858a3fd4ffbbfb1ae6 (diff) | |
| parent | d2aa675b39361eccb1f5e74b08bc6428f564daa3 (diff) | |
merge branch management
Diffstat (limited to 'webhook/src/handler/tests/utils.rs')
| -rw-r--r-- | webhook/src/handler/tests/utils.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/webhook/src/handler/tests/utils.rs b/webhook/src/handler/tests/utils.rs new file mode 100644 index 0000000..f8cdac2 --- /dev/null +++ b/webhook/src/handler/tests/utils.rs @@ -0,0 +1,46 @@ +pub fn generate_keypair() -> ( + String, + [u8; libsodium_sys::crypto_sign_ed25519_SECRETKEYBYTES as usize], +) { + use libsodium_sys::crypto_sign_ed25519_keypair; + let pk_s: String; + + let mut pk = [0; libsodium_sys::crypto_sign_ed25519_PUBLICKEYBYTES as usize]; + let mut sk = [0; libsodium_sys::crypto_sign_ed25519_SECRETKEYBYTES as usize]; + + let pk_p = pk.as_mut_ptr(); + let sk_p = sk.as_mut_ptr(); + + // generate keypair + unsafe { + if crypto_sign_ed25519_keypair(pk_p, sk_p) < 0 { + panic!("keypair generation failed!"); + } + }; + + pk_s = hex::encode(pk); + return (pk_s, sk); +} + +pub fn sign_message( + msg: Vec<u8>, + sk: [u8; libsodium_sys::crypto_sign_ed25519_SECRETKEYBYTES as usize], +) -> String { + use libc::c_ulonglong; + use libsodium_sys::crypto_sign_ed25519_detached; + + let len = msg.len(); + let mut signature_len: c_ulonglong = 0; + let mut str = [0; 64]; + unsafe { + crypto_sign_ed25519_detached( + str.as_mut_ptr(), + &mut signature_len, + msg.as_ptr(), + len as u64, + sk.as_ptr(), + ); + }; + + return hex::encode(str); +}
\ No newline at end of file |
