From 5978078ba49a9a5dd8df4cc1fbbc816c2373c477 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Thu, 4 Jun 2015 08:31:18 +0300 Subject: test: add README --- test/README.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 test/README.md (limited to 'test') diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..f49979a --- /dev/null +++ b/test/README.md @@ -0,0 +1,59 @@ +# Testing the implementation + +After you've [built](https://github.com/egor-tensin/aesni#building) the basic utilities, +you can verify the implementation either manually or automatically using scripts. + +## Manually + +The basic utilities have uniform interfaces. +For the ECB mode of operation, the usage is follows: + + aesNNNecb_encrypt.exe KEY [PLAIN...] + +and + + aesNNNecb_decrypt.exe KEY [CIPHER...] + +For the modes of operation involving initialization vectors (CBC, CFB, OFB, CTR, etc.), +use the utilities like this: + + aesNNNxxx_encrypt.exe KEY INIT_VECTOR [PLAIN...] + +and + + aesNNNxxx_decrypt.exe KEY INIT_VECTOR [CIPHER...] + +For example, + + > aes128ecb_encrypt.exe 000102030405060708090a0b0c0d0e0f 00112233445566778899aabbccddeeff + 69c4e0d86a7b0430d8cdb78070b4c55a + + > aes192cbc_encrypt.exe 000102030405060708090a0b0c0d0e0f1011121314151617 1032547698badcfe1032547698badcfe 00112233445566778899aabbccddeeff 00112233445566778899aabbccddeeff 00112233445566778899aabbccddeeff + 92c01276b27eb8baaa3cabe2c661d4a8 + d42bdf90c1a48221a92a5137c1445418 + 96248fca82fbefa31345ae7d8fb7933e + +On older CPUs, you can run the executables +[using Intel SDE](https://github.com/egor-tensin/aesni#running-on-older-cpus). + +## Using test vectors + +### From NIST 800-38A + +You can test the implementation against the vectors from +[NIST Special Publication 800-38A](http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf) +using `800-32a.py`. + +The script is written in Python 3, so you need to be able to run Python 3 scripts prior to testing. +Then you can run the script, passing the path to the directory with the required `*_encrypt.exe` and `*_decrypt.exe` files like this: + + python 800-32a.py -r C:\build\test\Debug + +On older CPUs, you can make the script run the executables +[using Intel SDE](https://github.com/egor-tensin/aesni#running-on-older-cpus) +using + + python 800-32a.py -r C:\build\test\Debug -e + +I've tried to make the script output self-explanatory. +The ultimate goal is to get `No mismatches detected!` in the final line. -- cgit v1.2.3