]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Add test for keypairs encrypt/decrypt 5100/head
authorVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 9 Aug 2024 12:10:35 +0000 (13:10 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 9 Aug 2024 12:10:35 +0000 (13:10 +0100)
test/rspamd_cxx_unit_cryptobox.hxx

index 3f3cab697846219311f761461f7e7ff12f37151f..5829b1e4386db698a20f16041294ff0b1646f14a 100644 (file)
@@ -20,6 +20,7 @@
 #define RSPAMD_RSPAMD_CXX_UNIT_CRYPTOBOX_HXX
 #include "libcryptobox/cryptobox.h"
 #include <string>
+#include <string_view>
 
 TEST_SUITE("rspamd_cryptobox")
 {
@@ -151,6 +152,31 @@ TEST_SUITE("rspamd_cryptobox")
                                                                                                        pk);
                CHECK(check_result == true);
        }
+
+       TEST_CASE("rspamd_keypair_encryption")
+       {
+               auto *kp = rspamd_keypair_new(RSPAMD_KEYPAIR_KEX);
+               std::string data{"data to be encrypted"};
+               unsigned char *out;
+               gsize outlen;
+               GError *err = nullptr;
+
+               auto ret = rspamd_keypair_encrypt(kp, reinterpret_cast<const unsigned char *>(data.data()), data.size(),
+                                                                                 &out, &outlen, &err);
+               CHECK(ret);
+               CHECK(err == nullptr);
+
+               unsigned char *decrypted;
+               gsize decrypted_len;
+               ret = rspamd_keypair_decrypt(kp, out, outlen, &decrypted, &decrypted_len, &err);
+               CHECK(ret);
+               CHECK(err == nullptr);
+               CHECK(decrypted_len == data.size());
+               CHECK(data == std::string_view{reinterpret_cast<const char *>(decrypted), decrypted_len});
+
+               g_free(out);
+               g_free(decrypted);
+       }
 }
 
 #endif