summaryrefslogtreecommitdiff
path: root/webhook/src/handler/tests/utils.rs
diff options
context:
space:
mode:
authorn1c00o <34602094+n1c00o@users.noreply.github.com>2021-10-16 22:26:09 +0200
committerGitHub <noreply@github.com>2021-10-16 22:26:09 +0200
commite58e816ceb8caa3c77dd98a952761b7e7f05b6cb (patch)
treeca5c9409986ff538e7a674473c1d642627d1055c /webhook/src/handler/tests/utils.rs
parent03908129599260587fe7b9fd8254d28ad50b8714 (diff)
parentb94b0552f81e667bec31352901bbc8c76f1b4216 (diff)
Merge branch 'main' into nats-structs-discord-gateway
Diffstat (limited to 'webhook/src/handler/tests/utils.rs')
-rw-r--r--webhook/src/handler/tests/utils.rs46
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