On Fri, Nov 27, 2020 at 03:03:34AM -0600, Glenn Washburn wrote: > 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.
This should be split into two separate patches. One should add "index" to the messages another should add quotes. Well, I am not convinced that quotes are good differentiators... I would drop them or rephrase messages to really differentiate indexes and slot keys. > Signed-off-by: Glenn Washburn <developm...@efficientek.com> > --- > 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); Quotes are missing? > continue; > } > > - grub_dprintf ("luks2", "Trying keyslot %"PRIuGRUB_SIZE"\n", i); > + grub_dprintf ("luks2", "Trying keyslot %"PRIuGRUB_UINT64_T"\n", > keyslot.slot_key); Ditto... > /* 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", Ditto and below... > + 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); Daniel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel