mirror of
https://github.com/polhenarejos/pico-fido
synced 2026-06-01 18:51:19 +02:00
Fix rename oath when old name starts with the newer.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
@@ -625,7 +625,7 @@ int cmd_rename() {
|
|||||||
if (asn1_find_tag(&ctxi, TAG_NAME, &new_name) == false) {
|
if (asn1_find_tag(&ctxi, TAG_NAME, &new_name) == false) {
|
||||||
return SW_WRONG_DATA();
|
return SW_WRONG_DATA();
|
||||||
}
|
}
|
||||||
if (memcmp(name.data, new_name.data, name.len) == 0) {
|
if (name.len == new_name.len && memcmp(name.data, new_name.data, name.len) == 0) {
|
||||||
return SW_WRONG_DATA();
|
return SW_WRONG_DATA();
|
||||||
}
|
}
|
||||||
file_t *ef = find_oath_cred(name.data, name.len);
|
file_t *ef = find_oath_cred(name.data, name.len);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ INS_PUT = 0x01
|
|||||||
INS_DELETE = 0x02
|
INS_DELETE = 0x02
|
||||||
INS_SET_CODE = 0x03
|
INS_SET_CODE = 0x03
|
||||||
INS_RESET = 0x04
|
INS_RESET = 0x04
|
||||||
|
INS_RENAME = 0x05
|
||||||
INS_LIST = 0xa1
|
INS_LIST = 0xa1
|
||||||
INS_CALCULATE = 0xa2
|
INS_CALCULATE = 0xa2
|
||||||
INS_VALIDATE = 0xa3
|
INS_VALIDATE = 0xa3
|
||||||
@@ -89,6 +90,24 @@ def test_life(reset_oath):
|
|||||||
resp = list_apdu(reset_oath)
|
resp = list_apdu(reset_oath)
|
||||||
assert(len(resp) == 0)
|
assert(len(resp) == 0)
|
||||||
|
|
||||||
|
|
||||||
|
def test_rename_prefix_extension(reset_oath):
|
||||||
|
old_name = b"30/test"
|
||||||
|
new_name = b"30/test2"
|
||||||
|
key = list(bytes(b"foo bar"))
|
||||||
|
|
||||||
|
put_data = [TAG_NAME, len(old_name)] + list(old_name)
|
||||||
|
put_data += [TAG_KEY, len(key) + 2, TYPE_TOTP | ALG_SHA1, 6] + key
|
||||||
|
send_apdu(reset_oath, INS_PUT, p1=0, p2=0, data=put_data)
|
||||||
|
|
||||||
|
rename_data = [TAG_NAME, len(old_name)] + list(old_name)
|
||||||
|
rename_data += [TAG_NAME, len(new_name)] + list(new_name)
|
||||||
|
send_apdu(reset_oath, INS_RENAME, p1=0, p2=0, data=rename_data)
|
||||||
|
|
||||||
|
resp = list_apdu(reset_oath)
|
||||||
|
exp = [TAG_NAME_LIST, len(new_name) + 1, TYPE_TOTP | ALG_SHA1] + list(new_name)
|
||||||
|
assert resp == exp
|
||||||
|
|
||||||
def test_overwrite(reset_oath):
|
def test_overwrite(reset_oath):
|
||||||
data = data_name + data_key
|
data = data_name + data_key
|
||||||
resp = send_apdu(reset_oath, INS_PUT, p1=0, p2=0, data=list(data))
|
resp = send_apdu(reset_oath, INS_PUT, p1=0, p2=0, data=list(data))
|
||||||
|
|||||||
Reference in New Issue
Block a user