diff --git a/tests/conftest.py b/tests/conftest.py index 90c2903..aee6aa2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,7 +2,7 @@ import sys import pytest from binascii import hexlify -from utils import APDUResponse, DOPrefixes, KeyType, Algorithm +from utils import APDUResponse, DOPrefixes, KeyType, Algorithm, Padding import hashlib try: @@ -240,6 +240,16 @@ class Device: ) return pubkey.verify(signature, data, padd, hsh) + def decrypt(self, keyid, data, pad): + if (isinstance(pad, padding.OAEP)): + p2 = Padding.OAEP.value + elif (isinstance(pad, padding.PKCS1v15)): + p2 = Padding.PKCS.value + else: + p2 = Padding.RAW.value + resp = self.send(command=0x62, p1=keyid, p2=p2, data=list(data)) + return bytes(resp) + @pytest.fixture(scope="session") def device(): dev = Device() diff --git a/tests/utils.py b/tests/utils.py index 4923507..7ce2cca 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -118,3 +118,8 @@ class Algorithm(Enum): ALGO_RSA_PSS_SHA256 = 0x43 ALGO_RSA_PSS_SHA384 = 0x44 ALGO_RSA_PSS_SHA512 = 0x45 + +class Padding(Enum): + RAW = 0x21 + PKCS = 0x22 + OAEP = 0x23