re-enable some usbhid tests
This commit is contained in:
parent
bdf2a47e72
commit
26920551b2
@ -61,6 +61,7 @@ class Tester():
|
||||
self.origin = 'https://examplo.org'
|
||||
|
||||
def find_device(self,):
|
||||
print (list(CtapHidDevice.list_devices()))
|
||||
dev = next(CtapHidDevice.list_devices(), None)
|
||||
if not dev:
|
||||
raise RuntimeError('No FIDO device found')
|
||||
@ -118,34 +119,34 @@ class Tester():
|
||||
|
||||
def test_long_ping(self):
|
||||
amt = 1000
|
||||
while 1 :
|
||||
pingdata = os.urandom(amt)
|
||||
pingdata = os.urandom(amt)
|
||||
try:
|
||||
t1 = time.time() * 1000
|
||||
r = self.send_data(CTAPHID.PING, pingdata)
|
||||
t2 = time.time() * 1000
|
||||
delt = t2 - t1
|
||||
#if (delt < 140 ):
|
||||
#raise RuntimeError('Fob is too fast (%d ms)' % delt)
|
||||
if (delt > 555 * (amt/1000)):
|
||||
raise RuntimeError('Fob is too slow (%d ms)' % delt)
|
||||
if (r != pingdata):
|
||||
raise ValueError('Ping data not echo\'d')
|
||||
print('1000 byte ping time: %s ms' % delt)
|
||||
except CtapError as e:
|
||||
print('7609 byte Ping failed:', e)
|
||||
raise RuntimeError('ping failed')
|
||||
print('PASS: 7609 byte ping')
|
||||
#sys.flush(sys.sto)
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
def test_hid(self,check_timeouts = False):
|
||||
if check_timeouts:
|
||||
print('Test idle')
|
||||
try:
|
||||
t1 = time.time() * 1000
|
||||
r = self.send_data(CTAPHID.PING, pingdata)
|
||||
t2 = time.time() * 1000
|
||||
delt = t2 - t1
|
||||
#if (delt < 140 ):
|
||||
#raise RuntimeError('Fob is too fast (%d ms)' % delt)
|
||||
if (delt > 555 * (amt/1000)):
|
||||
raise RuntimeError('Fob is too slow (%d ms)' % delt)
|
||||
if (r != pingdata):
|
||||
raise ValueError('Ping data not echo\'d')
|
||||
print('1000 byte ping time: %s ms' % delt)
|
||||
except CtapError as e:
|
||||
print('7609 byte Ping failed:', e)
|
||||
raise RuntimeError('ping failed')
|
||||
print('PASS: 7609 byte ping')
|
||||
#sys.flush(sys.sto)
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
def test_hid(self,):
|
||||
#print('Test idle')
|
||||
#try:
|
||||
#cmd,resp = self.recv_raw()
|
||||
#except socket.timeout:
|
||||
#print('Pass: Idle')
|
||||
cmd,resp = self.recv_raw()
|
||||
except socket.timeout:
|
||||
print('Pass: Idle')
|
||||
|
||||
print('Test init')
|
||||
r = self.send_data(CTAPHID.INIT, '\x11\x11\x11\x11\x11\x11\x11\x11')
|
||||
@ -216,18 +217,19 @@ class Tester():
|
||||
self.check_error(resp, CtapError.ERR.INVALID_LENGTH)
|
||||
print('PASS: invalid length')
|
||||
|
||||
#r = self.send_data(CTAPHID.PING, '\x44'*200)
|
||||
#print('Sending packets that skip a sequence number.')
|
||||
#self.send_raw('\x81\x04\x90')
|
||||
#self.send_raw('\x00')
|
||||
#self.send_raw('\x01')
|
||||
## skip 2
|
||||
#self.send_raw('\x03')
|
||||
#cmd,resp = self.recv_raw()
|
||||
#self.check_error(resp, CtapError.ERR.INVALID_SEQ)
|
||||
#cmd,resp = self.recv_raw()
|
||||
#assert(cmd == 0xbf) # timeout
|
||||
#print('PASS: invalid sequence')
|
||||
r = self.send_data(CTAPHID.PING, '\x44'*200)
|
||||
print('Sending packets that skip a sequence number.')
|
||||
self.send_raw('\x81\x04\x90')
|
||||
self.send_raw('\x00')
|
||||
self.send_raw('\x01')
|
||||
# skip 2
|
||||
self.send_raw('\x03')
|
||||
cmd,resp = self.recv_raw()
|
||||
self.check_error(resp, CtapError.ERR.INVALID_SEQ)
|
||||
if check_timeouts:
|
||||
cmd,resp = self.recv_raw()
|
||||
assert(cmd == 0xbf) # timeout
|
||||
print('PASS: invalid sequence')
|
||||
|
||||
print('Resync and send ping')
|
||||
try:
|
||||
@ -262,13 +264,13 @@ class Tester():
|
||||
cmd,r = self.recv_raw() # init response
|
||||
assert(cmd == 0x86)
|
||||
self.set_cid(oldcid)
|
||||
#print('wait for timeout')
|
||||
#cmd,r = self.recv_raw() # timeout response
|
||||
#assert(cmd == 0xbf)
|
||||
if check_timeouts:
|
||||
#print('wait for timeout')
|
||||
cmd,r = self.recv_raw() # timeout response
|
||||
assert(cmd == 0xbf)
|
||||
|
||||
print('PASS: resync and timeout')
|
||||
|
||||
|
||||
print('Test timeout')
|
||||
self.send_data(CTAPHID.INIT, '\x11\x22\x33\x44\x55\x66\x77\x88')
|
||||
t1 = time.time() * 1000
|
||||
@ -294,14 +296,15 @@ class Tester():
|
||||
assert(r[0] == CtapError.ERR.INVALID_SEQ)
|
||||
print('PASS: Test not cont')
|
||||
|
||||
print('Check random cont ignored')
|
||||
#self.send_data(CTAPHID.INIT, '\x11\x22\x33\x44\x55\x66\x77\x88')
|
||||
#self.send_raw('\x01\x10\x00')
|
||||
#try:
|
||||
#cmd,r = self.recv_raw() # timeout response
|
||||
#except socket.timeout:
|
||||
#pass
|
||||
print('PASS: random cont')
|
||||
if check_timeouts:
|
||||
print('Check random cont ignored')
|
||||
self.send_data(CTAPHID.INIT, '\x11\x22\x33\x44\x55\x66\x77\x88')
|
||||
self.send_raw('\x01\x10\x00')
|
||||
try:
|
||||
cmd,r = self.recv_raw() # timeout response
|
||||
except socket.timeout:
|
||||
pass
|
||||
print('PASS: random cont')
|
||||
|
||||
print('Check busy')
|
||||
t1 = time.time() * 1000
|
||||
@ -336,11 +339,13 @@ class Tester():
|
||||
self.send_raw('\x81\x00\x63')
|
||||
self.send_raw('\x00')
|
||||
|
||||
cmd,r = self.recv_raw() # busy response
|
||||
|
||||
self.set_cid(cid1) # finish 1st channel ping
|
||||
self.send_raw('\x00')
|
||||
|
||||
self.set_cid(cid2)
|
||||
cmd,r = self.recv_raw() # busy response
|
||||
|
||||
assert(cmd == 0xbf)
|
||||
assert(r[0] == CtapError.ERR.CHANNEL_BUSY)
|
||||
|
||||
@ -349,18 +354,19 @@ class Tester():
|
||||
assert(cmd == 0x81)
|
||||
assert(len(r) == 0x63)
|
||||
|
||||
#cmd,r = self.recv_raw() # timeout
|
||||
#assert(cmd == 0xbf)
|
||||
#assert(r[0] == CtapError.ERR.TIMEOUT)
|
||||
if check_timeouts:
|
||||
cmd,r = self.recv_raw() # timeout
|
||||
assert(cmd == 0xbf)
|
||||
assert(r[0] == CtapError.ERR.TIMEOUT)
|
||||
print('PASS: busy interleaved')
|
||||
|
||||
|
||||
print('Test idle, wait for timeout')
|
||||
sys.stdout.flush()
|
||||
try:
|
||||
cmd,resp = self.recv_raw()
|
||||
except socket.timeout:
|
||||
print('Pass: Idle')
|
||||
if check_timeouts:
|
||||
print('Test idle, wait for timeout')
|
||||
sys.stdout.flush()
|
||||
try:
|
||||
cmd,resp = self.recv_raw()
|
||||
except socket.timeout:
|
||||
print('Pass: Idle')
|
||||
|
||||
print('Test cid 0 is invalid')
|
||||
self.set_cid('\x00\x00\x00\x00')
|
||||
@ -593,12 +599,9 @@ def test_find_brute_force():
|
||||
if __name__ == '__main__':
|
||||
t = Tester()
|
||||
t.find_device()
|
||||
#t.test_hid()
|
||||
#t.test_long_ping()
|
||||
# t.test_hid()
|
||||
# t.test_long_ping()
|
||||
t.test_fido2()
|
||||
#test_find_brute_force()
|
||||
#t.test_fido2_simple()
|
||||
t.test_fido2_brute_force()
|
||||
|
||||
|
||||
|
||||
#t.test_fido2_brute_force()
|
||||
|
Loading…
x
Reference in New Issue
Block a user