This commit add a simple test to check that a text may be ciphered and unciphered. Each step are checked with the known result.
Signed-off-by: Philippe Reynes <philippe.rey...@softathome.com> --- test/py/tests/test_aes.py | 101 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 test/py/tests/test_aes.py Changelog: v4: - use function to clean the code - add new test to check key and iv corruption Before, this patch was in a serie accepted, excepted this patch: v3: - add unmap_sysmem (thanks Simon) v2: - add binary file (key128.bin, iv128.bin and plaintext.bin) diff --git a/test/py/tests/test_aes.py b/test/py/tests/test_aes.py new file mode 100644 index 0000000..01d514e --- /dev/null +++ b/test/py/tests/test_aes.py @@ -0,0 +1,101 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2019, Softathome + +# Test U-Boot's "aes" command. + +import pytest + +def test_aes(u_boot_console): + """ + Test the aes command, and validate that it can + cipher and uncipher a random data + """ + + def generate_key_iv_data(): + # Generate random key + output = cons.run_command('random 1000 0x10 0') + assert('16 bytes filled with random data' in ''.join(output)) + + # Generate random IV + output = cons.run_command('random 2000 0x10 0') + assert('16 bytes filled with random data' in ''.join(output)) + + # Generate random data + output = cons.run_command('random 3000 0x20 0') + assert('32 bytes filled with random data' in ''.join(output)) + + def test_nominal(): + # Generate random key, iv and data + generate_key_iv_data() + + # Encrypt random data + output = cons.run_command('aes enc 1000 2000 3000 4000 0x20') + + # Check that ciphered data are different than unciphered data + output = cons.run_command('cmp.b 3000 4000 0x20') + assert('Total of 0 byte(s) were the same' in ''.join(output)) + + # Decrypt ciphered data + output = cons.run_command('aes dec 1000 2000 4000 5000 0x20') + + # Check that unciphered data are the same than initial data + output = cons.run_command('cmp.b 3000 5000 0x20') + assert('Total of 32 byte(s) were the same' in ''.join(output)) + + def test_corrupted_key(seed): + # Generate random key, iv and data + generate_key_iv_data() + + # Encrypt random data + output = cons.run_command('aes enc 1000 2000 3000 4000 0x20') + + # Check that ciphered data are different than unciphered data + output = cons.run_command('cmp.b 3000 4000 0x20') + assert('Total of 0 byte(s) were the same' in ''.join(output)) + + # Corrupt the key (simply generate a new one) + output = cons.run_command('random 1000 0x10 %d' % seed) + assert('16 bytes filled with random data' in ''.join(output)) + + # Decrypt ciphered data + output = cons.run_command('aes dec 1000 2000 4000 5000 0x20') + + # Check that unciphered data are different than initial data + output = cons.run_command('cmp.b 3000 5000 0x20') + assert('Total of 32 byte(s) were the same' not in ''.join(output)) + + def test_corrupted_iv(seed): + # Generate random key, iv and data + generate_key_iv_data() + + # Encrypt random data + output = cons.run_command('aes enc 1000 2000 3000 4000 0x20') + + # Check that ciphered data are different than unciphered data + output = cons.run_command('cmp.b 3000 4000 0x20') + assert('Total of 0 byte(s) were the same' in ''.join(output)) + + # Corrupt the iv (simply generate a new one) + output = cons.run_command('random 2000 0x10 %d' % seed) + assert('16 bytes filled with random data' in ''.join(output)) + + # Decrypt ciphered data + output = cons.run_command('aes dec 1000 2000 4000 5000 0x20') + + # Check that unciphered data are different than initial data + output = cons.run_command('cmp.b 3000 5000 0x20') + assert('Total of 32 byte(s) were the same' not in ''.join(output)) + + cons = u_boot_console + + # Check that the option cmd_aes is enabled in the config + if cons.config.buildconfig.get('config_cmd_aes', 'n') != 'y': + pytest.skip('aes command not supported') + + # Send a command with no argument ... + output = cons.run_command('aes') + assert('AES 128 CBC encryption' in ''.join(output)) + + test_nominal() + test_corrupted_key(666) + test_corrupted_iv(666) -- 2.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot