aboutsummaryrefslogblamecommitdiffstatshomepage
path: root/README.md
blob: 6b198ce76ee5bbd871c943915bef14343b440a72 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                                                                   







                                                                                                                           







                                                                                                             

                        
                                                                                                                             
                                                                                                                     
                                         
 
                                                                                                                        

                                    




                                                                                 


                                                                             
 



                                                                                                            
# aesni

Simple AES encryption algorithm implementation using the AES-NI instruction set.

## Building

I've used the compiler and the assembler shipped with Visual Studio Express 2013 with Update 4 for Windows Desktop.

You can generate the solution using CMake and build it using Visual Studio.

Some of the utilities also depend on a few Boost libraries.
In particular, Boost.ProgramOptions has to be built prior to building these utilities.
To enable CMake to find Boost libraries, pass the path to the root Boost directory like this:

    cmake -D BOOST_ROOT=C:\workspace\third-party\boost_1_58_0 ...

Remember that in order to link to the static Boost libraries, you also have to pass `-D Boost_USE_STATIC_LIBS=ON` to CMake.

## Utilities

A couple of useful utilities built on top of the library are included.
Namely,

* [the file encryption utilities](utils/file/cxx#file-encryption-utilities),
* and [the block encryption utilities](utils/block/cxx#block-encryption-utilities) (used mainly for testing).

## Running on older CPUs

To run the executables that are using the AES-NI instruction set on a CPU w/o the support for these instructions, one can use
[Intel Software Development Emulator](https://software.intel.com/en-us/articles/intel-software-development-emulator).
You can then run an executable like this:

    > sde -- aes_encrypt_block.exe -a aes128 -m ecb -- 000102030405060708090a0b0c0d0e0f 00112233445566778899aabbccddeeff
    69c4e0d86a7b0430d8cdb78070b4c55a

## Documentation

You can generate the docs using [Doxygen](http://www.stack.nl/~dimitri/doxygen/).
The docs will be put into the `doc` directory in the repository's root.

## Testing

See [Testing](https://github.com/egor-tensin/aesni/tree/master/test#testing).

## Licensing

This project, including all of the files and their contents, is licensed under the terms of the MIT License.
See LICENSE.txt for details.