add more tests
This commit is contained in:
parent
f704851419
commit
6674f0a8ff
@ -890,12 +890,41 @@ class Tester:
|
|||||||
assert len(prev_auth.auth_data) == 37
|
assert len(prev_auth.auth_data) == 37
|
||||||
print("pass")
|
print("pass")
|
||||||
|
|
||||||
|
print("Test that auth_data.rpIdHash is correct")
|
||||||
|
assert sha256(rp["id"].encode()) == prev_auth.auth_data.rp_id_hash
|
||||||
|
print("Pass")
|
||||||
|
|
||||||
|
print("Check that AT flag is not set")
|
||||||
|
assert (prev_auth.auth_data.flags & 0xF8) == 0
|
||||||
|
print("Pass")
|
||||||
|
|
||||||
print("Test that user, credential and numberOfCredentials are not present")
|
print("Test that user, credential and numberOfCredentials are not present")
|
||||||
assert prev_auth.user == None
|
assert prev_auth.user == None
|
||||||
assert prev_auth.number_of_credentials == None
|
assert prev_auth.number_of_credentials == None
|
||||||
# assert prev_auth.credential == None # TODO double check this
|
# assert prev_auth.credential == None # TODO double check this
|
||||||
print("Pass")
|
print("Pass")
|
||||||
|
|
||||||
|
testGA(
|
||||||
|
"Send GA request with empty allow_list, expect NO_CREDENTIALS",
|
||||||
|
rp["id"],
|
||||||
|
cdh,
|
||||||
|
[],
|
||||||
|
expectedError=CtapError.ERR.NO_CREDENTIALS,
|
||||||
|
)
|
||||||
|
|
||||||
|
# apply bit flip
|
||||||
|
badid = list(prev_reg.auth_data.credential_data.credential_id[:])
|
||||||
|
badid[len(badid) // 2] = badid[len(badid) // 2] ^ 1
|
||||||
|
badid = bytes(badid)
|
||||||
|
|
||||||
|
testGA(
|
||||||
|
"Send GA request with corrupt credId in allow_list, expect NO_CREDENTIALS",
|
||||||
|
rp["id"],
|
||||||
|
cdh,
|
||||||
|
[{"id": badid, "type": "public-key"}],
|
||||||
|
expectedError=CtapError.ERR.NO_CREDENTIALS,
|
||||||
|
)
|
||||||
|
|
||||||
testMC(
|
testMC(
|
||||||
"Send MC request with missing clientDataHash, expect error",
|
"Send MC request with missing clientDataHash, expect error",
|
||||||
None,
|
None,
|
||||||
@ -1407,6 +1436,7 @@ class Tester:
|
|||||||
print("Send an extra getNextAssertion request, expect error")
|
print("Send an extra getNextAssertion request, expect error")
|
||||||
try:
|
try:
|
||||||
auth4 = self.ctap.get_next_assertion()
|
auth4 = self.ctap.get_next_assertion()
|
||||||
|
assert 0
|
||||||
except CtapError as e:
|
except CtapError as e:
|
||||||
print(e)
|
print(e)
|
||||||
print("Pass")
|
print("Pass")
|
||||||
@ -1493,16 +1523,61 @@ class Tester:
|
|||||||
print("Setting pin code >63 bytes, expect POLICY_VIOLATION ")
|
print("Setting pin code >63 bytes, expect POLICY_VIOLATION ")
|
||||||
try:
|
try:
|
||||||
self.client.pin_protocol.set_pin("A" * 64)
|
self.client.pin_protocol.set_pin("A" * 64)
|
||||||
|
assert 0
|
||||||
except CtapError as e:
|
except CtapError as e:
|
||||||
assert e.code == CtapError.ERR.PIN_POLICY_VIOLATION
|
assert e.code == CtapError.ERR.PIN_POLICY_VIOLATION
|
||||||
print("Pass")
|
print("Pass")
|
||||||
|
|
||||||
|
print("Get pin token when no pin is set, expect PIN_NOT_SET")
|
||||||
|
try:
|
||||||
|
self.client.pin_protocol.get_pin_token(pin1)
|
||||||
|
assert 0
|
||||||
|
except CtapError as e:
|
||||||
|
assert e.code == CtapError.ERR.PIN_NOT_SET
|
||||||
|
|
||||||
|
print("Get change pin when no pin is set, expect PIN_NOT_SET")
|
||||||
|
try:
|
||||||
|
self.client.pin_protocol.change_pin(pin1, "1234")
|
||||||
|
assert 0
|
||||||
|
except CtapError as e:
|
||||||
|
assert e.code == CtapError.ERR.PIN_NOT_SET
|
||||||
|
print("Pass")
|
||||||
|
|
||||||
print("Setting pin code and get pin_token, expect SUCCESS")
|
print("Setting pin code and get pin_token, expect SUCCESS")
|
||||||
self.client.pin_protocol.set_pin(pin1)
|
self.client.pin_protocol.set_pin(pin1)
|
||||||
pin_token = self.client.pin_protocol.get_pin_token(pin1)
|
pin_token = self.client.pin_protocol.get_pin_token(pin1)
|
||||||
pin_auth = hmac_sha256(pin_token, cdh)[:16]
|
pin_auth = hmac_sha256(pin_token, cdh)[:16]
|
||||||
print("Pass")
|
print("Pass")
|
||||||
|
|
||||||
|
print("Get info and assert that clientPin is set to true")
|
||||||
|
info = self.ctap.get_info()
|
||||||
|
assert info.options["clientPin"]
|
||||||
|
print("Pass")
|
||||||
|
|
||||||
|
print("Test setting pin again fails")
|
||||||
|
try:
|
||||||
|
self.client.pin_protocol.set_pin(pin1)
|
||||||
|
assert 0
|
||||||
|
except CtapError as e:
|
||||||
|
print(e)
|
||||||
|
print("Pass")
|
||||||
|
|
||||||
|
res_mc = testMC(
|
||||||
|
"Send MC request with no pin_auth, expect PIN_REQUIRED",
|
||||||
|
cdh,
|
||||||
|
rp,
|
||||||
|
user,
|
||||||
|
key_params,
|
||||||
|
expectedError=CtapError.ERR.PIN_REQUIRED,
|
||||||
|
)
|
||||||
|
|
||||||
|
res_mc = testGA(
|
||||||
|
"Send GA request with no pin_auth, expect PIN_REQUIRED",
|
||||||
|
rp["id"],
|
||||||
|
cdh,
|
||||||
|
expectedError=CtapError.ERR.PIN_REQUIRED,
|
||||||
|
)
|
||||||
|
|
||||||
res = testCP(
|
res = testCP(
|
||||||
"Test getRetries, expect SUCCESS",
|
"Test getRetries, expect SUCCESS",
|
||||||
pin_protocol,
|
pin_protocol,
|
||||||
@ -1733,6 +1808,7 @@ class Tester:
|
|||||||
def test_bootloader(self,):
|
def test_bootloader(self,):
|
||||||
sc = SoloClient()
|
sc = SoloClient()
|
||||||
sc.find_device(self.dev)
|
sc.find_device(self.dev)
|
||||||
|
sc.use_u2f()
|
||||||
|
|
||||||
memmap = (0x08005000, 0x08005000 + 198 * 1024 - 8)
|
memmap = (0x08005000, 0x08005000 + 198 * 1024 - 8)
|
||||||
data = b"A" * 64
|
data = b"A" * 64
|
||||||
|
Loading…
x
Reference in New Issue
Block a user