From ff4cb32bc35442d46b1b899e97858e87a880f427 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Sat, 26 Jan 2019 17:15:40 -0500 Subject: [PATCH] Update solotool.py --- tools/solotool.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/solotool.py b/tools/solotool.py index 00a21c8..a511e50 100755 --- a/tools/solotool.py +++ b/tools/solotool.py @@ -35,6 +35,7 @@ from fido2.hid import CtapHidDevice, CTAPHID from fido2.client import Fido2Client, ClientError from fido2.ctap import CtapError from fido2.ctap1 import CTAP1, ApduError +from fido2.ctap2 import CTAP2 from fido2.utils import Timeout import usb.core @@ -145,6 +146,7 @@ class SoloClient: raise RuntimeError('No FIDO device found') self.dev = dev self.ctap1 = CTAP1(dev) + self.ctap2 = CTAP2(dev) if self.exchange == self.exchange_hid: self.send_data_hid(CTAPHID.INIT, '\x11\x11\x11\x11\x11\x11\x11\x11') @@ -222,6 +224,9 @@ class SoloClient: def wink(self,): self.send_data_hid(CTAPHID.WINK, b'') + def reset(self,): + self.ctap2.reset() + def enter_solo_bootloader(self,): """ If solo is configured as solo hacker or something similar, @@ -560,11 +565,15 @@ def solo_main(): help='Continuously dump random numbers generated from Solo.', ) parser.add_argument("--wink", action="store_true", help='HID Wink command.') + parser.add_argument("--reset", action="store_true", help='Issue a FIDO2 reset command. Warning: your credentials will be lost.') args = parser.parse_args() p = SoloClient() p.find_device() + if args.reset: + p.reset() + if args.rng: while True: r = p.get_rng(255)