From 0044748e1c042b679a02c701ac2bd9377d66b183 Mon Sep 17 00:00:00 2001 From: ejhuff <7521281+ejhuff@users.noreply.github.com> Date: Fri, 28 Aug 2020 22:10:41 -0400 Subject: [PATCH 1/4] sudo cmd && cmd --> sudo cmd && sudo cmd --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ae38786..ab93a99 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ $ sudo apt install python3-pip python3-tk libusb-1.0-0-dev libudev-dev $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && udevadm trigger +$ sudo udevadm control --reload-rules && sudo udevadm trigger ``` ### Debian Install with dependencies @@ -47,7 +47,7 @@ $ sudo apt install python3-pip python3-tk libusb-1.0-0-dev libudev-dev $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && udevadm trigger +$ sudo udevadm control --reload-rules && sudo udevadm trigger ``` ### RedHat Install with dependencies @@ -58,7 +58,7 @@ $ yum install python3-pip python3-devel python3-tk libusb-devel libudev-devel \ $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && udevadm trigger +$ sudo udevadm control --reload-rules && sudo udevadm trigger ``` ### Fedora Install with dependencies @@ -68,7 +68,7 @@ $ dnf install python3-pip python3-devel python3-tkinter libusb-devel libudev-dev $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && udevadm trigger +$ sudo udevadm control --reload-rules && sudo udevadm trigger ``` ### OpenSUSE Install with dependencies @@ -77,7 +77,7 @@ $ zypper install python3-pip python3-devel python3-tk libusb-1_0-devel libudev-d $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && udevadm trigger +$ sudo udevadm control --reload-rules && sudo udevadm trigger ``` ### Arch Linux Install with dependencies @@ -86,7 +86,7 @@ $ sudo pacman -Sy git python3-setuptools python3 libusb python3-pip $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && udevadm trigger +$ sudo udevadm control --reload-rules && sudo udevadm trigger ``` ### FreeBSD Install with dependencies From 1069ccce3f2f769aaf55370bc45ba5acc1037107 Mon Sep 17 00:00:00 2001 From: ejhuff <7521281+ejhuff@users.noreply.github.com> Date: Fri, 28 Aug 2020 23:01:52 -0400 Subject: [PATCH 2/4] sudo cmd && cmd --> sudo bash -c 'cmd && cmd' sudo bash -c 'udevadm control --reload-rules && udevadm trigger' so you don't have to enter sudo password twice --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ab93a99..897a985 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ $ sudo apt install python3-pip python3-tk libusb-1.0-0-dev libudev-dev $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && sudo udevadm trigger +$ sudo bash -c 'udevadm control --reload-rules && udevadm trigger' ``` ### Debian Install with dependencies @@ -47,7 +47,7 @@ $ sudo apt install python3-pip python3-tk libusb-1.0-0-dev libudev-dev $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && sudo udevadm trigger +$ sudo bash -c 'udevadm control --reload-rules && udevadm trigger' ``` ### RedHat Install with dependencies @@ -58,7 +58,7 @@ $ yum install python3-pip python3-devel python3-tk libusb-devel libudev-devel \ $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && sudo udevadm trigger +$ sudo bash -c 'udevadm control --reload-rules && udevadm trigger' ``` ### Fedora Install with dependencies @@ -68,7 +68,7 @@ $ dnf install python3-pip python3-devel python3-tkinter libusb-devel libudev-dev $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && sudo udevadm trigger +$ sudo bash -c 'udevadm control --reload-rules && udevadm trigger' ``` ### OpenSUSE Install with dependencies @@ -77,7 +77,7 @@ $ zypper install python3-pip python3-devel python3-tk libusb-1_0-devel libudev-d $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && sudo udevadm trigger +$ sudo bash -c 'udevadm control --reload-rules && udevadm trigger' ``` ### Arch Linux Install with dependencies @@ -86,7 +86,7 @@ $ sudo pacman -Sy git python3-setuptools python3 libusb python3-pip $ pip3 install onlykey $ wget https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/master/49-onlykey.rules $ sudo cp 49-onlykey.rules /etc/udev/rules.d/ -$ sudo udevadm control --reload-rules && sudo udevadm trigger +$ sudo bash -c 'udevadm control --reload-rules && udevadm trigger' ``` ### FreeBSD Install with dependencies From 26c230e7f04ccde4185dd7dfc8939f76c6cc8e13 Mon Sep 17 00:00:00 2001 From: ejhuff <7521281+ejhuff@users.noreply.github.com> Date: Sat, 29 Aug 2020 00:07:49 -0400 Subject: [PATCH 3/4] make gkey strip whitespace and accept lowercase So I can paste from my copy of the original secret google provided. --- onlykey/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onlykey/cli.py b/onlykey/cli.py index f4faa22..3bdea73 100644 --- a/onlykey/cli.py +++ b/onlykey/cli.py @@ -185,7 +185,7 @@ def prompt_pin(): only_key.setslot(slot_id, MessageField.TFATYPE, sys.argv[4]) elif sys.argv[3] == 'gkey': totpkey = prompt_key() - totpkey = base64.b32decode(totpkey) + totpkey = base64.b32decode("".join(totpkey.split()).upper()) totpkey = binascii.hexlify(totpkey) # pad with zeros for even digits totpkey = totpkey.zfill(len(totpkey) + len(totpkey) % 2) @@ -419,7 +419,7 @@ def mprompt(): only_key.setslot(slot_id, MessageField.TFATYPE, data[3]) elif data[2] == 'gkey': totpkey = prompt_key() - totpkey = base64.b32decode(totpkey) + totpkey = base64.b32decode("".join(totpkey.split()).upper()) totpkey = binascii.hexlify(totpkey) # pad with zeros for even digits totpkey = totpkey.zfill(len(totpkey) + len(totpkey) % 2) From f484e41bfba9ef7f95bc20da5635a044356e1090 Mon Sep 17 00:00:00 2001 From: ejhuff <7521281+ejhuff@users.noreply.github.com> Date: Wed, 2 Sep 2020 07:17:00 -0400 Subject: [PATCH 4/4] Implement control-t to toggle password visibility The keybindings object must be passed to prompt, and the is_password argument must be a Condition (a/k/a filter). prompt('prompt: ', is_password=Condition(lambda: hidden[0]), key_bindings=key_bindings) --- onlykey/cli.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/onlykey/cli.py b/onlykey/cli.py index 3bdea73..9f0db8c 100644 --- a/onlykey/cli.py +++ b/onlykey/cli.py @@ -27,23 +27,27 @@ def cli(): logging.basicConfig(level=logging.DEBUG) - # ContrlT handling + # Control-T handling hidden = [True] # Nonlocal key_bindings = KeyBindings() @key_bindings.add('c-t') def _(event): - ' When ControlT has been pressed, toggle visibility. ' + ' When Control-T has been pressed, toggle visibility. ' hidden[0] = not hidden[0] def prompt_pass(): print('Type Control-T to toggle password visible.') - password = prompt('Password/Key: ', is_password=True) + password = prompt('Password/Key: ', + is_password=Condition(lambda: hidden[0]), + key_bindings=key_bindings) return password def prompt_key(): print('Type Control-T to toggle key visible.') - key = prompt('Key: ', is_password=True) + key = prompt('Key: ', + is_password=Condition(lambda: hidden[0]), + key_bindings=key_bindings) return key def prompt_pin():