jonesmarvin8 24f6f1f8ca fixes
2026-04-26 21:29:54 -04:00

56 lines
1.6 KiB
Python

import pytest
from keycard.crypto import aes
def test_aes_cbc_encrypt_decrypt_roundtrip():
key = b'0123456789abcdef'
iv = b'abcdef9876543210'
data = b'hello world 1234'
ciphertext = aes.aes_cbc_encrypt(key, iv, data)
decrypted = aes.aes_cbc_decrypt(key, iv, ciphertext)
assert decrypted == data
def test_aes_cbc_encrypt_padding():
key = b'0123456789abcdef'
iv = b'abcdef9876543210'
data = b'abc'
ciphertext = aes.aes_cbc_encrypt(key, iv, data)
assert len(ciphertext) % 16 == 0
decrypted = aes.aes_cbc_decrypt(key, iv, ciphertext)
assert decrypted == data
def test_aes_cbc_encrypt_no_padding():
key = b'0123456789abcdef'
iv = b'abcdef9876543210'
data = b'1234567890abcdef'
ciphertext = aes.aes_cbc_encrypt(key, iv, data, padding=False)
assert len(ciphertext) == 16
with pytest.raises(ValueError):
aes.aes_cbc_decrypt(key, iv, ciphertext)
def test_aes_cbc_decrypt_invalid_padding():
key = b'0123456789abcdef'
iv = b'abcdef9876543210'
data = b'1234567890abcdef'
ciphertext = aes.aes_cbc_encrypt(key, iv, data, padding=False)
with pytest.raises(ValueError):
aes.aes_cbc_decrypt(key, iv, ciphertext)
@pytest.mark.parametrize('data', [
b'',
b'a',
b'short',
b'exactly16bytes!!',
b'longer data that is not a multiple of block size',
])
def test_various_lengths(data):
key = b'0123456789abcdef'
iv = b'abcdef9876543210'
ciphertext = aes.aes_cbc_encrypt(key, iv, data)
decrypted = aes.aes_cbc_decrypt(key, iv, ciphertext)
assert decrypted == data