aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosselin Poiret <dev@jpoiret.xyz>2022-09-22 15:12:44 +0200
committerMathieu Othacehe <othacehe@gnu.org>2022-09-22 16:00:29 +0200
commit4814ec284f8a2870e6457c05f414ad31df4e3f57 (patch)
treeedff0e8f68a8db03fd3f687c8680d73759ac7d9d
parent3c4024e9f50a064d6458875623eb199a882feb53 (diff)
downloadguix-4814ec284f8a2870e6457c05f414ad31df4e3f57.tar
guix-4814ec284f8a2870e6457c05f414ad31df4e3f57.tar.gz
installer: Move <secret> to utils and use it for crypt passwords.
* gnu/installer/user.scm (<secret>, secret?, make-secret, secret-content): Move to utils.scm. * gnu/installer/utils.scm (<secret>, secret?, make-secret, secret-content): Moved from user.scm. * gnu/installer/newt/partition.scm (prompt-luks-passwords): Make password a <secret>. * gnu/installer/parted.scm (luks-format-and-open): Unwrap secret. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
-rw-r--r--gnu/installer/newt/partition.scm2
-rw-r--r--gnu/installer/parted.scm4
-rw-r--r--gnu/installer/user.scm18
-rw-r--r--gnu/installer/utils.scm19
4 files changed, 23 insertions, 20 deletions
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index e7a97810ac..eda34e0461 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -188,7 +188,7 @@ encryption of partition ~a (label: ~a).") file-name crypt-label)
(if (string=? password confirmation)
(user-partition
(inherit user-part)
- (crypt-password password))
+ (crypt-password (make-secret password)))
(begin
(run-error-page
(G_ "Password mismatch, please try again.")
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 84fdbe24fb..51ba2bebd6 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -148,7 +148,7 @@
(default #f))
(crypt-label user-partition-crypt-label
(default #f))
- (crypt-password user-partition-crypt-password
+ (crypt-password user-partition-crypt-password ; <secret>
(default #f))
(fs-type user-partition-fs-type
(default 'ext4))
@@ -1183,7 +1183,7 @@ USER-PARTITION if it is encrypted, or the plain file-name otherwise."
"Format and open the encrypted partition pointed by USER-PARTITION."
(let* ((file-name (user-partition-file-name user-partition))
(label (user-partition-crypt-label user-partition))
- (password (user-partition-crypt-password user-partition)))
+ (password (secret-content (user-partition-crypt-password user-partition))))
(call-with-luks-key-file
password
(lambda (key-file)
diff --git a/gnu/installer/user.scm b/gnu/installer/user.scm
index 224040530c..2866e4520f 100644
--- a/gnu/installer/user.scm
+++ b/gnu/installer/user.scm
@@ -17,17 +17,13 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu installer user)
+ #:use-module (gnu installer utils)
#:use-module (guix records)
#:use-module (guix read-print)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
- #:export (<secret>
- secret?
- make-secret
- secret-content
-
- <user>
+ #:export (<user>
user
make-user
user-name
@@ -38,16 +34,6 @@
users->configuration))
-(define-record-type <secret>
- (make-secret content)
- secret?
- (content secret-content))
-
-(set-record-type-printer!
- <secret>
- (lambda (secret port)
- (format port "<secret>")))
-
(define-record-type* <user>
user make-user
user?
diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm
index fb62fb8896..5fd2e2d425 100644
--- a/gnu/installer/utils.scm
+++ b/gnu/installer/utils.scm
@@ -23,6 +23,8 @@
#:use-module (guix build utils)
#:use-module (guix i18n)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
@@ -33,7 +35,12 @@
#:use-module (ice-9 regex)
#:use-module (ice-9 format)
#:use-module (ice-9 textual-ports)
- #:export (read-lines
+ #:export (<secret>
+ secret?
+ make-secret
+ secret-content
+
+ read-lines
read-all
nearest-exact-integer
read-percentage
@@ -58,6 +65,16 @@
with-silent-shepherd))
+(define-record-type <secret>
+ (make-secret content)
+ secret?
+ (content secret-content))
+
+(set-record-type-printer!
+ <secret>
+ (lambda (secret port)
+ (format port "<secret>")))
+
(define* (read-lines #:optional (port (current-input-port)))
"Read lines from PORT and return them as a list."
(let loop ((line (read-line port))