diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-01 17:40:17 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-01 17:40:17 +0100 |
| commit | 9531b6bea9fb29074c588a4e4e8838f6d9335a2b (patch) | |
| tree | 4d0e9429203bf5976507b43e6663f9fe0b21e6d0 /libcmix/cmix.h | |
| parent | bdc26e00ad99f4f670df1a65b5e6439d0dfadc87 (diff) | |
| download | cmix-9531b6bea9fb29074c588a4e4e8838f6d9335a2b.tar.gz cmix-9531b6bea9fb29074c588a4e4e8838f6d9335a2b.tar.bz2 cmix-9531b6bea9fb29074c588a4e4e8838f6d9335a2b.zip | |
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.
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 |
