aboutsummaryrefslogtreecommitdiff
path: root/libcmix/cmix.c
diff options
context:
space:
mode:
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;
+}