aboutsummaryrefslogtreecommitdiff
path: root/libcmix/cmix.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcmix/cmix.c')
-rw-r--r--libcmix/cmix.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/libcmix/cmix.c b/libcmix/cmix.c
index 2ba5fd9..149bc7d 100644
--- a/libcmix/cmix.c
+++ b/libcmix/cmix.c
@@ -205,6 +205,25 @@ enum cmix_error permute_and_multiply_encrypted_s(struct CMixContext const* ctx,
return no_error;
}
+enum cmix_error permute_and_multiply_s(struct CMixContext const* ctx, char** out_buffer, char const** message, size_t nr_elements) {
+ size_t el_size = get_group_element_array_size(ctx);
+
+ for(size_t i = 0; i < nr_elements; ++i) {
+ unsigned int new_pos = ctx->permutation[i];
+
+ GroupElement message_el = ctx->api.array_to_element(message[i], el_size, false);
+ GroupElement mult = ctx->api.multiply(message_el, ctx->s[new_pos], false);
+
+ element_to_buffer(ctx, out_buffer[new_pos], mult);
+
+ ctx->api.free_group_element(message_el);
+ ctx->api.free_group_element(mult);
+ }
+
+ return no_error;
+}
+
+
enum cmix_error multiply_s(struct CMixContext const* ctx, char* out_buffer, char const* message, size_t index) {
size_t el_size = get_group_element_array_size(ctx);