forked from wolfSSL/wolfssl
SHA-3 Thumb2, ARM32 ASM: Add assembly implemention
Add SHA-3 assembly implementation for Thumb2 and ARM32.
This commit is contained in:
@ -269,6 +269,15 @@ else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-sha3-asm.S
|
||||
endif !BUILD_ARMASM_INLINE
|
||||
endif BUILD_ARMASM_NEON
|
||||
if BUILD_ARMASM
|
||||
if BUILD_ARMASM_INLINE
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-sha3-asm_c.c
|
||||
else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-sha3-asm.S
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-sha3-asm.S
|
||||
endif !BUILD_ARMASM_INLINE
|
||||
endif BUILD_ARMASM
|
||||
if !BUILD_X86_ASM
|
||||
if BUILD_INTELASM
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/sha3_asm.S
|
||||
@ -413,6 +422,15 @@ else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-sha3-asm.S
|
||||
endif !BUILD_ARMASM_INLINE
|
||||
endif BUILD_ARMASM_NEON
|
||||
if BUILD_ARMASM
|
||||
if BUILD_ARMASM_INLINE
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-sha3-asm_c.c
|
||||
else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-sha3-asm.S
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-sha3-asm.S
|
||||
endif !BUILD_ARMASM_INLINE
|
||||
endif BUILD_ARMASM
|
||||
if BUILD_INTELASM
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/sha3_asm.S
|
||||
endif
|
||||
@ -748,6 +766,15 @@ else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-sha3-asm.S
|
||||
endif !BUILD_ARMASM_INLINE
|
||||
endif BUILD_ARMASM_NEON
|
||||
if BUILD_ARMASM
|
||||
if BUILD_ARMASM_INLINE
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-sha3-asm_c.c
|
||||
else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/armv8-32-sha3-asm.S
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/arm/thumb2-sha3-asm.S
|
||||
endif !BUILD_ARMASM_INLINE
|
||||
endif BUILD_ARMASM
|
||||
if !BUILD_X86_ASM
|
||||
if BUILD_INTELASM
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/sha3_asm.S
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#ifndef NO_AES
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
@ -5304,7 +5304,7 @@ L_AES_GCM_encrypt_end:
|
||||
.size AES_GCM_encrypt,.-AES_GCM_encrypt
|
||||
#endif /* HAVE_AESGCM */
|
||||
#endif /* !NO_AES */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
|
@ -31,7 +31,7 @@
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#include <stdint.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
@ -41,7 +41,7 @@
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
@ -4786,9 +4786,9 @@ void AES_GCM_encrypt(const unsigned char* in_p, unsigned char* out_p, unsigned l
|
||||
|
||||
#endif /* HAVE_AESGCM */
|
||||
#endif /* !NO_AES */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#endif /* WOLFSSL_ARMASM_INLINE */
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#if defined(HAVE_CURVE25519) || defined(HAVE_ED25519)
|
||||
#if !defined(CURVE25519_SMALL) || !defined(ED25519_SMALL)
|
||||
@ -8771,7 +8771,7 @@ sc_muladd:
|
||||
|
||||
#endif /* !CURVE25519_SMALL || !ED25519_SMALL */
|
||||
#endif /* HAVE_CURVE25519 || HAVE_ED25519 */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
|
@ -31,7 +31,7 @@
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#include <stdint.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
@ -41,7 +41,7 @@
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
@ -8995,9 +8995,9 @@ void sc_muladd(byte* s_p, const byte* a_p, const byte* b_p, const byte* c_p)
|
||||
|
||||
#endif /* !CURVE25519_SMALL || !ED25519_SMALL */
|
||||
#endif /* HAVE_CURVE25519 || HAVE_ED25519 */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#endif /* WOLFSSL_ARMASM_INLINE */
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#ifndef NO_SHA256
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
@ -2865,7 +2865,7 @@ L_SHA256_transform_neon_len_start:
|
||||
.size Transform_Sha256_Len,.-Transform_Sha256_Len
|
||||
#endif /* WOLFSSL_ARMASM_NO_NEON */
|
||||
#endif /* !NO_SHA256 */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
|
@ -31,7 +31,7 @@
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#include <stdint.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
@ -41,7 +41,7 @@
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
@ -2802,9 +2802,9 @@ void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p)
|
||||
|
||||
#endif /* WOLFSSL_ARMASM_NO_NEON */
|
||||
#endif /* !NO_SHA256 */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#endif /* WOLFSSL_ARMASM_INLINE */
|
||||
|
2400
wolfcrypt/src/port/arm/armv8-32-sha3-asm.S
Normal file
2400
wolfcrypt/src/port/arm/armv8-32-sha3-asm.S
Normal file
File diff suppressed because it is too large
Load Diff
2356
wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c
Normal file
2356
wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -30,7 +30,7 @@
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
@ -9366,7 +9366,7 @@ L_SHA512_transform_neon_len_start:
|
||||
.size Transform_Sha512_Len,.-Transform_Sha512_Len
|
||||
#endif /* !WOLFSSL_ARMASM_NO_NEON */
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
|
@ -31,7 +31,7 @@
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
#include <stdint.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
@ -41,7 +41,7 @@
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && defined(__arm__)
|
||||
#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__)
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
@ -9159,9 +9159,9 @@ void Transform_Sha512_Len(wc_Sha512* sha512_p, const byte* data_p, word32 len_p)
|
||||
|
||||
#endif /* !WOLFSSL_ARMASM_NO_NEON */
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
#endif /* !__aarch64__ && !__thumb__ */
|
||||
#endif /* !__aarch64__ && __arm__ && !__thumb__ */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) */
|
||||
#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#endif /* WOLFSSL_ARMASM_INLINE */
|
||||
|
1174
wolfcrypt/src/port/arm/thumb2-sha3-asm.S
Normal file
1174
wolfcrypt/src/port/arm/thumb2-sha3-asm.S
Normal file
File diff suppressed because it is too large
Load Diff
1170
wolfcrypt/src/port/arm/thumb2-sha3-asm_c.c
Normal file
1170
wolfcrypt/src/port/arm/thumb2-sha3-asm_c.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -39,7 +39,7 @@
|
||||
.text
|
||||
.type L_SHA512_transform_len_k, %object
|
||||
.size L_SHA512_transform_len_k, 640
|
||||
.align 4
|
||||
.align 8
|
||||
L_SHA512_transform_len_k:
|
||||
.word 0xd728ae22
|
||||
.word 0x428a2f98
|
||||
|
@ -59,7 +59,8 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(WOLFSSL_ARMASM) || !defined(WOLFSSL_ARMASM_CRYPTO_SHA3)
|
||||
#if !defined(WOLFSSL_ARMASM) || (!defined(__arm__) && \
|
||||
!defined(WOLFSSL_ARMASM_CRYPTO_SHA3))
|
||||
|
||||
#ifdef USE_INTEL_SPEEDUP
|
||||
#include <wolfssl/wolfcrypt/cpuid.h>
|
||||
|
@ -216,7 +216,8 @@ WOLFSSL_LOCAL void sha3_block_bmi2(word64* s);
|
||||
WOLFSSL_LOCAL void sha3_block_avx2(word64* s);
|
||||
WOLFSSL_LOCAL void BlockSha3(word64 *s);
|
||||
#endif
|
||||
#if defined(WOLFSSL_ARMASM) && defined(WOLFSSL_ARMASM_CRYPTO_SHA3)
|
||||
#if defined(WOLFSSL_ARMASM) && (defined(__arm__) || \
|
||||
defined(WOLFSSL_ARMASM_CRYPTO_SHA3))
|
||||
WOLFSSL_LOCAL void BlockSha3(word64 *s);
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user