From 2b7e7634e62512e26b76deaabe86bd3a582e4b9a Mon Sep 17 00:00:00 2001 From: Sean Gillespie Date: Tue, 19 Dec 2023 16:45:54 -0500 Subject: [PATCH] feature: Add a script that opens the luks device --- default.nix | 22 +++++------- yk-luks-open.sh | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 13 deletions(-) create mode 100755 yk-luks-open.sh diff --git a/default.nix b/default.nix index 47da38a..8cb0c4a 100644 --- a/default.nix +++ b/default.nix @@ -2,7 +2,14 @@ let inherit (nixpkgs) callPackage pkgs stdenv; + pbkdf2Sha512 = callPackage ./pbkdf2-sha512 { }; + rbtohex = pkgs.writeShellScriptBin + "rbtohex" + ''( od -An -vtx1 | tr -d ' \n' )''; + hextorb = pkgs.writeShellScriptBin + "hextorb" + ''( tr '[:lower:]' '[:upper:]' | sed -e 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI'| xargs printf )''; in stdenv.mkDerivation { name = "yubikey-luks-setup"; @@ -12,18 +19,7 @@ in parted pbkdf2Sha512 yubikey-personalization + rbtohex + hextorb ]; - - shellHook = '' - rbtohex() { - ( od -An -vtx1 | tr -d ' \n' ) - } - - hextorb() { - ( tr '[:lower:]' '[:upper:]' | sed -e 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI'| xargs printf ) - } - ''; - - - inherit (pkgs) cryptsetup openssl yubikey-personalization; } diff --git a/yk-luks-open.sh b/yk-luks-open.sh new file mode 100755 index 0000000..617bb57 --- /dev/null +++ b/yk-luks-open.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +function usage { + cat >&2 </dev/null) +LUKS_KEY="$(echo "$USER_PASSPHRASE" | pbkdf2-sha512 $(($KEY_LENGTH / 8)) $ITERATIONS $RESPONSE | rbtohex)" + +# Open the LUKS device +echo -n "$LUKS_KEY" \ + | hextorb \ + | cryptsetup open "$DEVICE" encrypted --key-file=-