diff options
author | Mamone Tarsha <maamoun.tk@googlemail.com> | 2021-08-01 14:23:11 +0300 |
---|---|---|
committer | Mamone Tarsha <maamoun.tk@googlemail.com> | 2021-08-01 14:23:11 +0300 |
commit | f7bc3e1bc2783d6c1bb9eb64e99ff96264e20fcc (patch) | |
tree | 5802a9d093a15dae97b79563fb025f6d5343e58f /arm64/crypto | |
parent | 39d1e2a36bd50bd63e9a81e54e6dadd4c4ef515e (diff) | |
download | nettle-f7bc3e1bc2783d6c1bb9eb64e99ff96264e20fcc.tar.gz |
[AArch64] Move AES round macros to machine.m4
Diffstat (limited to 'arm64/crypto')
-rw-r--r-- | arm64/crypto/aes128-decrypt.asm | 80 | ||||
-rw-r--r-- | arm64/crypto/aes128-encrypt.asm | 80 | ||||
-rw-r--r-- | arm64/crypto/aes192-decrypt.asm | 88 | ||||
-rw-r--r-- | arm64/crypto/aes192-encrypt.asm | 88 | ||||
-rw-r--r-- | arm64/crypto/aes256-decrypt.asm | 96 | ||||
-rw-r--r-- | arm64/crypto/aes256-encrypt.asm | 96 |
6 files changed, 144 insertions, 384 deletions
diff --git a/arm64/crypto/aes128-decrypt.asm b/arm64/crypto/aes128-decrypt.asm index f459bb15..cd970471 100644 --- a/arm64/crypto/aes128-decrypt.asm +++ b/arm64/crypto/aes128-decrypt.asm @@ -57,46 +57,6 @@ define(`K8', `v24') define(`K9', `v25') define(`K10', `v26') -C AES decryption round of 4-blocks -C AESD_ROUND_4B(KEY) -define(`AESD_ROUND_4B', m4_assert_numargs(1)` - aesd S0.16b,$1.16b - aesimc S0.16b,S0.16b - aesd S1.16b,$1.16b - aesimc S1.16b,S1.16b - aesd S2.16b,$1.16b - aesimc S2.16b,S2.16b - aesd S3.16b,$1.16b - aesimc S3.16b,S3.16b -') - -C AES last decryption round of 4-blocks -C AESD_LAST_ROUND_4B(KEY) -define(`AESD_LAST_ROUND_4B', m4_assert_numargs(2)` - aesd S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b - aesd S1.16b,$1.16b - eor S1.16b,S1.16b,$2.16b - aesd S2.16b,$1.16b - eor S2.16b,S2.16b,$2.16b - aesd S3.16b,$1.16b - eor S3.16b,S3.16b,$2.16b -') - -C AES decryption round of 1-block -C AESD_ROUND_1B(KEY) -define(`AESD_ROUND_1B', m4_assert_numargs(1)` - aesd S0.16b,$1.16b - aesimc S0.16b,S0.16b -') - -C AES last decryption round of 1-block -C AESD_LAST_ROUND_1B(KEY) -define(`AESD_LAST_ROUND_1B', m4_assert_numargs(2)` - aesd S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b -') - C void C aes128_decrypt(const struct aes128_ctx *ctx, C size_t length, uint8_t *dst, @@ -114,16 +74,16 @@ PROLOGUE(nettle_aes128_decrypt) L4B_loop: ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64 - AESD_ROUND_4B(K0) - AESD_ROUND_4B(K1) - AESD_ROUND_4B(K2) - AESD_ROUND_4B(K3) - AESD_ROUND_4B(K4) - AESD_ROUND_4B(K5) - AESD_ROUND_4B(K6) - AESD_ROUND_4B(K7) - AESD_ROUND_4B(K8) - AESD_LAST_ROUND_4B(K9,K10) + AESD_ROUND_4B(S0,S1,S2,S3,K0) + AESD_ROUND_4B(S0,S1,S2,S3,K1) + AESD_ROUND_4B(S0,S1,S2,S3,K2) + AESD_ROUND_4B(S0,S1,S2,S3,K3) + AESD_ROUND_4B(S0,S1,S2,S3,K4) + AESD_ROUND_4B(S0,S1,S2,S3,K5) + AESD_ROUND_4B(S0,S1,S2,S3,K6) + AESD_ROUND_4B(S0,S1,S2,S3,K7) + AESD_ROUND_4B(S0,S1,S2,S3,K8) + AESD_LAST_ROUND_4B(S0,S1,S2,S3,K9,K10) st1 {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64 @@ -142,16 +102,16 @@ L1B: L1B_loop: ld1 {S0.16b},[SRC],#16 - AESD_ROUND_1B(K0) - AESD_ROUND_1B(K1) - AESD_ROUND_1B(K2) - AESD_ROUND_1B(K3) - AESD_ROUND_1B(K4) - AESD_ROUND_1B(K5) - AESD_ROUND_1B(K6) - AESD_ROUND_1B(K7) - AESD_ROUND_1B(K8) - AESD_LAST_ROUND_1B(K9,K10) + AESD_ROUND_1B(S0,K0) + AESD_ROUND_1B(S0,K1) + AESD_ROUND_1B(S0,K2) + AESD_ROUND_1B(S0,K3) + AESD_ROUND_1B(S0,K4) + AESD_ROUND_1B(S0,K5) + AESD_ROUND_1B(S0,K6) + AESD_ROUND_1B(S0,K7) + AESD_ROUND_1B(S0,K8) + AESD_LAST_ROUND_1B(S0,K9,K10) st1 {S0.16b},[DST],#16 diff --git a/arm64/crypto/aes128-encrypt.asm b/arm64/crypto/aes128-encrypt.asm index b3c3b9ce..5db609e5 100644 --- a/arm64/crypto/aes128-encrypt.asm +++ b/arm64/crypto/aes128-encrypt.asm @@ -57,46 +57,6 @@ define(`K8', `v24') define(`K9', `v25') define(`K10', `v26') -C AES encryption round of 4-blocks -C AESE_ROUND_4B(KEY) -define(`AESE_ROUND_4B', m4_assert_numargs(1)` - aese S0.16b,$1.16b - aesmc S0.16b,S0.16b - aese S1.16b,$1.16b - aesmc S1.16b,S1.16b - aese S2.16b,$1.16b - aesmc S2.16b,S2.16b - aese S3.16b,$1.16b - aesmc S3.16b,S3.16b -') - -C AES last encryption round of 4-blocks -C AESE_LAST_ROUND_4B(KEY) -define(`AESE_LAST_ROUND_4B', m4_assert_numargs(2)` - aese S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b - aese S1.16b,$1.16b - eor S1.16b,S1.16b,$2.16b - aese S2.16b,$1.16b - eor S2.16b,S2.16b,$2.16b - aese S3.16b,$1.16b - eor S3.16b,S3.16b,$2.16b -') - -C AES encryption round of 1-block -C AESE_ROUND_1B(KEY) -define(`AESE_ROUND_1B', m4_assert_numargs(1)` - aese S0.16b,$1.16b - aesmc S0.16b,S0.16b -') - -C AES last encryption round of 1-block -C AESE_LAST_ROUND_1B(KEY) -define(`AESE_LAST_ROUND_1B', m4_assert_numargs(2)` - aese S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b -') - C void C aes128_encrypt(const struct aes128_ctx *ctx, C size_t length, uint8_t *dst, @@ -114,16 +74,16 @@ PROLOGUE(nettle_aes128_encrypt) L4B_loop: ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64 - AESE_ROUND_4B(K0) - AESE_ROUND_4B(K1) - AESE_ROUND_4B(K2) - AESE_ROUND_4B(K3) - AESE_ROUND_4B(K4) - AESE_ROUND_4B(K5) - AESE_ROUND_4B(K6) - AESE_ROUND_4B(K7) - AESE_ROUND_4B(K8) - AESE_LAST_ROUND_4B(K9,K10) + AESE_ROUND_4B(S0,S1,S2,S3,K0) + AESE_ROUND_4B(S0,S1,S2,S3,K1) + AESE_ROUND_4B(S0,S1,S2,S3,K2) + AESE_ROUND_4B(S0,S1,S2,S3,K3) + AESE_ROUND_4B(S0,S1,S2,S3,K4) + AESE_ROUND_4B(S0,S1,S2,S3,K5) + AESE_ROUND_4B(S0,S1,S2,S3,K6) + AESE_ROUND_4B(S0,S1,S2,S3,K7) + AESE_ROUND_4B(S0,S1,S2,S3,K8) + AESE_LAST_ROUND_4B(S0,S1,S2,S3,K9,K10) st1 {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64 @@ -142,16 +102,16 @@ L1B: L1B_loop: ld1 {S0.16b},[SRC],#16 - AESE_ROUND_1B(K0) - AESE_ROUND_1B(K1) - AESE_ROUND_1B(K2) - AESE_ROUND_1B(K3) - AESE_ROUND_1B(K4) - AESE_ROUND_1B(K5) - AESE_ROUND_1B(K6) - AESE_ROUND_1B(K7) - AESE_ROUND_1B(K8) - AESE_LAST_ROUND_1B(K9,K10) + AESE_ROUND_1B(S0,K0) + AESE_ROUND_1B(S0,K1) + AESE_ROUND_1B(S0,K2) + AESE_ROUND_1B(S0,K3) + AESE_ROUND_1B(S0,K4) + AESE_ROUND_1B(S0,K5) + AESE_ROUND_1B(S0,K6) + AESE_ROUND_1B(S0,K7) + AESE_ROUND_1B(S0,K8) + AESE_LAST_ROUND_1B(S0,K9,K10) st1 {S0.16b},[DST],#16 diff --git a/arm64/crypto/aes192-decrypt.asm b/arm64/crypto/aes192-decrypt.asm index 8d6bca79..87a4ca73 100644 --- a/arm64/crypto/aes192-decrypt.asm +++ b/arm64/crypto/aes192-decrypt.asm @@ -59,46 +59,6 @@ define(`K10', `v26') define(`K11', `v27') define(`K12', `v28') -C AES decryption round of 4-blocks -C AESD_ROUND_4B(KEY) -define(`AESD_ROUND_4B', m4_assert_numargs(1)` - aesd S0.16b,$1.16b - aesimc S0.16b,S0.16b - aesd S1.16b,$1.16b - aesimc S1.16b,S1.16b - aesd S2.16b,$1.16b - aesimc S2.16b,S2.16b - aesd S3.16b,$1.16b - aesimc S3.16b,S3.16b -') - -C AES last decryption round of 4-blocks -C AESD_LAST_ROUND_4B(KEY) -define(`AESD_LAST_ROUND_4B', m4_assert_numargs(2)` - aesd S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b - aesd S1.16b,$1.16b - eor S1.16b,S1.16b,$2.16b - aesd S2.16b,$1.16b - eor S2.16b,S2.16b,$2.16b - aesd S3.16b,$1.16b - eor S3.16b,S3.16b,$2.16b -') - -C AES decryption round of 1-block -C AESD_ROUND_1B(KEY) -define(`AESD_ROUND_1B', m4_assert_numargs(1)` - aesd S0.16b,$1.16b - aesimc S0.16b,S0.16b -') - -C AES last decryption round of 1-block -C AESD_LAST_ROUND_1B(KEY) -define(`AESD_LAST_ROUND_1B', m4_assert_numargs(2)` - aesd S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b -') - C void C aes192_decrypt(const struct aes192_ctx *ctx, C size_t length, uint8_t *dst, @@ -117,18 +77,18 @@ PROLOGUE(nettle_aes192_decrypt) L4B_loop: ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64 - AESD_ROUND_4B(K0) - AESD_ROUND_4B(K1) - AESD_ROUND_4B(K2) - AESD_ROUND_4B(K3) - AESD_ROUND_4B(K4) - AESD_ROUND_4B(K5) - AESD_ROUND_4B(K6) - AESD_ROUND_4B(K7) - AESD_ROUND_4B(K8) - AESD_ROUND_4B(K9) - AESD_ROUND_4B(K10) - AESD_LAST_ROUND_4B(K11,K12) + AESD_ROUND_4B(S0,S1,S2,S3,K0) + AESD_ROUND_4B(S0,S1,S2,S3,K1) + AESD_ROUND_4B(S0,S1,S2,S3,K2) + AESD_ROUND_4B(S0,S1,S2,S3,K3) + AESD_ROUND_4B(S0,S1,S2,S3,K4) + AESD_ROUND_4B(S0,S1,S2,S3,K5) + AESD_ROUND_4B(S0,S1,S2,S3,K6) + AESD_ROUND_4B(S0,S1,S2,S3,K7) + AESD_ROUND_4B(S0,S1,S2,S3,K8) + AESD_ROUND_4B(S0,S1,S2,S3,K9) + AESD_ROUND_4B(S0,S1,S2,S3,K10) + AESD_LAST_ROUND_4B(S0,S1,S2,S3,K11,K12) st1 {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64 @@ -148,18 +108,18 @@ L1B: L1B_loop: ld1 {S0.16b},[SRC],#16 - AESD_ROUND_1B(K0) - AESD_ROUND_1B(K1) - AESD_ROUND_1B(K2) - AESD_ROUND_1B(K3) - AESD_ROUND_1B(K4) - AESD_ROUND_1B(K5) - AESD_ROUND_1B(K6) - AESD_ROUND_1B(K7) - AESD_ROUND_1B(K8) - AESD_ROUND_1B(K9) - AESD_ROUND_1B(K10) - AESD_LAST_ROUND_1B(K11,K12) + AESD_ROUND_1B(S0,K0) + AESD_ROUND_1B(S0,K1) + AESD_ROUND_1B(S0,K2) + AESD_ROUND_1B(S0,K3) + AESD_ROUND_1B(S0,K4) + AESD_ROUND_1B(S0,K5) + AESD_ROUND_1B(S0,K6) + AESD_ROUND_1B(S0,K7) + AESD_ROUND_1B(S0,K8) + AESD_ROUND_1B(S0,K9) + AESD_ROUND_1B(S0,K10) + AESD_LAST_ROUND_1B(S0,K11,K12) st1 {S0.16b},[DST],#16 diff --git a/arm64/crypto/aes192-encrypt.asm b/arm64/crypto/aes192-encrypt.asm index 5a71786d..ad6be9b5 100644 --- a/arm64/crypto/aes192-encrypt.asm +++ b/arm64/crypto/aes192-encrypt.asm @@ -59,46 +59,6 @@ define(`K10', `v26') define(`K11', `v27') define(`K12', `v28') -C AES encryption round of 4-blocks -C AESE_ROUND_4B(KEY) -define(`AESE_ROUND_4B', m4_assert_numargs(1)` - aese S0.16b,$1.16b - aesmc S0.16b,S0.16b - aese S1.16b,$1.16b - aesmc S1.16b,S1.16b - aese S2.16b,$1.16b - aesmc S2.16b,S2.16b - aese S3.16b,$1.16b - aesmc S3.16b,S3.16b -') - -C AES last encryption round of 4-blocks -C AESE_LAST_ROUND_4B(KEY) -define(`AESE_LAST_ROUND_4B', m4_assert_numargs(2)` - aese S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b - aese S1.16b,$1.16b - eor S1.16b,S1.16b,$2.16b - aese S2.16b,$1.16b - eor S2.16b,S2.16b,$2.16b - aese S3.16b,$1.16b - eor S3.16b,S3.16b,$2.16b -') - -C AES encryption round of 1-block -C AESE_ROUND_1B(KEY) -define(`AESE_ROUND_1B', m4_assert_numargs(1)` - aese S0.16b,$1.16b - aesmc S0.16b,S0.16b -') - -C AES last encryption round of 1-block -C AESE_LAST_ROUND_1B(KEY) -define(`AESE_LAST_ROUND_1B', m4_assert_numargs(2)` - aese S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b -') - C void C aes192_encrypt(const struct aes192_ctx *ctx, C size_t length, uint8_t *dst, @@ -117,18 +77,18 @@ PROLOGUE(nettle_aes192_encrypt) L4B_loop: ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64 - AESE_ROUND_4B(K0) - AESE_ROUND_4B(K1) - AESE_ROUND_4B(K2) - AESE_ROUND_4B(K3) - AESE_ROUND_4B(K4) - AESE_ROUND_4B(K5) - AESE_ROUND_4B(K6) - AESE_ROUND_4B(K7) - AESE_ROUND_4B(K8) - AESE_ROUND_4B(K9) - AESE_ROUND_4B(K10) - AESE_LAST_ROUND_4B(K11,K12) + AESE_ROUND_4B(S0,S1,S2,S3,K0) + AESE_ROUND_4B(S0,S1,S2,S3,K1) + AESE_ROUND_4B(S0,S1,S2,S3,K2) + AESE_ROUND_4B(S0,S1,S2,S3,K3) + AESE_ROUND_4B(S0,S1,S2,S3,K4) + AESE_ROUND_4B(S0,S1,S2,S3,K5) + AESE_ROUND_4B(S0,S1,S2,S3,K6) + AESE_ROUND_4B(S0,S1,S2,S3,K7) + AESE_ROUND_4B(S0,S1,S2,S3,K8) + AESE_ROUND_4B(S0,S1,S2,S3,K9) + AESE_ROUND_4B(S0,S1,S2,S3,K10) + AESE_LAST_ROUND_4B(S0,S1,S2,S3,K11,K12) st1 {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64 @@ -148,18 +108,18 @@ L1B: L1B_loop: ld1 {S0.16b},[SRC],#16 - AESE_ROUND_1B(K0) - AESE_ROUND_1B(K1) - AESE_ROUND_1B(K2) - AESE_ROUND_1B(K3) - AESE_ROUND_1B(K4) - AESE_ROUND_1B(K5) - AESE_ROUND_1B(K6) - AESE_ROUND_1B(K7) - AESE_ROUND_1B(K8) - AESE_ROUND_1B(K9) - AESE_ROUND_1B(K10) - AESE_LAST_ROUND_1B(K11,K12) + AESE_ROUND_1B(S0,K0) + AESE_ROUND_1B(S0,K1) + AESE_ROUND_1B(S0,K2) + AESE_ROUND_1B(S0,K3) + AESE_ROUND_1B(S0,K4) + AESE_ROUND_1B(S0,K5) + AESE_ROUND_1B(S0,K6) + AESE_ROUND_1B(S0,K7) + AESE_ROUND_1B(S0,K8) + AESE_ROUND_1B(S0,K9) + AESE_ROUND_1B(S0,K10) + AESE_LAST_ROUND_1B(S0,K11,K12) st1 {S0.16b},[DST],#16 diff --git a/arm64/crypto/aes256-decrypt.asm b/arm64/crypto/aes256-decrypt.asm index 6191d7b6..758bb143 100644 --- a/arm64/crypto/aes256-decrypt.asm +++ b/arm64/crypto/aes256-decrypt.asm @@ -61,46 +61,6 @@ define(`K12', `v28') define(`K13', `v29') define(`K14', `v30') -C AES decryption round of 4-blocks -C AESD_ROUND_4B(KEY) -define(`AESD_ROUND_4B', m4_assert_numargs(1)` - aesd S0.16b,$1.16b - aesimc S0.16b,S0.16b - aesd S1.16b,$1.16b - aesimc S1.16b,S1.16b - aesd S2.16b,$1.16b - aesimc S2.16b,S2.16b - aesd S3.16b,$1.16b - aesimc S3.16b,S3.16b -') - -C AES last decryption round of 4-blocks -C AESD_LAST_ROUND_4B(KEY) -define(`AESD_LAST_ROUND_4B', m4_assert_numargs(2)` - aesd S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b - aesd S1.16b,$1.16b - eor S1.16b,S1.16b,$2.16b - aesd S2.16b,$1.16b - eor S2.16b,S2.16b,$2.16b - aesd S3.16b,$1.16b - eor S3.16b,S3.16b,$2.16b -') - -C AES decryption round of 1-block -C AESD_ROUND_1B(KEY) -define(`AESD_ROUND_1B', m4_assert_numargs(1)` - aesd S0.16b,$1.16b - aesimc S0.16b,S0.16b -') - -C AES last decryption round of 1-block -C AESD_LAST_ROUND_1B(KEY) -define(`AESD_LAST_ROUND_1B', m4_assert_numargs(2)` - aesd S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b -') - C void C aes256_decrypt(const struct aes256_ctx *ctx, C size_t length, uint8_t *dst, @@ -119,20 +79,20 @@ PROLOGUE(nettle_aes256_decrypt) L4B_loop: ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64 - AESD_ROUND_4B(K0) - AESD_ROUND_4B(K1) - AESD_ROUND_4B(K2) - AESD_ROUND_4B(K3) - AESD_ROUND_4B(K4) - AESD_ROUND_4B(K5) - AESD_ROUND_4B(K6) - AESD_ROUND_4B(K7) - AESD_ROUND_4B(K8) - AESD_ROUND_4B(K9) - AESD_ROUND_4B(K10) - AESD_ROUND_4B(K11) - AESD_ROUND_4B(K12) - AESD_LAST_ROUND_4B(K13,K14) + AESD_ROUND_4B(S0,S1,S2,S3,K0) + AESD_ROUND_4B(S0,S1,S2,S3,K1) + AESD_ROUND_4B(S0,S1,S2,S3,K2) + AESD_ROUND_4B(S0,S1,S2,S3,K3) + AESD_ROUND_4B(S0,S1,S2,S3,K4) + AESD_ROUND_4B(S0,S1,S2,S3,K5) + AESD_ROUND_4B(S0,S1,S2,S3,K6) + AESD_ROUND_4B(S0,S1,S2,S3,K7) + AESD_ROUND_4B(S0,S1,S2,S3,K8) + AESD_ROUND_4B(S0,S1,S2,S3,K9) + AESD_ROUND_4B(S0,S1,S2,S3,K10) + AESD_ROUND_4B(S0,S1,S2,S3,K11) + AESD_ROUND_4B(S0,S1,S2,S3,K12) + AESD_LAST_ROUND_4B(S0,S1,S2,S3,K13,K14) st1 {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64 @@ -152,20 +112,20 @@ L1B: L1B_loop: ld1 {S0.16b},[SRC],#16 - AESD_ROUND_1B(K0) - AESD_ROUND_1B(K1) - AESD_ROUND_1B(K2) - AESD_ROUND_1B(K3) - AESD_ROUND_1B(K4) - AESD_ROUND_1B(K5) - AESD_ROUND_1B(K6) - AESD_ROUND_1B(K7) - AESD_ROUND_1B(K8) - AESD_ROUND_1B(K9) - AESD_ROUND_1B(K10) - AESD_ROUND_1B(K11) - AESD_ROUND_1B(K12) - AESD_LAST_ROUND_1B(K13,K14) + AESD_ROUND_1B(S0,K0) + AESD_ROUND_1B(S0,K1) + AESD_ROUND_1B(S0,K2) + AESD_ROUND_1B(S0,K3) + AESD_ROUND_1B(S0,K4) + AESD_ROUND_1B(S0,K5) + AESD_ROUND_1B(S0,K6) + AESD_ROUND_1B(S0,K7) + AESD_ROUND_1B(S0,K8) + AESD_ROUND_1B(S0,K9) + AESD_ROUND_1B(S0,K10) + AESD_ROUND_1B(S0,K11) + AESD_ROUND_1B(S0,K12) + AESD_LAST_ROUND_1B(S0,K13,K14) st1 {S0.16b},[DST],#16 diff --git a/arm64/crypto/aes256-encrypt.asm b/arm64/crypto/aes256-encrypt.asm index 4a53c0c1..c02cb679 100644 --- a/arm64/crypto/aes256-encrypt.asm +++ b/arm64/crypto/aes256-encrypt.asm @@ -61,46 +61,6 @@ define(`K12', `v28') define(`K13', `v29') define(`K14', `v30') -C AES encryption round of 4-blocks -C AESE_ROUND_4B(KEY) -define(`AESE_ROUND_4B', m4_assert_numargs(1)` - aese S0.16b,$1.16b - aesmc S0.16b,S0.16b - aese S1.16b,$1.16b - aesmc S1.16b,S1.16b - aese S2.16b,$1.16b - aesmc S2.16b,S2.16b - aese S3.16b,$1.16b - aesmc S3.16b,S3.16b -') - -C AES last encryption round of 4-blocks -C AESE_LAST_ROUND_4B(KEY) -define(`AESE_LAST_ROUND_4B', m4_assert_numargs(2)` - aese S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b - aese S1.16b,$1.16b - eor S1.16b,S1.16b,$2.16b - aese S2.16b,$1.16b - eor S2.16b,S2.16b,$2.16b - aese S3.16b,$1.16b - eor S3.16b,S3.16b,$2.16b -') - -C AES encryption round of 1-block -C AESE_ROUND_1B(KEY) -define(`AESE_ROUND_1B', m4_assert_numargs(1)` - aese S0.16b,$1.16b - aesmc S0.16b,S0.16b -') - -C AES last encryption round of 1-block -C AESE_LAST_ROUND_1B(KEY) -define(`AESE_LAST_ROUND_1B', m4_assert_numargs(2)` - aese S0.16b,$1.16b - eor S0.16b,S0.16b,$2.16b -') - C void C aes256_encrypt(const struct aes256_ctx *ctx, C size_t length, uint8_t *dst, @@ -119,20 +79,20 @@ PROLOGUE(nettle_aes256_encrypt) L4B_loop: ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64 - AESE_ROUND_4B(K0) - AESE_ROUND_4B(K1) - AESE_ROUND_4B(K2) - AESE_ROUND_4B(K3) - AESE_ROUND_4B(K4) - AESE_ROUND_4B(K5) - AESE_ROUND_4B(K6) - AESE_ROUND_4B(K7) - AESE_ROUND_4B(K8) - AESE_ROUND_4B(K9) - AESE_ROUND_4B(K10) - AESE_ROUND_4B(K11) - AESE_ROUND_4B(K12) - AESE_LAST_ROUND_4B(K13,K14) + AESE_ROUND_4B(S0,S1,S2,S3,K0) + AESE_ROUND_4B(S0,S1,S2,S3,K1) + AESE_ROUND_4B(S0,S1,S2,S3,K2) + AESE_ROUND_4B(S0,S1,S2,S3,K3) + AESE_ROUND_4B(S0,S1,S2,S3,K4) + AESE_ROUND_4B(S0,S1,S2,S3,K5) + AESE_ROUND_4B(S0,S1,S2,S3,K6) + AESE_ROUND_4B(S0,S1,S2,S3,K7) + AESE_ROUND_4B(S0,S1,S2,S3,K8) + AESE_ROUND_4B(S0,S1,S2,S3,K9) + AESE_ROUND_4B(S0,S1,S2,S3,K10) + AESE_ROUND_4B(S0,S1,S2,S3,K11) + AESE_ROUND_4B(S0,S1,S2,S3,K12) + AESE_LAST_ROUND_4B(S0,S1,S2,S3,K13,K14) st1 {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64 @@ -152,20 +112,20 @@ L1B: L1B_loop: ld1 {S0.16b},[SRC],#16 - AESE_ROUND_1B(K0) - AESE_ROUND_1B(K1) - AESE_ROUND_1B(K2) - AESE_ROUND_1B(K3) - AESE_ROUND_1B(K4) - AESE_ROUND_1B(K5) - AESE_ROUND_1B(K6) - AESE_ROUND_1B(K7) - AESE_ROUND_1B(K8) - AESE_ROUND_1B(K9) - AESE_ROUND_1B(K10) - AESE_ROUND_1B(K11) - AESE_ROUND_1B(K12) - AESE_LAST_ROUND_1B(K13,K14) + AESE_ROUND_1B(S0,K0) + AESE_ROUND_1B(S0,K1) + AESE_ROUND_1B(S0,K2) + AESE_ROUND_1B(S0,K3) + AESE_ROUND_1B(S0,K4) + AESE_ROUND_1B(S0,K5) + AESE_ROUND_1B(S0,K6) + AESE_ROUND_1B(S0,K7) + AESE_ROUND_1B(S0,K8) + AESE_ROUND_1B(S0,K9) + AESE_ROUND_1B(S0,K10) + AESE_ROUND_1B(S0,K11) + AESE_ROUND_1B(S0,K12) + AESE_LAST_ROUND_1B(S0,K13,K14) st1 {S0.16b},[DST],#16 |