aboutsummaryrefslogtreecommitdiff
path: root/libcmix/cmix.c
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-11-04 13:11:11 +0100
committerDennis Brentjes <d.brentjes@gmail.com>2016-11-04 13:11:11 +0100
commit58ead6a9a4a2a81f067ad698366bd32841346058 (patch)
tree72398158aa8a077b48a9116dbbff629d340208af /libcmix/cmix.c
parent837d8336fb5323ff797cbcbce17a05a3838e051f (diff)
downloadcmix-58ead6a9a4a2a81f067ad698366bd32841346058.tar.gz
cmix-58ead6a9a4a2a81f067ad698366bd32841346058.tar.bz2
cmix-58ead6a9a4a2a81f067ad698366bd32841346058.zip
Consolidated all the crypto apis and implemented the Precomputation Postprocessing step
Diffstat (limited to 'libcmix/cmix.c')
-rw-r--r--libcmix/cmix.c16
1 files changed, 16 insertions, 0 deletions
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;
+}