changeset 22591:dafc46a5c6e5

doveadm-mail-crypt: Print existing userkey hash when aborting generate
author Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
date Fri, 06 Oct 2017 11:07:23 +0300
parents b0da9b8fdae8
children 8dc7e629897a
files src/plugins/mail-crypt/doveadm-mail-crypt.c
diffstat 1 files changed, 20 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/mail-crypt/doveadm-mail-crypt.c	Thu Oct 05 15:53:16 2017 +0300
+++ b/src/plugins/mail-crypt/doveadm-mail-crypt.c	Fri Oct 06 11:07:23 2017 +0300
@@ -325,9 +325,26 @@
 		if (ret < 0) return ret;
 		ctx->matched_keys++;
 	}
-
-	if (ret == 1 && ctx->force &&
-	    ctx->userkey_only && !user_key_generated) {
+	if (ret == 1 && ctx->userkey_only && !user_key_generated) {
+		if (!ctx->force) {
+			i_info("userkey exists. Use -f to generate a new one");
+			buffer_t *key_id = t_str_new(MAIL_CRYPT_HASH_BUF_SIZE);
+			if (!dcrypt_key_id_public(user_key,
+						MAIL_CRYPT_KEY_ID_ALGORITHM,
+						key_id, &error)) {
+				i_error("dcrypt_key_id_public() failed: %s",
+					error);
+				return -1;
+			}
+			const char *hash = binary_to_hex(key_id->data,
+							 key_id->used);
+			res = array_append_space(result);
+			res->name = DOVEADM_MCP_USERKEY;
+			res->id = p_strdup(_ctx->pool, hash);
+			res->success = TRUE;
+			ctx->matched_keys++;
+			return 1;
+		}
 		struct dcrypt_keypair pair;
 		dcrypt_key_unref_public(&user_key);
 		/* regen user key */