Skip to content

Commit 47add7e

Browse files
authored
Merge pull request #8020 from SparkiDev/arm32_base_chacha20_poly1305
ARM32 ChaCha20, Poly1305: assembly code
2 parents b96e73f + e4301bc commit 47add7e

21 files changed

Lines changed: 2490 additions & 294 deletions

src/include.am

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,11 @@ if BUILD_ARMASM
164164
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-aes.c
165165
endif BUILD_ARMASM
166166
if BUILD_ARMASM_NEON
167-
if !BUILD_ARMASM_CRYPTO
168167
if BUILD_ARMASM_INLINE
169168
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c
170169
else
171170
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-aes-asm.S
172171
endif !BUILD_ARMASM_INLINE
173-
endif !BUILD_ARMASM_CRYPTO
174172
else
175173
if BUILD_ARMASM
176174
if BUILD_ARMASM_INLINE
@@ -336,13 +334,11 @@ if BUILD_ARMASM
336334
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-aes.c
337335
endif BUILD_ARMASM
338336
if BUILD_ARMASM_NEON
339-
if !BUILD_ARMASM_CRYPTO
340337
if BUILD_ARMASM_INLINE
341338
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c
342339
else
343340
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-aes-asm.S
344341
endif !BUILD_ARMASM_INLINE
345-
endif !BUILD_ARMASM_CRYPTO
346342
else
347343
if BUILD_ARMASM
348344
if BUILD_ARMASM_INLINE
@@ -701,15 +697,13 @@ if BUILD_ARMASM
701697
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-aes.c
702698
endif BUILD_ARMASM
703699
if BUILD_ARMASM_NEON
704-
if !BUILD_ARMASM_CRYPTO
705700
if BUILD_ARMASM_INLINE
706701
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c
707702
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-aes-asm_c.c
708703
else
709704
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-aes-asm.S
710705
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-aes-asm.S
711706
endif !BUILD_ARMASM_INLINE
712-
endif !BUILD_ARMASM_CRYPTO
713707
else
714708
if BUILD_ARMASM
715709
if BUILD_ARMASM_INLINE
@@ -924,8 +918,10 @@ if BUILD_ARMASM
924918
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-poly1305.c
925919
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-poly1305.c
926920
if BUILD_ARMASM_INLINE
921+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-poly1305-asm_c.c
927922
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-poly1305-asm_c.c
928923
else
924+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-poly1305-asm.S
929925
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-poly1305-asm.S
930926
endif !BUILD_ARMASM_INLINE
931927
endif
@@ -999,17 +995,17 @@ endif
999995

1000996
if BUILD_CHACHA
1001997
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/chacha.c
1002-
if BUILD_ARMASM_NEON
1003-
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-chacha.c
1004-
else
1005998
if BUILD_ARMASM
999+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-chacha.c
10061000
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-chacha.c
10071001
if BUILD_ARMASM_INLINE
1002+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c
10081003
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-chacha-asm_c.c
10091004
else
1005+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-chacha-asm.S
10101006
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-chacha-asm.S
10111007
endif !BUILD_ARMASM_INLINE
1012-
endif BUILD_ARMASM
1008+
else
10131009
if BUILD_RISCV_ASM
10141010
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-chacha.c
10151011
endif BUILD_RISCV_ASM
@@ -1018,7 +1014,7 @@ if BUILD_INTELASM
10181014
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/chacha_asm.S
10191015
endif BUILD_INTELASM
10201016
endif !BUILD_X86_ASM
1021-
endif !BUILD_ARMASM_NEON
1017+
endif !BUILD_ARMASM
10221018
if BUILD_POLY1305
10231019
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/chacha20_poly1305.c
10241020
endif BUILD_POLY1305

wolfcrypt/src/chacha.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ Public domain.
7272
#endif /* HAVE_CHACHA */
7373

7474

75-
#if defined(WOLFSSL_ARMASM) && (!defined(WOLFSSL_ARMASM_NO_NEON) || \
76-
defined(__thumb__))
75+
#if defined(WOLFSSL_ARMASM)
7776
/* implementation is located in wolfcrypt/src/port/arm/armv8-chacha.c */
7877

7978
#elif defined(WOLFSSL_RISCV_ASM)

wolfcrypt/src/poly1305.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ extern void poly1305_final_avx2(Poly1305* ctx, byte* mac);
232232
}
233233
#endif/* !WOLFSSL_ARMASM && !WOLFSSL_RISCV_ASM */
234234
/* if not 64 bit then use 32 bit */
235-
#elif !defined(WOLFSSL_ARMASM) || !defined(__thumb__)
235+
#elif !defined(WOLFSSL_ARMASM)
236236

237237
static word32 U8TO32(const byte *p)
238238
{
@@ -269,8 +269,7 @@ static WC_INLINE void u32tole64(const word32 inLe32, byte outLe64[8])
269269
}
270270

271271

272-
#if (!defined(WOLFSSL_ARMASM) || (!defined(__aarch64__) && \
273-
!defined(__thumb__))) && !defined(WOLFSSL_RISCV_ASM)
272+
#if !defined(WOLFSSL_ARMASM) && !defined(WOLFSSL_RISCV_ASM)
274273
/*
275274
This local function operates on a message with a given number of bytes
276275
with a given ctx pointer to a Poly1305 structure.
@@ -789,8 +788,7 @@ int wc_Poly1305Final(Poly1305* ctx, byte* mac)
789788

790789
return 0;
791790
}
792-
#endif /* (!WOLFSSL_ARMASM || (!__aarch64__ && !__thumb__)) &&
793-
* !WOLFSSL_RISCV_ASM */
791+
#endif /* !WOLFSSL_ARMASM && !WOLFSSL_RISCV_ASM */
794792

795793

796794
int wc_Poly1305Update(Poly1305* ctx, const byte* m, word32 bytes)
@@ -885,8 +883,7 @@ int wc_Poly1305Update(Poly1305* ctx, const byte* m, word32 bytes)
885883
/* process full blocks */
886884
if (bytes >= POLY1305_BLOCK_SIZE) {
887885
size_t want = ((size_t)bytes & ~((size_t)POLY1305_BLOCK_SIZE - 1));
888-
#if (!defined(WOLFSSL_ARMASM) || (!defined(__aarch64__) && \
889-
!defined(__thumb__))) && !defined(WOLFSSL_RISCV_ASM)
886+
#if !defined(WOLFSSL_ARMASM) && !defined(WOLFSSL_RISCV_ASM)
890887
int ret;
891888
ret = poly1305_blocks(ctx, m, want);
892889
if (ret != 0)

wolfcrypt/src/port/arm/armv8-32-aes-asm.S

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121

2222
/* Generated using (from wolfssl):
2323
* cd ../scripts
24-
* ruby ./aes/aes.rb arm32 ../wolfssl/wolfcrypt/src/port/arm/armv8-32-aes-asm.S
24+
* ruby ./aes/aes.rb arm32 \
25+
* ../wolfssl/wolfcrypt/src/port/arm/armv8-32-aes-asm.S
2526
*/
2627

2728
#ifdef HAVE_CONFIG_H

0 commit comments

Comments
 (0)