From 9531b6bea9fb29074c588a4e4e8838f6d9335a2b Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Tue, 1 Nov 2016 17:40:17 +0100 Subject: Moves cmix calculation stuff outisde of the node class. Moves the computations and cryptography to the the libcmix library where we can group and memory manage the underlying crypto-library. --- libcmix/cmix.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'libcmix/cmix.h') diff --git a/libcmix/cmix.h b/libcmix/cmix.h index e0d9961..3877382 100644 --- a/libcmix/cmix.h +++ b/libcmix/cmix.h @@ -1,7 +1,12 @@ +#pragma once + #ifdef __cplusplus extern "C" { #endif +#include "api.h" +#include "keypair.h" +#include "groupelement.h" #include "bignum.h" /*! @@ -26,6 +31,7 @@ enum cmix_error { no_error = 0, index_out_of_range = 1000, cmix_bignum_error = 2000, + out_of_memory = 4000, }; /*! @@ -63,6 +69,43 @@ enum cmix_error set_message(char const* message, struct CMixBuffer b, unsigned i */ enum cmix_error calculate_shared_key_part(struct Bignum* result, struct Bignum partial_shared, struct Bignum my_share, struct Bignum mod); +struct CMixContext { + struct Api api; + struct KeyPair keypair; + GroupElement network_key; + size_t nr_participants; + GroupElement* r; + GroupElement* s; + unsigned int* permutation; + GroupElement* pirs; +}; + +struct CMixContext initialize_cmix_context(struct Api api); + +void deinitialize(struct CMixContext* ctx); + +enum cmix_error initialize_keypair(struct CMixContext* ctx); + +enum cmix_error get_public_key(struct CMixContext const* ctx, char* buffer); + +enum cmix_error add_public_share(struct CMixContext const* ctx, char* buffer, char const* share); + +enum cmix_error start_mix(struct CMixContext* ctx, size_t nr_participants); + +enum cmix_error initialize_mix_randomness(struct CMixContext* ctx); + +size_t get_group_element_array_size(struct CMixContext const* ctx); + +enum cmix_error set_network_key(struct CMixContext* ctx, char const* buffer, size_t len); + +enum cmix_error encrypt_r(struct CMixContext const* ctx, char* random_buffer, char* message_buffer, size_t index); + +enum cmix_error encrypt_r_and_multiply(struct CMixContext const* ctx, char* random_buffer, char* message_buffer, char const* random_element, char const* message_element, size_t index); + +enum cmix_error multiply_s(struct CMixContext const* ctx, char* r_out_buffer, char* m_out_buffer, char const* r_in_buffer, char const* m_in_buffer, size_t index); + +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); + #ifdef __cplusplus } // extern "C" #endif -- cgit v1.2.3-70-g09d2