#ifndef AESNIENCCBC_H #define AESNIENCCBC_H #include #include #include namespace { void AES_CBC_encrypt(const unsigned char *in, unsigned char *out, unsigned char ivec[16], unsigned long length, const char *key, int number_of_rounds) { __m128i feedback,data; unsigned long i; int j; if (length%16) length = length/16+1; else length /=16; feedback=_mm_loadu_si128 ((__m128i*)ivec); for(i=0; i < length; i++) { data = _mm_loadu_si128 (&((__m128i*)in)[i]); feedback = _mm_xor_si128 (data,feedback); feedback = _mm_xor_si128 (feedback,((__m128i*)key)[0]); for(j=1; j