From: Aki Tuomi Date: Fri, 23 Aug 2019 08:51:21 +0000 (+0300) Subject: lib-dcrypt: Add key id and usage fields to dcrypt keys X-Git-Tag: 2.3.9~253 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c64f5c6e3c6e7f967fd47c485e03cc517ca6814;p=thirdparty%2Fdovecot%2Fcore.git lib-dcrypt: Add key id and usage fields to dcrypt keys Simplifies next change --- 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;