mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-05-14 20:19:51 +00:00
56 lines
1.6 KiB
Python
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
|