From 58ead6a9a4a2a81f067ad698366bd32841346058 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Fri, 4 Nov 2016 13:11:11 +0100 Subject: Consolidated all the crypto apis and implemented the Precomputation Postprocessing step --- libcmix/cmix.c | 16 ++++++++++++++++ libcmix/cmix.h | 2 ++ 2 files changed, 18 insertions(+) (limited to 'libcmix') diff --git a/libcmix/cmix.c b/libcmix/cmix.c index 4893c6c..28f56db 100644 --- a/libcmix/cmix.c +++ b/libcmix/cmix.c @@ -216,3 +216,19 @@ enum cmix_error key_exchange(struct CMixContext const* ctx, GroupElement* shared return no_error; } + +enum cmix_error post_process(struct CMixContext* ctx, char const* r_epirs, char const* m_epirs, size_t index) { + GroupElement x = ctx->api.array_to_element(r_epirs, get_group_element_array_size(ctx), true); + + GroupElement D = ctx->api.get_decryption_share(x, ctx->keypair.sec); + + GroupElement msg = ctx->api.array_to_element(m_epirs, get_group_element_array_size(ctx), true); + GroupElement pirs = ctx->api.multiply(D, msg, true); + + ctx->pirs[index] = pirs; + ctx->api.free_group_element(x); + ctx->api.free_group_element(D); + ctx->api.free_group_element(msg); + + return no_error; +} diff --git a/libcmix/cmix.h b/libcmix/cmix.h index 3877382..433c3bc 100644 --- a/libcmix/cmix.h +++ b/libcmix/cmix.h @@ -106,6 +106,8 @@ enum cmix_error multiply_s(struct CMixContext const* ctx, char* r_out_buffer, ch enum cmix_error key_exchange(struct CMixContext const* ctx, GroupElement* shared_key, char* public_key_buffer, char* exhange_value_buffer, char const* pubkey, char const* value); +enum cmix_error post_process(struct CMixContext* ctx, char const* r_epirs, char const* m_epirs, size_t index); + #ifdef __cplusplus } // extern "C" #endif -- cgit v1.2.3-70-g09d2