#include <vector>
#include <string>
+#include <yaca_seal.h>
+
#include "yaca-test-common.h"
namespace {
{
return BufPtr(buffer, yaca_free);
}
+
+KeyPtr null_key()
+{
+ return wrap_ptr(static_cast<yaca_key_h>(YACA_KEY_NULL));
+}
+
+KeyPtr generate_key(yaca_key_type_e type, size_t bit_len)
+{
+ yaca_key_h key;
+ YACA_SUCCESS(yaca_key_generate(type, bit_len, &key));
+ YACA_ASSERT_MSG(key != YACA_KEY_NULL, "NULL key generated");
+ return wrap_ptr(key);
+}
+
+KeyPtr extract_public_key(const KeyPtr& key_priv)
+{
+ yaca_key_h key_pub;
+ YACA_SUCCESS(yaca_key_extract_public(key_priv.get(), &key_pub));
+ YACA_ASSERT_MSG(key_pub != YACA_KEY_NULL, "NULL public key extracted");
+ return wrap_ptr(key_pub);
+}
+
+CtxPtr seal_init(const KeyPtr& key_pub,
+ yaca_encrypt_algorithm_e algo,
+ yaca_block_cipher_mode_e bcm,
+ size_t sym_key_bit_len,
+ KeyPtr& sym_key_ptr,
+ KeyPtr& iv_ptr)
+{
+ yaca_context_h ctx = YACA_CONTEXT_NULL;
+ yaca_key_h sym_key = YACA_KEY_NULL;
+ yaca_key_h iv = YACA_KEY_NULL;
+
+ YACA_SUCCESS(yaca_seal_initialize(&ctx, key_pub.get(), algo, bcm, sym_key_bit_len, &sym_key, &iv));
+
+ sym_key_ptr.reset(sym_key);
+ iv_ptr.reset(iv);
+ return wrap_ptr(ctx);
+}
+
+BufPtr create_buffer(size_t size)
+{
+ char *buffer;
+ YACA_SUCCESS(yaca_malloc(size, (void**)&buffer));
+ return wrap_ptr(buffer);
+}
KeyPtr wrap_ptr(yaca_key_h key);
CtxPtr wrap_ptr(yaca_context_h ctx);
BufPtr wrap_ptr(char* buffer);
+
+KeyPtr null_key();
+
+KeyPtr generate_key(yaca_key_type_e type, size_t bit_len);
+
+KeyPtr extract_public_key(const KeyPtr& key_priv);
+
+CtxPtr seal_init(const KeyPtr& key_pub,
+ yaca_encrypt_algorithm_e algo,
+ yaca_block_cipher_mode_e bcm,
+ size_t sym_key_bit_len,
+ KeyPtr& sym_key_ptr,
+ KeyPtr& iv_ptr);
+
+BufPtr create_buffer(size_t size);