From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1ns8Mm-0004Ig-UG for mharc-grub-devel@gnu.org; Fri, 20 May 2022 15:32:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53750) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ns8Mk-0004Gx-FL for grub-devel@gnu.org; Fri, 20 May 2022 15:32:50 -0400 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:36531) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ns8Mi-0000lS-D8 for grub-devel@gnu.org; Fri, 20 May 2022 15:32:50 -0400 Received: by mail-vs1-xe30.google.com with SMTP id a127so9343431vsa.3 for ; Fri, 20 May 2022 12:32:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficientek-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=VDfY6IfLD8ghkz/dMFjWQ1Wa+utNUnubmX7Eea9i+b8=; b=J2/IktSVuJS1fAFEePNSO7EBV+p+NDaIE5+D/JECQFKJJj/zuP/UM89CiYA2UAOZTc C4A+HgtIJaqgUgYlPZpLx3Tg/jRh9pMEJkwyaDcsKJ9yjYsb5WjnNIkfpRiRPHlLkqUP pB+honrZirzkegESrDW/kQmY+5+4lvjMGyBgpebj4ba6IxxGy7sOpaoLr9P68LhBTaVY llyCS495mbnGDLOnUw03WbvO4ctsL2veXNJ1VORG6C9C6kDDqbKrvzCwIfk43FQ0+Tje n1Zqd6YFmYqc+QwBRkCvqiLDUPeXxSt2jkFt9dlYPdTd8BnNfqK9bJpmOW4qwtvSzX9L E7ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=VDfY6IfLD8ghkz/dMFjWQ1Wa+utNUnubmX7Eea9i+b8=; b=6U0kjFfOc2/rlEGlFAQbDqri44CA7gJEK2+mISkSi/6aNi8P50eZf8Zw6DFxHqwp6c nnx6l5YAM2DlBP9lCs2Zn7UKZJ12rEdPDD5PwDopDmO5ig4vtBPqUsmkhPTQt6Vk/ut9 ayH+Enc4PCbv61TPyqqsBSG4gGIKx7oLqXTyVUMnzkV10pdznyTA8Vryx2dB7e5rJ7R3 bovy4kDMErGdTopRUaL8X8/MI48hpzwFXAb1iCSBvcrj1CdNKe5sDna1M6MwT55XMBcs MedUC70wPwQCaNriXfCRWQhnOB8WebI2X3dGAw1a0F6lHcookeGw6/QyVfly2Vn5Qaqa L6Rw== X-Gm-Message-State: AOAM532LuKStz/4SDBBht0J3MgbKkem3V7j0V1etrmubFSN81XZDcKKB JN++qI+uAeaV7EWMt9MkdOBnBSg0yg5nfw== X-Google-Smtp-Source: ABdhPJwcViT9iVbLzS73rnisTBa1mAyA5DeSEbeq0WLw3cG+/8dRz0lYiR/F82pAarO91k0F8DAd9w== X-Received: by 2002:a67:c894:0:b0:324:c5da:a9b5 with SMTP id v20-20020a67c894000000b00324c5daa9b5mr5291580vsk.33.1653075166570; Fri, 20 May 2022 12:32:46 -0700 (PDT) Received: from localhost.localdomain ([37.218.244.249]) by smtp.gmail.com with ESMTPSA id g27-20020a056102081b00b00335baca067dsm519143vsb.2.2022.05.20.12.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 12:32:45 -0700 (PDT) From: Glenn Washburn To: grub-devel@gnu.org, Daniel Kiper Cc: Denis 'GNUtoo' Carikli , Patrick Steinhardt , John Lane , Glenn Washburn Subject: [PATCH v3 0/5] Cryptomount keyfile support Date: Fri, 20 May 2022 14:32:14 -0500 Message-Id: X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::e30; envelope-from=development@efficientek.com; helo=mail-vs1-xe30.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 May 2022 19:32:50 -0000 Uupdates from v2: * Use one error message for all string to interger conversion errors, suggested by Daniel * Move placement of keyfile_size == 0 check Updates from v1: * Make some changes suggested by Daniel * Improve error message for grub_strtoull() failures * Add patch to use enum constants to index parsed option array Glenn Denis 'GNUtoo' Carikli (2): cryptodisk: luks: Unify grub_cryptodisk_dev function names cryptodisk: geli: Unify grub_cryptodisk_dev function names Glenn Washburn (2): cryptodisk: Use enum constants as indexes into cryptomount option array docs: Add documentation on keyfile option to cryptomount John Lane (1): cryptodisk: Add options to cryptomount to support keyfiles docs/grub.texi | 14 +++-- grub-core/disk/cryptodisk.c | 110 ++++++++++++++++++++++++++++++++---- grub-core/disk/geli.c | 8 +-- grub-core/disk/luks.c | 4 +- include/grub/cryptodisk.h | 2 + include/grub/file.h | 2 + 6 files changed, 119 insertions(+), 21 deletions(-) Interdiff against v2: diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c index ecbda7ce9..e2b8636e4 100644 --- a/grub-core/disk/cryptodisk.c +++ b/grub-core/disk/cryptodisk.c @@ -1188,7 +1188,6 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) if (state[OPTION_KEYFILE].set) /* keyfile */ { - char tmp_errmsg[GRUB_MAX_ERRMSG]; const char *p = NULL; grub_file_t keyfile; unsigned long long keyfile_offset = 0, keyfile_size = 0; @@ -1199,20 +1198,9 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) keyfile_offset = grub_strtoull (state[OPTION_KEYFILE_OFFSET].arg, &p, 0); if (state[OPTION_KEYFILE_OFFSET].arg[0] == '\0' || *p != '\0') - { - if (grub_errno != GRUB_ERR_NONE) - { - grub_strncpy (tmp_errmsg, grub_errmsg, GRUB_MAX_ERRMSG); - return grub_error (grub_errno, - N_("non-numeric or invalid keyfile offset `%s': %s"), - state[OPTION_KEYFILE_OFFSET].arg, tmp_errmsg); - } - else - return grub_error (GRUB_ERR_BAD_ARGUMENT, - N_("invalid keyfile offset `%s': non-numeric" - " characters at end of number"), - state[OPTION_KEYFILE_OFFSET].arg); - } + return grub_error (grub_errno, + N_("non-numeric or invalid keyfile offset `%s'"), + state[OPTION_KEYFILE_OFFSET].arg); } if (state[OPTION_KEYFILE_SIZE].set) /* keyfile-size */ @@ -1221,28 +1209,17 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) keyfile_size = grub_strtoull (state[OPTION_KEYFILE_SIZE].arg, &p, 0); if (state[OPTION_KEYFILE_SIZE].arg[0] == '\0' || *p != '\0') - { - if (grub_errno != GRUB_ERR_NONE) - { - grub_strncpy (tmp_errmsg, grub_errmsg, GRUB_MAX_ERRMSG); - return grub_error (grub_errno, - N_("non-numeric or invalid keyfile offset `%s': %s"), - state[OPTION_KEYFILE_SIZE].arg, tmp_errmsg); - } - else - return grub_error (GRUB_ERR_BAD_ARGUMENT, - N_("invalid keyfile offset `%s': non-numeric" - " characters at end of number"), - state[OPTION_KEYFILE_SIZE].arg); - } + return grub_error (grub_errno, + N_("non-numeric or invalid keyfile size `%s'"), + state[OPTION_KEYFILE_SIZE].arg); + + if (keyfile_size == 0) + return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("key file size is 0")); if (keyfile_size > GRUB_CRYPTODISK_MAX_KEYFILE_SIZE) return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("key file size exceeds maximum (%d)"), GRUB_CRYPTODISK_MAX_KEYFILE_SIZE); - - if (keyfile_size == 0) - return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("key file size is 0")); } keyfile = grub_file_open (state[OPTION_KEYFILE].arg, -- 2.34.1