mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-25 08:37:13 +09:00
Indent
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
/* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper
|
||||
/* Author: Peter Schwabe, ported from an assembly implementation by Emilia
|
||||
* Käsper
|
||||
* Date: 2009-03-19
|
||||
* Public domain */
|
||||
|
||||
#include "crypto_stream_aes128ctr.h"
|
||||
#include "int128.h"
|
||||
#include "common.h"
|
||||
#include "consts.h"
|
||||
#include "crypto_stream_aes128ctr.h"
|
||||
#include "int128.h"
|
||||
|
||||
int crypto_stream_aes128ctr_afternm(unsigned char *out, unsigned long long len, const unsigned char *nonce, const unsigned char *c)
|
||||
int
|
||||
crypto_stream_aes128ctr_afternm(unsigned char *out, unsigned long long len,
|
||||
const unsigned char *nonce,
|
||||
const unsigned char *c)
|
||||
{
|
||||
aes_uint128_t xmm0;
|
||||
aes_uint128_t xmm1;
|
||||
@@ -26,18 +30,18 @@ int crypto_stream_aes128ctr_afternm(unsigned char *out, unsigned long long len,
|
||||
aes_uint128_t xmm14;
|
||||
aes_uint128_t xmm15;
|
||||
|
||||
aes_uint128_t nonce_stack;
|
||||
aes_uint128_t nonce_stack;
|
||||
unsigned long long lensav;
|
||||
unsigned char bl[128];
|
||||
unsigned char *blp;
|
||||
unsigned char *np;
|
||||
unsigned char b;
|
||||
unsigned char bl[128];
|
||||
unsigned char * blp;
|
||||
unsigned char * np;
|
||||
unsigned char b;
|
||||
|
||||
uint32_t tmp;
|
||||
|
||||
/* Copy nonce on the stack */
|
||||
copy2(&nonce_stack, (const aes_uint128_t *) (nonce + 0));
|
||||
np = (unsigned char *)&nonce_stack;
|
||||
np = (unsigned char *) &nonce_stack;
|
||||
|
||||
enc_block:
|
||||
|
||||
@@ -70,33 +74,52 @@ enc_block:
|
||||
|
||||
bitslice(xmm7, xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0, xmm8)
|
||||
|
||||
aesround( 1, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 2, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 3, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 4, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 5, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 6, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 7, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 8, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 9, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
lastround(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround(1, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9,
|
||||
xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
|
||||
c) aesround(2, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14,
|
||||
xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6,
|
||||
xmm7, c)
|
||||
aesround(3, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8,
|
||||
xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
|
||||
c) aesround(4, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13,
|
||||
xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4,
|
||||
xmm5, xmm6, xmm7, c)
|
||||
aesround(5, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
|
||||
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
|
||||
c) aesround(6, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13,
|
||||
xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4,
|
||||
xmm5, xmm6, xmm7, c)
|
||||
aesround(7, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
|
||||
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14,
|
||||
xmm15, c)
|
||||
aesround(8, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13,
|
||||
xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4,
|
||||
xmm5, xmm6, xmm7, c)
|
||||
aesround(9, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5,
|
||||
xmm6, xmm7, xmm8, xmm9, xmm10, xmm11,
|
||||
xmm12, xmm13, xmm14, xmm15, c)
|
||||
lastround(xmm8, xmm9, xmm10, xmm11, xmm12,
|
||||
xmm13, xmm14, xmm15, xmm0, xmm1, xmm2,
|
||||
xmm3, xmm4, xmm5, xmm6, xmm7, c)
|
||||
|
||||
bitslice(xmm13, xmm10, xmm15, xmm11, xmm14, xmm12, xmm9, xmm8, xmm0)
|
||||
bitslice(xmm13, xmm10, xmm15, xmm11, xmm14,
|
||||
xmm12, xmm9, xmm8, xmm0)
|
||||
|
||||
if(len < 128) goto partial;
|
||||
if(len == 128) goto full;
|
||||
if (len < 128) goto partial;
|
||||
if (len == 128)
|
||||
goto full;
|
||||
|
||||
tmp = LOAD32_BE(np + 12);
|
||||
tmp += 8;
|
||||
STORE32_BE(np + 12, tmp);
|
||||
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 112) = xmm13;
|
||||
|
||||
len -= 128;
|
||||
@@ -113,25 +136,26 @@ partial:
|
||||
tmp += len;
|
||||
STORE32_BE(np + 12, tmp);
|
||||
|
||||
blp = bl;
|
||||
*(aes_uint128_t *)(blp + 0) = xmm8;
|
||||
*(aes_uint128_t *)(blp + 16) = xmm9;
|
||||
*(aes_uint128_t *)(blp + 32) = xmm12;
|
||||
*(aes_uint128_t *)(blp + 48) = xmm14;
|
||||
*(aes_uint128_t *)(blp + 64) = xmm11;
|
||||
*(aes_uint128_t *)(blp + 80) = xmm15;
|
||||
*(aes_uint128_t *)(blp + 96) = xmm10;
|
||||
*(aes_uint128_t *)(blp + 112) = xmm13;
|
||||
blp = bl;
|
||||
*(aes_uint128_t *) (blp + 0) = xmm8;
|
||||
*(aes_uint128_t *) (blp + 16) = xmm9;
|
||||
*(aes_uint128_t *) (blp + 32) = xmm12;
|
||||
*(aes_uint128_t *) (blp + 48) = xmm14;
|
||||
*(aes_uint128_t *) (blp + 64) = xmm11;
|
||||
*(aes_uint128_t *) (blp + 80) = xmm15;
|
||||
*(aes_uint128_t *) (blp + 96) = xmm10;
|
||||
*(aes_uint128_t *) (blp + 112) = xmm13;
|
||||
|
||||
bytes:
|
||||
|
||||
if(lensav == 0) goto end;
|
||||
if (lensav == 0)
|
||||
goto end;
|
||||
|
||||
b = blp[0]; /* clang false positive */
|
||||
*(unsigned char *)(out + 0) = b;
|
||||
b = blp[0]; /* clang false positive */
|
||||
*(unsigned char *) (out + 0) = b;
|
||||
|
||||
blp += 1;
|
||||
out +=1;
|
||||
out += 1;
|
||||
lensav -= 1;
|
||||
|
||||
goto bytes;
|
||||
@@ -142,13 +166,13 @@ full:
|
||||
tmp += 8;
|
||||
STORE32_BE(np + 12, tmp);
|
||||
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 112) = xmm13;
|
||||
|
||||
end:
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
/* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper
|
||||
/* Author: Peter Schwabe, ported from an assembly implementation by Emilia
|
||||
* Käsper
|
||||
* Date: 2009-03-19
|
||||
* Public domain */
|
||||
|
||||
#include "crypto_stream_aes128ctr.h"
|
||||
#include "consts.h"
|
||||
#include "int128.h"
|
||||
#include "common.h"
|
||||
#include "consts.h"
|
||||
#include "crypto_stream_aes128ctr.h"
|
||||
#include "int128.h"
|
||||
|
||||
int crypto_stream_aes128ctr_beforenm(unsigned char *c, const unsigned char *k)
|
||||
int
|
||||
crypto_stream_aes128ctr_beforenm(unsigned char *c, const unsigned char *k)
|
||||
{
|
||||
aes_uint128_t xmm0;
|
||||
aes_uint128_t xmm1;
|
||||
@@ -29,18 +31,43 @@ int crypto_stream_aes128ctr_beforenm(unsigned char *c, const unsigned char *k)
|
||||
|
||||
bitslicekey0(k, c)
|
||||
|
||||
keyexpbs1(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
keyexpbs(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm1);, 2,c)
|
||||
keyexpbs(xmm0, xmm1, xmm3, xmm2, xmm6, xmm5, xmm4, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm6);, 3,c)
|
||||
keyexpbs(xmm0, xmm1, xmm6, xmm4, xmm2, xmm7, xmm3, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm3);, 4,c)
|
||||
keyexpbs1(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9,
|
||||
xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
|
||||
c) keyexpbs(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2, xmm5,
|
||||
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14,
|
||||
xmm15, xor_rcon(&xmm1);
|
||||
, 2, c)
|
||||
keyexpbs(xmm0, xmm1, xmm3, xmm2, xmm6, xmm5, xmm4, xmm7, xmm8, xmm9,
|
||||
xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm6);
|
||||
, 3, c) keyexpbs(xmm0, xmm1, xmm6, xmm4, xmm2, xmm7, xmm3,
|
||||
xmm5, xmm8, xmm9, xmm10, xmm11, xmm12,
|
||||
xmm13, xmm14, xmm15, xor_rcon(&xmm3);
|
||||
, 4, c)
|
||||
|
||||
keyexpbs(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm3);, 5,c)
|
||||
keyexpbs(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm5);, 6,c)
|
||||
keyexpbs(xmm0, xmm1, xmm3, xmm2, xmm6, xmm5, xmm4, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm3);, 7,c)
|
||||
keyexpbs(xmm0, xmm1, xmm6, xmm4, xmm2, xmm7, xmm3, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm7);, 8,c)
|
||||
keyexpbs(
|
||||
xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9,
|
||||
xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm3);
|
||||
, 5, c) keyexpbs(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2,
|
||||
xmm5, xmm8, xmm9, xmm10, xmm11, xmm12,
|
||||
xmm13, xmm14, xmm15, xor_rcon(&xmm5);
|
||||
, 6, c)
|
||||
keyexpbs(xmm0, xmm1, xmm3, xmm2, xmm6, xmm5, xmm4, xmm7,
|
||||
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14,
|
||||
xmm15, xor_rcon(&xmm3);
|
||||
, 7, c)
|
||||
keyexpbs(xmm0, xmm1, xmm6, xmm4, xmm2, xmm7, xmm3, xmm5,
|
||||
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14,
|
||||
xmm15, xor_rcon(&xmm7);
|
||||
, 8, c)
|
||||
|
||||
keyexpbs(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm0); xor_rcon(&xmm1); xor_rcon(&xmm6); xor_rcon(&xmm3);, 9,c)
|
||||
keyexpbs10(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
keyexpbs(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6,
|
||||
xmm7, xmm8, xmm9, xmm10, xmm11, xmm12,
|
||||
xmm13, xmm14, xmm15, xor_rcon(&xmm0);
|
||||
xor_rcon(&xmm1); xor_rcon(&xmm6);
|
||||
xor_rcon(&xmm3);, 9, c)
|
||||
keyexpbs10(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7,
|
||||
xmm2, xmm5, xmm8, xmm9, xmm10, xmm11,
|
||||
xmm12, xmm13, xmm14, xmm15, c)
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,28 @@
|
||||
#include "consts.h"
|
||||
|
||||
const unsigned char ROTB[16] = {0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08};
|
||||
const unsigned char M0[16] = {0x0f, 0x0b, 0x07, 0x03, 0x0e, 0x0a, 0x06, 0x02, 0x0d, 0x09, 0x05, 0x01, 0x0c, 0x08, 0x04, 0x00};
|
||||
const unsigned char EXPB0[16] = {0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x0b, 0x0b, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f};
|
||||
const unsigned char ROTB[16] = {
|
||||
0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08
|
||||
};
|
||||
const unsigned char M0[16] = { 0x0f, 0x0b, 0x07, 0x03, 0x0e, 0x0a, 0x06, 0x02,
|
||||
0x0d, 0x09, 0x05, 0x01, 0x0c, 0x08, 0x04, 0x00 };
|
||||
const unsigned char EXPB0[16] = { 0x03, 0x03, 0x03, 0x03, 0x07, 0x07,
|
||||
0x07, 0x07, 0x0b, 0x0b, 0x0b, 0x0b,
|
||||
0x0f, 0x0f, 0x0f, 0x0f };
|
||||
|
||||
const unsigned char SWAP32[16] = {0x03, 0x02, 0x01, 0x00, 0x07, 0x06, 0x05, 0x04, 0x0b, 0x0a, 0x09, 0x08, 0x0f, 0x0e, 0x0d, 0x0c};
|
||||
const unsigned char M0SWAP[16] = {0x0c, 0x08, 0x04, 0x00, 0x0d, 0x09, 0x05, 0x01, 0x0e, 0x0a, 0x06, 0x02, 0x0f, 0x0b, 0x07, 0x03};
|
||||
const unsigned char SR[16] = {0x01, 0x02, 0x03, 0x00, 0x06, 0x07, 0x04, 0x05, 0x0b, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f};
|
||||
const unsigned char SRM0[16] = {0x0f, 0x0a, 0x05, 0x00, 0x0e, 0x09, 0x04, 0x03, 0x0d, 0x08, 0x07, 0x02, 0x0c, 0x0b, 0x06, 0x01};
|
||||
const unsigned char SWAP32[16] = { 0x03, 0x02, 0x01, 0x00, 0x07, 0x06,
|
||||
0x05, 0x04, 0x0b, 0x0a, 0x09, 0x08,
|
||||
0x0f, 0x0e, 0x0d, 0x0c };
|
||||
const unsigned char M0SWAP[16] = { 0x0c, 0x08, 0x04, 0x00, 0x0d, 0x09,
|
||||
0x05, 0x01, 0x0e, 0x0a, 0x06, 0x02,
|
||||
0x0f, 0x0b, 0x07, 0x03 };
|
||||
const unsigned char SR[16] = { 0x01, 0x02, 0x03, 0x00, 0x06, 0x07, 0x04, 0x05,
|
||||
0x0b, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f };
|
||||
const unsigned char SRM0[16] = {
|
||||
0x0f, 0x0a, 0x05, 0x00, 0x0e, 0x09, 0x04, 0x03,
|
||||
0x0d, 0x08, 0x07, 0x02, 0x0c, 0x0b, 0x06, 0x01
|
||||
};
|
||||
|
||||
const aes_uint128_t BS0 = {{0x5555555555555555ULL, 0x5555555555555555ULL}};
|
||||
const aes_uint128_t BS1 = {{0x3333333333333333ULL, 0x3333333333333333ULL}};
|
||||
const aes_uint128_t BS2 = {{0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL}};
|
||||
const aes_uint128_t BS0 = { { 0x5555555555555555ULL, 0x5555555555555555ULL } };
|
||||
const aes_uint128_t BS1 = { { 0x3333333333333333ULL, 0x3333333333333333ULL } };
|
||||
const aes_uint128_t BS2 = { { 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL } };
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
#include "common.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
# ifdef __GNUC__
|
||||
# pragma GCC diagnostic ignored "-Wlong-long"
|
||||
# endif
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic ignored "-Wlong-long"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef union {
|
||||
@@ -35,13 +35,16 @@ void shufb(aes_uint128_t *r, const unsigned char *l);
|
||||
#define shufd crypto_stream_aes128ctr_portable_shufd
|
||||
void shufd(aes_uint128_t *r, const aes_uint128_t *x, const unsigned int c);
|
||||
|
||||
#define rshift32_littleendian crypto_stream_aes128ctr_portable_rshift32_littleendian
|
||||
#define rshift32_littleendian \
|
||||
crypto_stream_aes128ctr_portable_rshift32_littleendian
|
||||
void rshift32_littleendian(aes_uint128_t *r, const unsigned int n);
|
||||
|
||||
#define rshift64_littleendian crypto_stream_aes128ctr_portable_rshift64_littleendian
|
||||
#define rshift64_littleendian \
|
||||
crypto_stream_aes128ctr_portable_rshift64_littleendian
|
||||
void rshift64_littleendian(aes_uint128_t *r, const unsigned int n);
|
||||
|
||||
#define lshift64_littleendian crypto_stream_aes128ctr_portable_lshift64_littleendian
|
||||
#define lshift64_littleendian \
|
||||
crypto_stream_aes128ctr_portable_lshift64_littleendian
|
||||
void lshift64_littleendian(aes_uint128_t *r, const unsigned int n);
|
||||
|
||||
#define toggle crypto_stream_aes128ctr_portable_toggle
|
||||
|
||||
@@ -1,50 +1,55 @@
|
||||
|
||||
#include "int128.h"
|
||||
#include "common.h"
|
||||
#include "int128.h"
|
||||
|
||||
void xor2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
void
|
||||
xor2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
{
|
||||
r->u64[0] ^= x->u64[0];
|
||||
r->u64[1] ^= x->u64[1];
|
||||
}
|
||||
|
||||
void and2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
void
|
||||
and2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
{
|
||||
r->u64[0] &= x->u64[0];
|
||||
r->u64[1] &= x->u64[1];
|
||||
}
|
||||
|
||||
void or2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
void
|
||||
or2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
{
|
||||
r->u64[0] |= x->u64[0];
|
||||
r->u64[1] |= x->u64[1];
|
||||
}
|
||||
|
||||
void copy2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
void
|
||||
copy2(aes_uint128_t *r, const aes_uint128_t *x)
|
||||
{
|
||||
r->u64[0] = x->u64[0];
|
||||
r->u64[1] = x->u64[1];
|
||||
}
|
||||
|
||||
void shufb(aes_uint128_t *r, const unsigned char *l)
|
||||
void
|
||||
shufb(aes_uint128_t *r, const unsigned char *l)
|
||||
{
|
||||
aes_uint128_t t;
|
||||
uint8_t *ct;
|
||||
uint8_t *cr;
|
||||
uint8_t * ct;
|
||||
uint8_t * cr;
|
||||
|
||||
copy2(&t, r);
|
||||
cr = r->u8;
|
||||
ct = t.u8;
|
||||
cr[0] = ct[l[0]];
|
||||
cr[1] = ct[l[1]];
|
||||
cr[2] = ct[l[2]];
|
||||
cr[3] = ct[l[3]];
|
||||
cr[4] = ct[l[4]];
|
||||
cr[5] = ct[l[5]];
|
||||
cr[6] = ct[l[6]];
|
||||
cr[7] = ct[l[7]];
|
||||
cr[8] = ct[l[8]];
|
||||
cr[9] = ct[l[9]];
|
||||
cr = r->u8;
|
||||
ct = t.u8;
|
||||
cr[0] = ct[l[0]];
|
||||
cr[1] = ct[l[1]];
|
||||
cr[2] = ct[l[2]];
|
||||
cr[3] = ct[l[3]];
|
||||
cr[4] = ct[l[4]];
|
||||
cr[5] = ct[l[5]];
|
||||
cr[6] = ct[l[6]];
|
||||
cr[7] = ct[l[7]];
|
||||
cr[8] = ct[l[8]];
|
||||
cr[9] = ct[l[9]];
|
||||
cr[10] = ct[l[10]];
|
||||
cr[11] = ct[l[11]];
|
||||
cr[12] = ct[l[12]];
|
||||
@@ -53,7 +58,8 @@ void shufb(aes_uint128_t *r, const unsigned char *l)
|
||||
cr[15] = ct[l[15]];
|
||||
}
|
||||
|
||||
void shufd(aes_uint128_t *r, const aes_uint128_t *x, const unsigned int c)
|
||||
void
|
||||
shufd(aes_uint128_t *r, const aes_uint128_t *x, const unsigned int c)
|
||||
{
|
||||
aes_uint128_t t;
|
||||
|
||||
@@ -64,73 +70,79 @@ void shufd(aes_uint128_t *r, const aes_uint128_t *x, const unsigned int c)
|
||||
copy2(r, &t);
|
||||
}
|
||||
|
||||
void rshift32_littleendian(aes_uint128_t *r, const unsigned int n)
|
||||
void
|
||||
rshift32_littleendian(aes_uint128_t *r, const unsigned int n)
|
||||
{
|
||||
unsigned char *rp = (unsigned char *)r;
|
||||
uint32_t t;
|
||||
unsigned char *rp = (unsigned char *) r;
|
||||
uint32_t t;
|
||||
|
||||
t = LOAD32_LE(rp);
|
||||
t >>= n;
|
||||
STORE32_LE(rp, t);
|
||||
t = LOAD32_LE(rp+4);
|
||||
t = LOAD32_LE(rp + 4);
|
||||
t >>= n;
|
||||
STORE32_LE(rp+4, t);
|
||||
t = LOAD32_LE(rp+8);
|
||||
STORE32_LE(rp + 4, t);
|
||||
t = LOAD32_LE(rp + 8);
|
||||
t >>= n;
|
||||
STORE32_LE(rp+8, t);
|
||||
t = LOAD32_LE(rp+12);
|
||||
STORE32_LE(rp + 8, t);
|
||||
t = LOAD32_LE(rp + 12);
|
||||
t >>= n;
|
||||
STORE32_LE(rp+12, t);
|
||||
STORE32_LE(rp + 12, t);
|
||||
}
|
||||
|
||||
void rshift64_littleendian(aes_uint128_t *r, const unsigned int n)
|
||||
void
|
||||
rshift64_littleendian(aes_uint128_t *r, const unsigned int n)
|
||||
{
|
||||
unsigned char *rp = (unsigned char *)r;
|
||||
uint64 t;
|
||||
unsigned char *rp = (unsigned char *) r;
|
||||
uint64 t;
|
||||
|
||||
t = LOAD64_LE(rp);
|
||||
t >>= n;
|
||||
STORE64_LE(rp, t);
|
||||
t = LOAD64_LE(rp+8);
|
||||
t = LOAD64_LE(rp + 8);
|
||||
t >>= n;
|
||||
STORE64_LE(rp+8, t);
|
||||
STORE64_LE(rp + 8, t);
|
||||
}
|
||||
|
||||
void lshift64_littleendian(aes_uint128_t *r, const unsigned int n)
|
||||
void
|
||||
lshift64_littleendian(aes_uint128_t *r, const unsigned int n)
|
||||
{
|
||||
unsigned char *rp = (unsigned char *)r;
|
||||
uint64 t;
|
||||
unsigned char *rp = (unsigned char *) r;
|
||||
uint64 t;
|
||||
|
||||
t = LOAD64_LE(rp);
|
||||
t <<= n;
|
||||
STORE64_LE(rp, t);
|
||||
t = LOAD64_LE(rp+8);
|
||||
t = LOAD64_LE(rp + 8);
|
||||
t <<= n;
|
||||
STORE64_LE(rp+8, t);
|
||||
STORE64_LE(rp + 8, t);
|
||||
}
|
||||
|
||||
void toggle(aes_uint128_t *r)
|
||||
void
|
||||
toggle(aes_uint128_t *r)
|
||||
{
|
||||
r->u64[0] ^= 0xffffffffffffffffULL;
|
||||
r->u64[1] ^= 0xffffffffffffffffULL;
|
||||
}
|
||||
|
||||
void xor_rcon(aes_uint128_t *r)
|
||||
void
|
||||
xor_rcon(aes_uint128_t *r)
|
||||
{
|
||||
unsigned char *rp = (unsigned char *)r;
|
||||
uint32_t t;
|
||||
unsigned char *rp = (unsigned char *) r;
|
||||
uint32_t t;
|
||||
|
||||
t = LOAD32_LE(rp+12);
|
||||
t = LOAD32_LE(rp + 12);
|
||||
t ^= 0xffffffff;
|
||||
STORE32_LE(rp+12, t);
|
||||
STORE32_LE(rp + 12, t);
|
||||
}
|
||||
|
||||
void add_uint32_big(aes_uint128_t *r, uint32_t x)
|
||||
void
|
||||
add_uint32_big(aes_uint128_t *r, uint32_t x)
|
||||
{
|
||||
unsigned char *rp = (unsigned char *)r;
|
||||
uint32_t t;
|
||||
unsigned char *rp = (unsigned char *) r;
|
||||
uint32_t t;
|
||||
|
||||
t = LOAD32_LE(rp+12);
|
||||
t = LOAD32_LE(rp + 12);
|
||||
t += x;
|
||||
STORE32_LE(rp+12, t);
|
||||
STORE32_LE(rp + 12, t);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
|
||||
#include "crypto_stream_aes128ctr.h"
|
||||
|
||||
int crypto_stream_aes128ctr(unsigned char *out,
|
||||
unsigned long long outlen,
|
||||
const unsigned char *n,
|
||||
const unsigned char *k)
|
||||
int
|
||||
crypto_stream_aes128ctr(unsigned char *out, unsigned long long outlen,
|
||||
const unsigned char *n, const unsigned char *k)
|
||||
{
|
||||
unsigned char d[crypto_stream_aes128ctr_BEFORENMBYTES];
|
||||
|
||||
@@ -14,11 +13,10 @@ int crypto_stream_aes128ctr(unsigned char *out,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int crypto_stream_aes128ctr_xor(unsigned char *out,
|
||||
const unsigned char *in,
|
||||
unsigned long long inlen,
|
||||
const unsigned char *n,
|
||||
const unsigned char *k)
|
||||
int
|
||||
crypto_stream_aes128ctr_xor(unsigned char *out, const unsigned char *in,
|
||||
unsigned long long inlen, const unsigned char *n,
|
||||
const unsigned char *k)
|
||||
{
|
||||
unsigned char d[crypto_stream_aes128ctr_BEFORENMBYTES];
|
||||
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
/* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper
|
||||
/* Author: Peter Schwabe, ported from an assembly implementation by Emilia
|
||||
* Käsper
|
||||
* Date: 2009-03-19
|
||||
* Public domain */
|
||||
|
||||
#include "crypto_stream_aes128ctr.h"
|
||||
#include "int128.h"
|
||||
#include "common.h"
|
||||
#include "consts.h"
|
||||
#include "crypto_stream_aes128ctr.h"
|
||||
#include "int128.h"
|
||||
|
||||
int crypto_stream_aes128ctr_xor_afternm(unsigned char *out,
|
||||
const unsigned char *in,
|
||||
unsigned long long len,
|
||||
const unsigned char *nonce,
|
||||
const unsigned char *c)
|
||||
int
|
||||
crypto_stream_aes128ctr_xor_afternm(unsigned char *out, const unsigned char *in,
|
||||
unsigned long long len,
|
||||
const unsigned char *nonce,
|
||||
const unsigned char *c)
|
||||
{
|
||||
aes_uint128_t xmm0;
|
||||
aes_uint128_t xmm1;
|
||||
@@ -30,18 +31,18 @@ int crypto_stream_aes128ctr_xor_afternm(unsigned char *out,
|
||||
aes_uint128_t xmm14;
|
||||
aes_uint128_t xmm15;
|
||||
|
||||
aes_uint128_t nonce_stack;
|
||||
aes_uint128_t nonce_stack;
|
||||
unsigned long long lensav;
|
||||
unsigned char bl[128];
|
||||
unsigned char *blp;
|
||||
unsigned char *np;
|
||||
unsigned char b;
|
||||
unsigned char bl[128];
|
||||
unsigned char * blp;
|
||||
unsigned char * np;
|
||||
unsigned char b;
|
||||
|
||||
uint32_t tmp;
|
||||
|
||||
/* Copy nonce on the stack */
|
||||
copy2(&nonce_stack, (const aes_uint128_t *) (nonce + 0));
|
||||
np = (unsigned char *)&nonce_stack;
|
||||
np = (unsigned char *) &nonce_stack;
|
||||
|
||||
enc_block:
|
||||
|
||||
@@ -74,42 +75,61 @@ enc_block:
|
||||
|
||||
bitslice(xmm7, xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0, xmm8)
|
||||
|
||||
aesround( 1, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 2, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 3, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 4, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 5, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 6, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 7, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
aesround( 8, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround( 9, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c)
|
||||
lastround(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c)
|
||||
aesround(1, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9,
|
||||
xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
|
||||
c) aesround(2, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14,
|
||||
xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6,
|
||||
xmm7, c)
|
||||
aesround(3, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8,
|
||||
xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
|
||||
c) aesround(4, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13,
|
||||
xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4,
|
||||
xmm5, xmm6, xmm7, c)
|
||||
aesround(5, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
|
||||
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
|
||||
c) aesround(6, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13,
|
||||
xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4,
|
||||
xmm5, xmm6, xmm7, c)
|
||||
aesround(7, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
|
||||
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14,
|
||||
xmm15, c)
|
||||
aesround(8, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13,
|
||||
xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4,
|
||||
xmm5, xmm6, xmm7, c)
|
||||
aesround(9, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5,
|
||||
xmm6, xmm7, xmm8, xmm9, xmm10, xmm11,
|
||||
xmm12, xmm13, xmm14, xmm15, c)
|
||||
lastround(xmm8, xmm9, xmm10, xmm11, xmm12,
|
||||
xmm13, xmm14, xmm15, xmm0, xmm1, xmm2,
|
||||
xmm3, xmm4, xmm5, xmm6, xmm7, c)
|
||||
|
||||
bitslice(xmm13, xmm10, xmm15, xmm11, xmm14, xmm12, xmm9, xmm8, xmm0)
|
||||
bitslice(xmm13, xmm10, xmm15, xmm11, xmm14,
|
||||
xmm12, xmm9, xmm8, xmm0)
|
||||
|
||||
if(len < 128) goto partial;
|
||||
if(len == 128) goto full;
|
||||
if (len < 128) goto partial;
|
||||
if (len == 128)
|
||||
goto full;
|
||||
|
||||
tmp = LOAD32_BE(np + 12);
|
||||
tmp += 8;
|
||||
STORE32_BE(np + 12, tmp);
|
||||
|
||||
xor2(&xmm8, (const aes_uint128_t *)(in + 0));
|
||||
xor2(&xmm9, (const aes_uint128_t *)(in + 16));
|
||||
xor2(&xmm12, (const aes_uint128_t *)(in + 32));
|
||||
xor2(&xmm14, (const aes_uint128_t *)(in + 48));
|
||||
xor2(&xmm11, (const aes_uint128_t *)(in + 64));
|
||||
xor2(&xmm15, (const aes_uint128_t *)(in + 80));
|
||||
xor2(&xmm10, (const aes_uint128_t *)(in + 96));
|
||||
xor2(&xmm13, (const aes_uint128_t *)(in + 112));
|
||||
xor2(&xmm8, (const aes_uint128_t *) (in + 0));
|
||||
xor2(&xmm9, (const aes_uint128_t *) (in + 16));
|
||||
xor2(&xmm12, (const aes_uint128_t *) (in + 32));
|
||||
xor2(&xmm14, (const aes_uint128_t *) (in + 48));
|
||||
xor2(&xmm11, (const aes_uint128_t *) (in + 64));
|
||||
xor2(&xmm15, (const aes_uint128_t *) (in + 80));
|
||||
xor2(&xmm10, (const aes_uint128_t *) (in + 96));
|
||||
xor2(&xmm13, (const aes_uint128_t *) (in + 112));
|
||||
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 112) = xmm13;
|
||||
|
||||
len -= 128;
|
||||
@@ -127,27 +147,28 @@ partial:
|
||||
tmp += len;
|
||||
STORE32_BE(np + 12, tmp);
|
||||
|
||||
blp = bl;
|
||||
*(aes_uint128_t *)(blp + 0) = xmm8;
|
||||
*(aes_uint128_t *)(blp + 16) = xmm9;
|
||||
*(aes_uint128_t *)(blp + 32) = xmm12;
|
||||
*(aes_uint128_t *)(blp + 48) = xmm14;
|
||||
*(aes_uint128_t *)(blp + 64) = xmm11;
|
||||
*(aes_uint128_t *)(blp + 80) = xmm15;
|
||||
*(aes_uint128_t *)(blp + 96) = xmm10;
|
||||
*(aes_uint128_t *)(blp + 112) = xmm13;
|
||||
blp = bl;
|
||||
*(aes_uint128_t *) (blp + 0) = xmm8;
|
||||
*(aes_uint128_t *) (blp + 16) = xmm9;
|
||||
*(aes_uint128_t *) (blp + 32) = xmm12;
|
||||
*(aes_uint128_t *) (blp + 48) = xmm14;
|
||||
*(aes_uint128_t *) (blp + 64) = xmm11;
|
||||
*(aes_uint128_t *) (blp + 80) = xmm15;
|
||||
*(aes_uint128_t *) (blp + 96) = xmm10;
|
||||
*(aes_uint128_t *) (blp + 112) = xmm13;
|
||||
|
||||
bytes:
|
||||
|
||||
if(lensav == 0) goto end;
|
||||
if (lensav == 0)
|
||||
goto end;
|
||||
|
||||
b = blp[0]; /* clang false positive */
|
||||
b ^= *(const unsigned char *)(in + 0);
|
||||
*(unsigned char *)(out + 0) = b;
|
||||
b ^= *(const unsigned char *) (in + 0);
|
||||
*(unsigned char *) (out + 0) = b;
|
||||
|
||||
blp += 1;
|
||||
in +=1;
|
||||
out +=1;
|
||||
in += 1;
|
||||
out += 1;
|
||||
lensav -= 1;
|
||||
|
||||
goto bytes;
|
||||
@@ -158,25 +179,24 @@ full:
|
||||
tmp += 8;
|
||||
STORE32_BE(np + 12, tmp);
|
||||
|
||||
xor2(&xmm8, (const aes_uint128_t *)(in + 0));
|
||||
xor2(&xmm9, (const aes_uint128_t *)(in + 16));
|
||||
xor2(&xmm12, (const aes_uint128_t *)(in + 32));
|
||||
xor2(&xmm14, (const aes_uint128_t *)(in + 48));
|
||||
xor2(&xmm11, (const aes_uint128_t *)(in + 64));
|
||||
xor2(&xmm15, (const aes_uint128_t *)(in + 80));
|
||||
xor2(&xmm10, (const aes_uint128_t *)(in + 96));
|
||||
xor2(&xmm13, (const aes_uint128_t *)(in + 112));
|
||||
xor2(&xmm8, (const aes_uint128_t *) (in + 0));
|
||||
xor2(&xmm9, (const aes_uint128_t *) (in + 16));
|
||||
xor2(&xmm12, (const aes_uint128_t *) (in + 32));
|
||||
xor2(&xmm14, (const aes_uint128_t *) (in + 48));
|
||||
xor2(&xmm11, (const aes_uint128_t *) (in + 64));
|
||||
xor2(&xmm15, (const aes_uint128_t *) (in + 80));
|
||||
xor2(&xmm10, (const aes_uint128_t *) (in + 96));
|
||||
xor2(&xmm13, (const aes_uint128_t *) (in + 112));
|
||||
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 0) = xmm8;
|
||||
*(aes_uint128_t *) (out + 16) = xmm9;
|
||||
*(aes_uint128_t *) (out + 32) = xmm12;
|
||||
*(aes_uint128_t *) (out + 48) = xmm14;
|
||||
*(aes_uint128_t *) (out + 64) = xmm11;
|
||||
*(aes_uint128_t *) (out + 80) = xmm15;
|
||||
*(aes_uint128_t *) (out + 96) = xmm10;
|
||||
*(aes_uint128_t *) (out + 112) = xmm13;
|
||||
|
||||
end:
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user