]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm-mail-crypt: Print existing userkey hash when aborting generate
authorMartti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
Fri, 6 Oct 2017 08:07:23 +0000 (11:07 +0300)
committerMartti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
Fri, 6 Oct 2017 08:08:52 +0000 (11:08 +0300)
src/plugins/mail-crypt/doveadm-mail-crypt.c

index 113c98d1ea2ffa69d175b3eaac0f3b80eb17603d..37f197c05242325c6bfa350d583dce2b7cbb792a 100644 (file)
@@ -318,9 +318,26 @@ static int mcp_keypair_generate_run(struct doveadm_mail_cmd_context *_ctx,
                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 */