diff options
Diffstat (limited to 'libcmix/cmix.h')
| -rw-r--r-- | libcmix/cmix.h | 43 |
1 files changed, 43 insertions, 0 deletions
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 |
