Added CMAC tests.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos
2023-02-17 22:46:16 +01:00
parent a1f478239d
commit 0b71bf693d
2 changed files with 19 additions and 1 deletions

View File

@@ -447,6 +447,10 @@ class Device:
resp = self.send(cla=0x80, command=0x78, p1=keyid, p2=0x51, data=data) resp = self.send(cla=0x80, command=0x78, p1=keyid, p2=0x51, data=data)
return resp return resp
def cmac(self, keyid, data):
resp = self.send(cla=0x80, command=0x78, p1=keyid, p2=Algorithm.ALGO_AES_CMAC.value, data=data)
return resp
@pytest.fixture(scope="session") @pytest.fixture(scope="session")
def device(): def device():

View File

@@ -19,7 +19,8 @@
import pytest import pytest
import os import os
from cryptography.hazmat.primitives import hashes, hmac from cryptography.hazmat.primitives import hashes, hmac, cmac
from cryptography.hazmat.primitives.ciphers import algorithms
from utils import Algorithm, DOPrefixes from utils import Algorithm, DOPrefixes
from const import DEFAULT_DKEK_SHARES, DEFAULT_DKEK from const import DEFAULT_DKEK_SHARES, DEFAULT_DKEK
@@ -44,3 +45,16 @@ def test_mac_hmac(device, size, algo):
h.update(MESSAGE) h.update(MESSAGE)
resB = h.finalize() resB = h.finalize()
assert(bytes(resA) == resB) assert(bytes(resA) == resB)
@pytest.mark.parametrize(
"size", [128, 192, 256]
)
def test_mac_cmac(device, size):
pkey = os.urandom(size // 8)
keyid = device.import_key(pkey)
resA = device.cmac(keyid, MESSAGE)
c = cmac.CMAC(algorithms.AES(pkey))
c.update(MESSAGE)
resB = c.finalize()
assert(bytes(resA) == resB)