From 81b38e86e4e073aa3aa590cbea39852972242a41 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Fri, 18 Nov 2016 12:40:47 +0100 Subject: Adds api call to convert public key to an (string) id --- libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c') diff --git a/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c b/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c index 2f48a9e..6a03fb1 100644 --- a/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c +++ b/libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c @@ -129,6 +129,18 @@ void* gcrypt_elgamal_array_to_element(char const* buffer, size_t len, bool secur return mpi; } +void gcrypt_elgamal_get_pub_key_hash(char** buffer, size_t* len, GroupElement const pub) { + gcry_sexp_t pubkey; + gcry_error_t error; + size_t err_off; + + error = gcry_sexp_build(&pubkey, &err_off, "(public-key (elg (p %M) (g %M) (y %M)))", p, g, (gcry_mpi_t) pub); + check(error); + + *buffer = (char*) gcry_pk_get_keygrip(pubkey, NULL); + *len = 20; +} + void* gcrypt_elgamal_get_group_element(bool secure) { size_t parse_error_offset; gcry_error_t error; @@ -284,6 +296,7 @@ KeyPairDeleter elgamal_delete_keypair = &gcrypt_elgamal_delete_keypair; ElementToArray elgamal_element_to_array = &gcrypt_elgamal_element_to_array; BufferDeleter elgamal_free_buffer = &gcrypt_elgamal_free_buffer; ArrayToElement elgamal_array_to_element = &gcrypt_elgamal_array_to_element; +PubKeyHashGetter elgamal_get_pub_key_hash = &gcrypt_elgamal_get_pub_key_hash; 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; -- cgit v1.2.3-70-g09d2