From 948c2f04cbaf2f065b0c21b80de82f1f0c946e54 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Sun, 4 Mar 2018 11:23:14 -0800 Subject: Fail for `otp code` on missing secret (#46) --- otp.bash | 8 ++++++-- test/code.t | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/otp.bash b/otp.bash index f0f4d0d..447af1e 100755 --- a/otp.bash +++ b/otp.bash @@ -304,7 +304,7 @@ cmd_otp_code() { local path="${1%/}" local passfile="$PREFIX/$path.gpg" check_sneaky_paths "$path" - [[ ! -f $passfile ]] && die "Passfile not found" + [[ ! -f $passfile ]] && die "$path: passfile not found." contents=$($GPG -d "${GPG_OPTS[@]}" "$passfile") while read -r -a line; do @@ -330,9 +330,13 @@ cmd_otp_code() { [[ -n "$otp_digits" ]] && cmd+=" --digits=$otp_digits" cmd+=" $otp_secret" ;; + + *) + die "$path: OTP secret not found." + ;; esac - local out; out=$($cmd) || die "Failed to generate OTP code for $path" + local out; out=$($cmd) || die "$path: failed to generate OTP code." if [[ "$otp_type" == "hotp" ]]; then # Increment HOTP counter in-place diff --git a/test/code.t b/test/code.t index 02bd086..39310fb 100755 --- a/test/code.t +++ b/test/code.t @@ -4,6 +4,12 @@ export test_description='Tests pass otp code generation' . ./setup.sh +test_expect_success 'Fails for missing secret' ' + test_pass_init && + "$PASS" insert passfile <<< "12345" + test_expect_code 1 pass otp passfile +' + test_expect_success 'Generates TOTP code' ' uri="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example" @@ -31,14 +37,14 @@ test_expect_success 'HOTP counter increments and preserves multiline contents' ' read -r -d "" existing <