return wrap_ptr(key_pub);
}
-CtxPtr seal_init(const KeyPtr& key_pub,
+size_t get_output_length(const CtxPtr &ctx, size_t input_len)
+{
+ size_t output_len;
+
+ YACA_SUCCESS(yaca_context_get_output_length(ctx.get(), input_len, &output_len));
+
+ return output_len;
+}
+
+CtxPtr seal_init(const KeyPtr &key_pub,
yaca_encrypt_algorithm_e algo,
yaca_block_cipher_mode_e bcm,
size_t sym_key_bit_len,
return wrap_ptr(ctx);
}
+CtxPtr sign_init(yaca_digest_algorithm_e algo, const KeyPtr &key_prv)
+{
+ yaca_context_h ctx = YACA_CONTEXT_NULL;
+
+ YACA_SUCCESS(yaca_sign_initialize(&ctx, algo, key_prv.get()));
+
+ return wrap_ptr(ctx);
+}
+
+CtxPtr verify_init(yaca_digest_algorithm_e algo, const KeyPtr &key_prv)
+{
+ yaca_context_h ctx = YACA_CONTEXT_NULL;
+
+ YACA_SUCCESS(yaca_verify_initialize(&ctx, algo, key_prv.get()));
+
+ return wrap_ptr(ctx);
+}
+
CtxPtr hmac_init(yaca_digest_algorithm_e algo, const KeyPtr& key)
{
yaca_context_h ctx = YACA_CONTEXT_NULL;
KeyPtr generate_key(yaca_key_type_e type, size_t bit_len);
-KeyPtr extract_public_key(const KeyPtr& key_priv);
+KeyPtr extract_public_key(const KeyPtr &key_priv);
-CtxPtr seal_init(const KeyPtr& key_pub,
+size_t get_output_length(const CtxPtr &ctx, size_t input_len = 0);
+
+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);
+CtxPtr sign_init(yaca_digest_algorithm_e algo, const KeyPtr &key_prv);
+
+CtxPtr verify_init(yaca_digest_algorithm_e algo, const KeyPtr &key_prv);
+
CtxPtr hmac_init(yaca_digest_algorithm_e algo, const KeyPtr& key);
CtxPtr digest_init(yaca_digest_algorithm_e algo);
/* If input is longer than len it is truncated and an ellipsis is appended.
* Otherwise the original string is returned. */
std::string truncate_str(const std::string& input, size_t len);
+