#define RSPAMD_RSPAMD_CXX_UNIT_CRYPTOBOX_HXX
#include "libcryptobox/cryptobox.h"
#include <string>
+#include <string_view>
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