diff --git a/node/AES.hpp b/node/AES.hpp index b6c13e2ce..71979a961 100644 --- a/node/AES.hpp +++ b/node/AES.hpp @@ -611,91 +611,103 @@ private: } inline void _decrypt_gcm256_aesni(unsigned int len,const uint8_t *in,uint8_t *out,const uint8_t *iv,unsigned int alen,const uint8_t *assoc,uint8_t *icv,unsigned int icvsize) { - __m128i d1,d2,d3,d4,t1,t2,t3,t4,k; - __m128i y,j,cb,*bi,*bo; - unsigned int blocks,pblocks,rem; + __m128i j = _create_j_aesni(iv); + __m128i cb = _increment_be_aesni(j); + __m128i y = _icv_header_aesni(assoc,alen); + unsigned int blocks = len / 16; + unsigned int pblocks = blocks - (blocks % 4); + unsigned int rem = len % 16; + __m128i *bi = (__m128i *)in; + __m128i *bo = (__m128i *)out; - j = _create_j_aesni(iv); - cb = _increment_be_aesni(j); - y = _icv_header_aesni(assoc,alen); - blocks = len / 16; - pblocks = blocks - (blocks % 4); - rem = len % 16; - bi = (__m128i *)in; - bo = (__m128i *)out; + __m128i k0 = _k.ni.k[0]; + __m128i k1 = _k.ni.k[1]; + __m128i k2 = _k.ni.k[2]; + __m128i k3 = _k.ni.k[3]; + __m128i k4 = _k.ni.k[4]; + __m128i k5 = _k.ni.k[5]; + __m128i k6 = _k.ni.k[6]; + __m128i k7 = _k.ni.k[7]; + __m128i k8 = _k.ni.k[8]; + __m128i k9 = _k.ni.k[9]; + __m128i k10 = _k.ni.k[10]; + __m128i k11 = _k.ni.k[11]; + __m128i k12 = _k.ni.k[12]; + __m128i k13 = _k.ni.k[13]; + __m128i k14 = _k.ni.k[14]; unsigned int i; for (i=0;i