mirror of
https://github.com/polhenarejos/pico-hsm.git
synced 2026-01-17 09:28:05 +00:00
Added delete XKEK tests.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
parent
4d569df108
commit
63c465138b
2 changed files with 28 additions and 2 deletions
|
|
@ -310,8 +310,8 @@ class Device:
|
||||||
resp = self.send(command=0x62, p1=keyid, p2=p2, data=list(data))
|
resp = self.send(command=0x62, p1=keyid, p2=p2, data=list(data))
|
||||||
return bytes(resp)
|
return bytes(resp)
|
||||||
|
|
||||||
def import_dkek(self, dkek):
|
def import_dkek(self, dkek, key_domain=0):
|
||||||
resp = self.send(cla=0x80, command=0x52, p1=0x0, p2=0x0, data=dkek)
|
resp = self.send(cla=0x80, command=0x52, p1=0x0, p2=key_domain, data=dkek)
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
def import_key(self, pkey, dkek=None, purposes=None):
|
def import_key(self, pkey, dkek=None, purposes=None):
|
||||||
|
|
@ -612,6 +612,8 @@ class Device:
|
||||||
def derive_xkek(self, keyid, cert):
|
def derive_xkek(self, keyid, cert):
|
||||||
self.send(cla=0x80, command=0x62, p1=keyid, p2=Algorithm.ALGO_EC_ECDH_XKEK.value, data=cert)
|
self.send(cla=0x80, command=0x62, p1=keyid, p2=Algorithm.ALGO_EC_ECDH_XKEK.value, data=cert)
|
||||||
|
|
||||||
|
def delete_xkek(self, key_domain=0):
|
||||||
|
self.send(cla=0x80, command=0x52, p1=0x04, p2=key_domain)
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
def device():
|
def device():
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,9 @@ def test_create_xkek(device):
|
||||||
pub = ec.EllipticCurvePublicKey.from_encoded_point(ec.BrainpoolP256R1(), bytes(gskQ))
|
pub = ec.EllipticCurvePublicKey.from_encoded_point(ec.BrainpoolP256R1(), bytes(gskQ))
|
||||||
assert(bytes(did) == int_to_bytes(pub.public_numbers().x)+int_to_bytes(pub.public_numbers().y))
|
assert(bytes(did) == int_to_bytes(pub.public_numbers().x)+int_to_bytes(pub.public_numbers().y))
|
||||||
|
|
||||||
|
keyid = -1
|
||||||
def test_derive_xkek(device):
|
def test_derive_xkek(device):
|
||||||
|
global keyid
|
||||||
keyid = device.generate_xkek_key()
|
keyid = device.generate_xkek_key()
|
||||||
|
|
||||||
resp = device.list_keys()
|
resp = device.list_keys()
|
||||||
|
|
@ -71,5 +73,27 @@ def test_derive_xkek(device):
|
||||||
resp = device.get_key_domain()
|
resp = device.get_key_domain()
|
||||||
assert(bytes(resp['kcv']) != b'\x00'*8)
|
assert(bytes(resp['kcv']) != b'\x00'*8)
|
||||||
|
|
||||||
|
|
||||||
|
def test_delete_xkek(device):
|
||||||
|
device.delete_xkek()
|
||||||
|
|
||||||
|
resp = device.get_key_domain()
|
||||||
|
assert(bytes(resp['kcv']) == b'\x00'*8)
|
||||||
|
|
||||||
|
def test_delete_domain_with_key(device):
|
||||||
|
with pytest.raises(APDUResponse) as e:
|
||||||
|
device.delete_key_domain()
|
||||||
|
assert(e.value.sw == SWCodes.SW_FILE_EXISTS.value)
|
||||||
|
|
||||||
device.delete_file(DOPrefixes.KEY_PREFIX.value << 8 | keyid)
|
device.delete_file(DOPrefixes.KEY_PREFIX.value << 8 | keyid)
|
||||||
device.delete_file(DOPrefixes.EE_CERTIFICATE_PREFIX.value << 8 | keyid)
|
device.delete_file(DOPrefixes.EE_CERTIFICATE_PREFIX.value << 8 | keyid)
|
||||||
|
|
||||||
|
def test_delete_domain(device):
|
||||||
|
device.delete_key_domain()
|
||||||
|
|
||||||
|
resp = device.get_key_domain()
|
||||||
|
assert('kcv' not in resp)
|
||||||
|
assert('xkek' not in resp)
|
||||||
|
assert('error' in resp)
|
||||||
|
assert(resp['error'] == SWCodes.SW_REFERENCE_NOT_FOUND.value)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue