diff options
author | Josselin Poiret <dev@jpoiret.xyz> | 2022-09-22 15:12:44 +0200 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2022-09-22 16:00:29 +0200 |
commit | 4814ec284f8a2870e6457c05f414ad31df4e3f57 (patch) | |
tree | edff0e8f68a8db03fd3f687c8680d73759ac7d9d | |
parent | 3c4024e9f50a064d6458875623eb199a882feb53 (diff) | |
download | guix-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.scm | 2 | ||||
-rw-r--r-- | gnu/installer/parted.scm | 4 | ||||
-rw-r--r-- | gnu/installer/user.scm | 18 | ||||
-rw-r--r-- | gnu/installer/utils.scm | 19 |
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)) |