YACA: Add wrappers for yaca API 74/73574/11
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Mon, 13 Jun 2016 12:50:33 +0000 (14:50 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Tue, 14 Jun 2016 11:25:09 +0000 (13:25 +0200)
- Key generation
- Public key extraction
- Context creation
- Buffer allocation

Change-Id: Ifdde9ff0820ceda7bee4fce85c576322c312fb12

src/yaca/yaca-test-common.cpp
src/yaca/yaca-test-common.h

index edfb971..e2c6ffb 100644 (file)
@@ -22,6 +22,8 @@
 #include <vector>
 #include <string>
 
+#include <yaca_seal.h>
+
 #include "yaca-test-common.h"
 
 namespace {
@@ -64,3 +66,49 @@ BufPtr wrap_ptr(char* buffer)
 {
     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);
+}
index f05db57..ff62a58 100644 (file)
@@ -104,3 +104,18 @@ typedef std::unique_ptr<char, int (*)(void*)> BufPtr;
 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);