diff options
Diffstat (limited to 'libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c')
| -rw-r--r-- | libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c b/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c index a0512dd..c610556 100644 --- a/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c +++ b/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c @@ -152,11 +152,15 @@ GroupElement gcrypt_elgamal_multiply(GroupElement lh, GroupElement rh, bool secu return ret; } +size_t gcrypt_elgamal_get_group_element_array_size() { + return 256u; +} + void gcrypt_elgamal_delete_group_element(void* el) { gcry_mpi_release((gcry_mpi_t) el); } -void gcrypt_elgamal_add_public_share(char** buffer, size_t* out_len, char const* share, size_t in_len, void* pubkey) { +void gcrypt_elgamal_add_public_share(GroupElement* el, char const* share, size_t in_len, void* pubkey) { gcry_error_t error; size_t parse_error_pos; @@ -170,14 +174,12 @@ void gcrypt_elgamal_add_public_share(char** buffer, size_t* out_len, char const* gcry_mpi_t result = gcry_mpi_new(0); gcry_mpi_mulm(result, mpi_share, y, p); - error = gcry_mpi_aprint(GCRYMPI_FMT_USG, (unsigned char**) buffer, out_len, result); - check(error); + *el = result; gcry_mpi_release(mpi_share); - gcry_mpi_release(result); } -struct SharedKey gcrypt_elgamal_derive_shared_key(struct KeyPair keypair, unsigned char const* other_pub, size_t pub_len, unsigned char const* value, size_t value_len, void* priv_value, bool swap) { +GroupElement gcrypt_elgamal_derive_shared_key(struct KeyPair keypair, unsigned char const* other_pub, size_t pub_len, unsigned char const* value, size_t value_len, void* priv_value, bool swap) { gcry_error_t error; size_t parse_error_pos; @@ -192,9 +194,7 @@ struct SharedKey gcrypt_elgamal_derive_shared_key(struct KeyPair keypair, unsign gcry_mpi_release(ga); - return (struct SharedKey){ - gab - }; + return gab; } void gcrypt_elgamal_delete_shared_key(struct SharedKey* s) { @@ -241,6 +241,7 @@ GroupElementGetter elgamal_get_group_element = &gcrypt_elgamal_get_group_element GroupElementDeleter elgamal_delete_group_element = &gcrypt_elgamal_delete_group_element; KeyExchangeValueGetter elgamal_get_key_exchange_value = &gcrypt_elgamal_get_key_exchange_value; GroupElementMultiplier elgamal_multiply = &gcrypt_elgamal_multiply; +GroupElementArraySizeGetter elgamal_get_group_element_array_size = &gcrypt_elgamal_get_group_element_array_size; PublicShareAdder elgamal_add_public_share = &gcrypt_elgamal_add_public_share; SharedKeyDeriver elgamal_derive_shared_key = &gcrypt_elgamal_derive_shared_key; SharedKeyDeleter elgamal_delete_shared_key = &gcrypt_elgamal_delete_shared_key; |
