From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1kiZg7-0004a6-B7 for mharc-grub-devel@gnu.org; Fri, 27 Nov 2020 04:04:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:32846) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kiZg5-0004XK-DP for grub-devel@gnu.org; Fri, 27 Nov 2020 04:04:29 -0500 Received: from mail-lf1-x143.google.com ([2a00:1450:4864:20::143]:42215) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kiZg3-0005QN-HQ for grub-devel@gnu.org; Fri, 27 Nov 2020 04:04:29 -0500 Received: by mail-lf1-x143.google.com with SMTP id u18so6012905lfd.9 for ; Fri, 27 Nov 2020 01:04:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficientek-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Wm88kbPQI3EU9NiqR5pp4HGqansju4B5XryHeuhm/Bs=; b=WP0ickRzzITxHq8XjixzwrTqBcw82pnUDX/dac7leTBm5Z2VsrvobO7zi9Q87Pms2U tGGrYq6M7FSGFvXNtMHdbcc/PRqEgtxzPLFK6MY/Y5qftEo9hiXtydj7eOAa+f/Q31o8 hOO0x/3DRj1g1WMh5FCUr2nWouoa6d+hdzTrjQ7BgG2ntt9knaRWNRr6Vwk1UDTwVaOd Zz1em34EoHc4fvI/pbSI2Svf7yzyEjiki6RvrxHV/Um3XNr9XPekxFKQBlN/VOFXpjgp WDmVFEntcL+gmNEU6SmnnzsKJO2E+PcToKW4VXzE83/MwgNMk7AUTvJ/b1AggWyY38as WJtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Wm88kbPQI3EU9NiqR5pp4HGqansju4B5XryHeuhm/Bs=; b=fJut+rLrRC3swxqk+oEV1bLLcSiZ7ke23s8IoqCe1W15ocvyz9Bk7yZuIAuHwzokmB HWP+PAQXV/oj9PTt+y0BaLpamQAtCjAN7mQW6Q9MyAKeQH7QEUgpvRP4fp/JOW4S6bLr j/8GgoXpVhsVYobFn0iLnowEARjHtuQsKXoPRPpMr7wUZ4ja2ln/qWeyH1SDEvhYVfQz OGwCGmZeyNKj5NtlHJfsydh2LkpKWpfpr3zAW0oS36HSyM5jnoU0rzXsf6TApTPhcL2m 58kT5RiYCTgwvKMvQ0EaDdJSNOyqt3+ZK3nvPAfVyhykyHH7bjFI/2hZIrBWsDxCb88H 4CMA== X-Gm-Message-State: AOAM530fNnaaYKZM/45JyIpgRMWeD/SRWE4CfH+ZE7CJdfJbUowlvhgQ IEW1EhBjJ1VIXlxkljm1wFp2D8V3Fhv0qQ== X-Google-Smtp-Source: ABdhPJwTRjADP1DdW+6C7NpeK7tR89yqUfIeQ3mcXBXNV6H+No+YZk3itvKf9Um9lveuCK7ddHrFmA== X-Received: by 2002:a19:4a08:: with SMTP id x8mr3015973lfa.322.1606467865240; Fri, 27 Nov 2020 01:04:25 -0800 (PST) Received: from localhost.localdomain ([136.49.211.192]) by smtp.gmail.com with ESMTPSA id g2sm880675lja.87.2020.11.27.01.04.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Nov 2020 01:04:24 -0800 (PST) From: Glenn Washburn To: grub-devel@gnu.org Cc: Patrick Steinhardt , Daniel Kiper , Glenn Washburn Subject: [PATCH v6 02/12] luks2: Use more intuitive slot key instead of index in user messages. Date: Fri, 27 Nov 2020 03:03:34 -0600 Message-Id: <3cd52834b9d76ed50720d64a0f05455e70dac0fb.1606467382.git.development@efficientek.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::143; envelope-from=development@efficientek.com; helo=mail-lf1-x143.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Nov 2020 09:04:29 -0000 Use the slot key name in the json array rather than the 0 based index in the json array for keyslots, segments, and digests. This is less confusing for the end user. For example, say you have a LUKS2 device with a key in slot 1 and slot 4. When using the password for slot 4 to unlock the device, the messages using the index of the keyslot will mention keyslot 1 (its a zero-based index). Furthermore, with this change the keyslot number will align with the number used to reference the keyslot when using the --key-slot argument to cryptsetup. Error messages now distinguish between indexes and slot keys. The former include the string "index" in the error string, and the later are surrounded in quotes. Signed-off-by: Glenn Washburn --- grub-core/disk/luks2.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c index ab2c31dcd..c390ea3e6 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -269,7 +269,7 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k, grub_luks2_digest_t *d, grub_luks2_s grub_json_getuint64 (&k->slot_key, &keyslot, NULL) || grub_json_getchild (&keyslot, &keyslot, 0) || luks2_parse_keyslot (k, &keyslot)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse keyslot %"PRIuGRUB_SIZE, keyslot_idx); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse keyslot index %"PRIuGRUB_SIZE, keyslot_idx); /* Get digest that matches the keyslot. */ if (grub_json_getvalue (&digests, root, "digests") || @@ -281,13 +281,13 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k, grub_luks2_digest_t *d, grub_luks2_s grub_json_getuint64 (&d->slot_key, &digest, NULL) || grub_json_getchild (&digest, &digest, 0) || luks2_parse_digest (d, &digest)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest %"PRIuGRUB_SIZE, i); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest index %"PRIuGRUB_SIZE, i); if ((d->keyslots & (1 << k->slot_key))) break; } if (i == size) - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot %"PRIuGRUB_SIZE, keyslot_idx); + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot \"%"PRIuGRUB_UINT64_T"\"", k->slot_key); /* Get segment that matches the digest. */ if (grub_json_getvalue (&segments, root, "segments") || @@ -299,13 +299,13 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k, grub_luks2_digest_t *d, grub_luks2_s grub_json_getuint64 (&s->slot_key, &segment, NULL) || grub_json_getchild (&segment, &segment, 0) || luks2_parse_segment (s, &segment)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment %"PRIuGRUB_SIZE, i); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment index %"PRIuGRUB_SIZE, i); if ((d->segments & (1 << s->slot_key))) break; } if (i == size) - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest %"PRIuGRUB_SIZE); + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest \"%"PRIuGRUB_UINT64_T"\"", d->slot_key); return GRUB_ERR_NONE; } @@ -601,11 +601,11 @@ luks2_recover_key (grub_disk_t source, if (keyslot.priority == 0) { - grub_dprintf ("luks2", "Ignoring keyslot %"PRIuGRUB_SIZE" due to priority\n", i); + grub_dprintf ("luks2", "Ignoring keyslot %"PRIuGRUB_UINT64_T" due to priority\n", keyslot.slot_key); continue; } - grub_dprintf ("luks2", "Trying keyslot %"PRIuGRUB_SIZE"\n", i); + grub_dprintf ("luks2", "Trying keyslot %"PRIuGRUB_UINT64_T"\n", keyslot.slot_key); /* Set up disk according to keyslot's segment. */ crypt->offset_sectors = grub_divmod64 (segment.offset, segment.sector_size, NULL); @@ -620,16 +620,16 @@ luks2_recover_key (grub_disk_t source, (const grub_uint8_t *) passphrase, grub_strlen (passphrase)); if (ret) { - grub_dprintf ("luks2", "Decryption with keyslot %"PRIuGRUB_SIZE" failed: %s\n", - i, grub_errmsg); + grub_dprintf ("luks2", "Decryption with keyslot %"PRIuGRUB_UINT64_T" failed: %s\n", + keyslot.slot_key, grub_errmsg); continue; } ret = luks2_verify_key (&digest, candidate_key, keyslot.key_size); if (ret) { - grub_dprintf ("luks2", "Could not open keyslot %"PRIuGRUB_SIZE": %s\n", - i, grub_errmsg); + grub_dprintf ("luks2", "Could not open keyslot %"PRIuGRUB_UINT64_T": %s\n", + keyslot.slot_key, grub_errmsg); continue; } @@ -637,7 +637,7 @@ luks2_recover_key (grub_disk_t source, * TRANSLATORS: It's a cryptographic key slot: one element of an array * where each element is either empty or holds a key. */ - grub_printf_ (N_("Slot %"PRIuGRUB_SIZE" opened\n"), i); + grub_printf_ (N_("Slot %"PRIuGRUB_UINT64_T" opened\n"), keyslot.slot_key); candidate_key_len = keyslot.key_size; break; -- 2.27.0