diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-18 12:40:47 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-18 12:44:11 +0100 |
| commit | 81b38e86e4e073aa3aa590cbea39852972242a41 (patch) | |
| tree | 929074d99422f094ee9d02a99ab244578d57b4ca /libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c | |
| parent | 6ae607cc84b671810fca9c24b1c131ca12d922e7 (diff) | |
| download | cmix-81b38e86e4e073aa3aa590cbea39852972242a41.tar.gz cmix-81b38e86e4e073aa3aa590cbea39852972242a41.tar.bz2 cmix-81b38e86e4e073aa3aa590cbea39852972242a41.zip | |
Adds api call to convert public key to an (string) id
Diffstat (limited to 'libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c')
| -rw-r--r-- | libcmix-crypto/elgamal/gcrypt/gcrypt_elgamal.c | 13 |
1 files changed, 13 insertions, 0 deletions
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; |
