diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/README.md | 90 |
1 files changed, 51 insertions, 39 deletions
diff --git a/test/README.md b/test/README.md index 8843066..6d7cc8b 100644 --- a/test/README.md +++ b/test/README.md @@ -1,76 +1,88 @@ # Testing -After you've [built](../README.md#building) the utilities, you can verify the -implementation either [manually](#manually) or -[automatically](#using-test-vectors) using test vectors. +Using the [utilities], you can validate the implementation either by providing +an arbitrary set of inputs (see [manual testing]) or by using the test vectors +provided by various AES [validation programs]. -Using the built utilities, you can also test -[file encryption](#file-encryption). +You can also test that [file encryption] works (at least to some extent). -## Manually +## Manual testing -You can test the implementation using the block encryption/decryption utilities -`encrypt_block.exe` and `decrypt_block.exe`. -Use the `--help` option to examine the usage info of a utility. - -File encryption - -For example, for AES-128 in ECB mode: +You can validate the implementation manually using the block +encryption/decryption utilities `encrypt_block.exe` and `decrypt_block.exe`. +Pass the `--help` parameter to examine the utility's usage info. > encrypt_block.exe -a aes128 -m ecb -- 000102030405060708090a0b0c0d0e0f 00112233445566778899aabbccddeeff 69c4e0d86a7b0430d8cdb78070b4c55a -and for AES-192 in CBC mode: - > decrypt_block.exe -a aes192 -m cbc -- 8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b 000102030405060708090a0b0c0d0e0f 4f021db243bc633d7178183a9fa071e8 b4d9ada9ad7dedf4e5e738763f69145a 571b242012fb7ae07fa9baac3df102e0 08b0e27988598881d920a9e64f5615cd 6bc1bee22e409f96e93d7e117393172a ae2d8a571e03ac9c9eb76fac45af8e51 30c81c46a35ce411e5fbc1191a0a52ef f69f2445df4f9b17ad2b417be66c3710 -On older CPUs, you can run the utilities -[using Intel SDE](../README.md#running-on-older-cpus). +## Validation programs + +A number of test vectors have been collected from various AES validation +programs/reference implementations. -## Using test vectors +The test scripts are written in Python 3 and are used in similar fashion: -The test scripts are written in Python 3 and have uniform interfaces: they -accept a path to the directory with the block encryption/decryption utilities -and allow to run them [using Intel SDE](../README.md#running-on-older-cpus). -They also write log files with a short summary at the end. -In general, each scripts counts the number of tests that failed, succeeded, -caused an error, and the tests that were skipped. +* they accept the path to the directory with the block encryption/decryption + utilities, +* they produce log files with short summaries at the end. + +In general, each of the scripts counts the number of tests that have failed, +succeeded, ended with an error, and were skipped. You must therefore make sure that -* no errors occured while running the tests, -* all the tests succeeded, +* no errors occured while running the script, +* all the tests succeeded except for those that were skipped, * and the skipped tests were skipped for a good reason. -To pass a path to the directory with the required utilities, use the `--path` +To pass the path of the directory with the required utilities, use the `--path` +parameter. +To allow the utilities to be executed on older CPUs, pass the `--sde` parameter. -To make scripts run the utilities using Intel SDE, pass `--sde`. -Use `--help` to see the script's usage details. +Pass the `--help` parameter to see examine the script's usage info. ### NIST Special Publication 800-38A -To test the implementation against the vectors from -[NIST SP 800-38A](http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf), -use `nist-sp-800-32a.py`. +To validate the implementation using the inputs from [NIST SP 800-38A], use +`nist-sp-800-32a.py`: - > nist-sp-800-38a.py -p C:\build\utils\Debug + > nist-sp-800-38a.py -p C:\workspace\personal\build\aes-tools\utils\Debug ### Cryptographic Algorithm Validation Program -To test the implementation against the vectors from -[CAVP](http://csrc.nist.gov/groups/STM/cavp/), use `cavp.py`. -The AES Known Answer Test (KAT) Vectors are used and read from `KAT_AES.zip`. +To validate the implementation using the inputs from [CAVP], use `cavp.py`. - > cavp.py -p C:\build\utils\Debug + > cavp.py -p C:\workspace\personal\build\aes-tools\utils\Debug + +The AES Known Answer Test (KAT) Vectors are used and read from `KAT_AES.zip`. ## File encryption You can also test file encryption using `file.py`. -Its interface and output is similar to the -[block encryption](#using-test-vectors) test scripts. +Its interface and output is similar to the [validation programs] test scripts. The expected ciphertexts (for encryption) and plaintexts (for decryption), along with the keys and initialization vectors, are stored in the files under a separate directory (`file/` by default). + +## See also + +* [Building] +* [Usage on older CPUs] +* [License] + + + +[building]: ../README.md#building +[license]: ../README.md#license +[usage on older cpus]: ../README.md#usage-on-older-cpus +[utilities]: ../utils/README.md +[manual testing]: #manual-testing +[validation programs]: #validation-programs +[file encryption]: #file-encryption +[NIST SP 800-38A]: http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf +[CAVP]: http://csrc.nist.gov/groups/STM/cavp/ |