From 55584f4e7ce91f3e1c3b68f900a88d2ad680ae8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Tue, 14 Sep 2021 14:40:35 +0200 Subject: Change CBC-AES interface * cbc.h (cbc_aes128_encrypt, cbc_aes192_encrypt) (cbc_aes256_encrypt): Change interface, take cipher context pointer and iv as separate arguments. Update C and x86_64 implementations and corresponding glue code. --- x86_64/aesni/cbc-aes128-encrypt.asm | 16 ++++++++-------- x86_64/aesni/cbc-aes192-encrypt.asm | 16 ++++++++-------- x86_64/aesni/cbc-aes256-encrypt.asm | 16 ++++++++-------- 3 files changed, 24 insertions(+), 24 deletions(-) (limited to 'x86_64') diff --git a/x86_64/aesni/cbc-aes128-encrypt.asm b/x86_64/aesni/cbc-aes128-encrypt.asm index 7375dadd..c780b35e 100644 --- a/x86_64/aesni/cbc-aes128-encrypt.asm +++ b/x86_64/aesni/cbc-aes128-encrypt.asm @@ -32,9 +32,10 @@ ifelse(` C Input argument define(`CTX', `%rdi') -define(`LENGTH',`%rsi') -define(`DST', `%rdx') -define(`SRC', `%rcx') +define(`IV', `%rsi') +define(`LENGTH',`%rdx') +define(`DST', `%rcx') +define(`SRC', `%r8') define(`KEY0', `%xmm0') define(`KEY1', `%xmm1') @@ -59,7 +60,7 @@ define(`BLOCK', `%xmm12') .text ALIGN(16) PROLOGUE(nettle_cbc_aes128_encrypt) - W64_ENTRY(4, 13) + W64_ENTRY(5, 13) shr $4, LENGTH test LENGTH, LENGTH jz .Lend @@ -75,7 +76,7 @@ PROLOGUE(nettle_cbc_aes128_encrypt) movups 128(CTX), KEY8 movups 144(CTX), KEY9 movups 160(CTX), KEY10 - movups 176(CTX), X C Load IV + movups (IV), X .Lblock_loop: movups (SRC), BLOCK C Cleartext block @@ -99,10 +100,9 @@ PROLOGUE(nettle_cbc_aes128_encrypt) dec LENGTH jnz .Lblock_loop - C Save IV - movups X, 176(CTX) + movups X, (IV) .Lend: - W64_EXIT(4, 13) + W64_EXIT(5, 13) ret EPILOGUE(nettle_cbc_aes128_encrypt) diff --git a/x86_64/aesni/cbc-aes192-encrypt.asm b/x86_64/aesni/cbc-aes192-encrypt.asm index 2438d91f..13825162 100644 --- a/x86_64/aesni/cbc-aes192-encrypt.asm +++ b/x86_64/aesni/cbc-aes192-encrypt.asm @@ -32,9 +32,10 @@ ifelse(` C Input argument define(`CTX', `%rdi') -define(`LENGTH',`%rsi') -define(`DST', `%rdx') -define(`SRC', `%rcx') +define(`IV', `%rsi') +define(`LENGTH',`%rdx') +define(`DST', `%rcx') +define(`SRC', `%r8') define(`KEY0', `%xmm0') define(`KEY1', `%xmm1') @@ -61,7 +62,7 @@ define(`BLOCK', `%xmm14') .text ALIGN(16) PROLOGUE(nettle_cbc_aes192_encrypt) - W64_ENTRY(4, 15) + W64_ENTRY(5, 15) shr $4, LENGTH test LENGTH, LENGTH jz .Lend @@ -79,7 +80,7 @@ PROLOGUE(nettle_cbc_aes192_encrypt) movups 160(CTX), KEY10 movups 176(CTX), KEY11 movups 192(CTX), KEY12 - movups 208(CTX), X C Load IV + movups (IV), X .Lblock_loop: movups (SRC), BLOCK C Cleartext block @@ -105,10 +106,9 @@ PROLOGUE(nettle_cbc_aes192_encrypt) dec LENGTH jnz .Lblock_loop - C Save IV - movups X, 208(CTX) + movups X, (IV) .Lend: - W64_EXIT(4, 15) + W64_EXIT(5, 15) ret EPILOGUE(nettle_cbc_aes192_encrypt) diff --git a/x86_64/aesni/cbc-aes256-encrypt.asm b/x86_64/aesni/cbc-aes256-encrypt.asm index 6b289c70..17428f19 100644 --- a/x86_64/aesni/cbc-aes256-encrypt.asm +++ b/x86_64/aesni/cbc-aes256-encrypt.asm @@ -32,9 +32,10 @@ ifelse(` C Input argument define(`CTX', `%rdi') -define(`LENGTH',`%rsi') -define(`DST', `%rdx') -define(`SRC', `%rcx') +define(`IV', `%rsi') +define(`LENGTH',`%rdx') +define(`DST', `%rcx') +define(`SRC', `%r8') define(`KEY0_7', `%xmm0') define(`KEY1', `%xmm1') @@ -63,7 +64,7 @@ define(`BLOCK', `%xmm15') .text ALIGN(16) PROLOGUE(nettle_cbc_aes256_encrypt) - W64_ENTRY(4, 16) + W64_ENTRY(5, 16) shr $4, LENGTH test LENGTH, LENGTH jz .Lend @@ -82,7 +83,7 @@ PROLOGUE(nettle_cbc_aes256_encrypt) movups 192(CTX), KEY12 movups 208(CTX), KEY13 movups 224(CTX), KEY14 - movups 240(CTX), X C Load IV + movups (IV), X .Lblock_loop: movups (SRC), BLOCK C Cleartext block @@ -112,10 +113,9 @@ PROLOGUE(nettle_cbc_aes256_encrypt) dec LENGTH jnz .Lblock_loop - C Save IV - movups X, 240(CTX) + movups X, (IV) .Lend: - W64_EXIT(4, 16) + W64_EXIT(5, 16) ret EPILOGUE(nettle_cbc_aes256_encrypt) -- cgit v1.2.1