changeset 26355:ec5b58066054

lib-dcrypt: Add key id and usage fields to dcrypt keys Simplifies next change
author Aki Tuomi <aki.tuomi@open-xchange.com>
date Fri, 23 Aug 2019 11:51:21 +0300
parents 3968f9c449ca
children 8f8906188bb4
files src/lib-dcrypt/dcrypt-openssl.c src/lib-dcrypt/dcrypt.h
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-dcrypt/dcrypt-openssl.c	Fri Aug 23 12:27:23 2019 +0300
+++ b/src/lib-dcrypt/dcrypt-openssl.c	Fri Aug 23 11:51:21 2019 +0300
@@ -131,11 +131,15 @@
 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 @@
 		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 @@
 
 	/* 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)
--- a/src/lib-dcrypt/dcrypt.h	Fri Aug 23 12:27:23 2019 +0300
+++ b/src/lib-dcrypt/dcrypt.h	Fri Aug 23 11:51:21 2019 +0300
@@ -50,6 +50,12 @@
 	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;