From 7c64f5c6e3c6e7f967fd47c485e03cc517ca6814 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Fri, 23 Aug 2019 11:51:21 +0300 Subject: [PATCH] lib-dcrypt: Add key id and usage fields to dcrypt keys Simplifies next change --- src/lib-dcrypt/dcrypt-openssl.c | 12 ++++++++++-- src/lib-dcrypt/dcrypt.h | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/lib-dcrypt/dcrypt-openssl.c b/src/lib-dcrypt/dcrypt-openssl.c index c420d68592..70a6bfa813 100644 --- a/src/lib-dcrypt/dcrypt-openssl.c +++ b/src/lib-dcrypt/dcrypt-openssl.c @@ -131,11 +131,15 @@ struct dcrypt_context_hmac { struct dcrypt_public_key { EVP_PKEY *key; unsigned int ref; + enum dcrypt_key_usage usage; + char *key_id; }; struct dcrypt_private_key { EVP_PKEY *key; unsigned int ref; + enum dcrypt_key_usage usage; + char *key_id; }; static bool @@ -1476,7 +1480,9 @@ dcrypt_openssl_load_public_key_dovecot_v1(struct dcrypt_public_key **key_r, EC_KEY_free(eckey); /* make sure digest matches */ buffer_t *dgst = t_buffer_create(32); - struct dcrypt_public_key tmp = { key, 0 }; + struct dcrypt_public_key tmp; + i_zero(&tmp); + tmp.key = key; dcrypt_openssl_public_key_id_old(&tmp, dgst, NULL); if (strcmp(binary_to_hex(dgst->data, dgst->used), input[len-1]) != 0) { @@ -1517,7 +1523,9 @@ dcrypt_openssl_load_public_key_dovecot_v2(struct dcrypt_public_key **key_r, /* make sure digest matches */ buffer_t *dgst = t_buffer_create(32); - struct dcrypt_public_key tmpkey = {pkey, 0}; + struct dcrypt_public_key tmpkey; + i_zero(&tmpkey); + tmpkey.key = pkey; dcrypt_openssl_public_key_id(&tmpkey, "sha256", dgst, NULL); if (strcmp(binary_to_hex(dgst->data, dgst->used), input[len-1]) != 0) { if (error_r != NULL) diff --git a/src/lib-dcrypt/dcrypt.h b/src/lib-dcrypt/dcrypt.h index 539c0e7978..79a334f665 100644 --- a/src/lib-dcrypt/dcrypt.h +++ b/src/lib-dcrypt/dcrypt.h @@ -50,6 +50,12 @@ enum dcrypt_key_kind { DCRYPT_KEY_KIND_PRIVATE }; +enum dcrypt_key_usage { + DCRYPT_KEY_USAGE_NONE, + DCRYPT_KEY_USAGE_ENCRYPT, + DCRYPT_KEY_USAGE_SIGN, +}; + struct dcrypt_settings { /* OpenSSL engine to use */ const char *crypto_device; -- 2.47.3