#!/bin/sh # otpcli - command-line interface for HOTP and TOTP # # Written in 2020 by Lucas # # To the extent possible under law, the author(s) have dedicated all # copyright and related and neighboring rights to this software to the # public domain worldwide. This software is distributed without any # warranty. # # You should have received a copy of the CC0 Public Domain Dedication # along with this software. If not, see # . _test_rc=0 _test_nr=0 case_eq() { _test_nr=$((_test_nr + 1)) expected=$1 shift got=$("$@") if [ "$got" != "$expected" ]; then printf "test %u: expected %s, got %s\n" \ "$_test_nr" "$expected" "$got" >&2 _test_rc=1 fi } HOTP_SECRET="12345678901234567890" case_eq 755224 ./otpcli -H 0 "$HOTP_SECRET" case_eq 287082 ./otpcli -H 1 "$HOTP_SECRET" case_eq 359152 ./otpcli -H 2 "$HOTP_SECRET" case_eq 969429 ./otpcli -H 3 "$HOTP_SECRET" case_eq 338314 ./otpcli -H 4 "$HOTP_SECRET" case_eq 254676 ./otpcli -H 5 "$HOTP_SECRET" case_eq 287922 ./otpcli -H 6 "$HOTP_SECRET" case_eq 162583 ./otpcli -H 7 "$HOTP_SECRET" case_eq 399871 ./otpcli -H 8 "$HOTP_SECRET" case_eq 520489 ./otpcli -H 9 "$HOTP_SECRET" case_eq 94287082 ./otpcli -T 59 "$HOTP_SECRET" #case_eq 46119246 ./otpcli -h sha256 -T 59 "$HOTP_SECRET" #case_eq 90693936 ./otpcli -h sha512 -T 59 "$HOTP_SECRET" case_eq 07081804 ./otpcli -T 1111111109 "$HOTP_SECRET" #case_eq 68084774 ./otpcli -h sha256 -T 1111111109 "$HOTP_SECRET" #case_eq 25091201 ./otpcli -h sha512 -T 1111111109 "$HOTP_SECRET" case_eq 14050471 ./otpcli -T 1111111111 "$HOTP_SECRET" #case_eq 67062674 ./otpcli -h sha256 -T 1111111111 "$HOTP_SECRET" #case_eq 99943326 ./otpcli -h sha512 -T 1111111111 "$HOTP_SECRET" case_eq 89005924 ./otpcli -T 1234567890 "$HOTP_SECRET" #case_eq 91819424 ./otpcli -h sha256 -T 1234567890 "$HOTP_SECRET" #case_eq 93441116 ./otpcli -h sha512 -T 1234567890 "$HOTP_SECRET" case_eq 69279037 ./otpcli -T 2000000000 "$HOTP_SECRET" #case_eq 90698825 ./otpcli -h sha256 -T 2000000000 "$HOTP_SECRET" #case_eq 38618901 ./otpcli -h sha512 -T 2000000000 "$HOTP_SECRET" case_eq 65353130 ./otpcli -T 20000000000 "$HOTP_SECRET" #case_eq 77737706 ./otpcli -h sha256 -T 20000000000 "$HOTP_SECRET" #case_eq 47863826 ./otpcli -h sha512 -T 20000000000 "$HOTP_SECRET" if [ $_test_rc -eq 0 ]; then printf "All %u tests completed successfully!\n" "$_test_nr" >&2 else printf "Some tests failed\n" >&2 fi exit $_test_rc