Add SM3 ASM

This commit is contained in:
Zhi Guan
2022-10-15 16:42:35 +08:00
parent a9c5e99192
commit a80ead7e04
2 changed files with 12 additions and 4 deletions

View File

@@ -8,7 +8,6 @@ option(BUILD_SHARED_LIBS "Build using shared libraries" OFF)
include_directories(include)
#enable_language(ASM)
set(src
@@ -76,6 +75,14 @@ set(src
src/tls13.c
)
option(ENABLE_SM3_AVX_BMI2 "Enable SM3 AVX+BMI2 assembly implementation" OFF)
if (ENABLE_SM3_AVX_BMI2)
enable_language(ASM)
list(APPEND src src/sm3_avx_bmi2.s)
endif()
if (WIN32)
list(APPEND src src/u_time.c)
list(APPEND src src/rand_win.c)
@@ -247,4 +254,4 @@ if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
target_compile_options(gmssl PRIVATE /wd4996)
target_compile_options(gmssl-bin PRIVATE /wd4996)
# target_compile_options(gmssl PRIVATE /wd4996)
endif()
endif()

View File

@@ -152,6 +152,7 @@ static uint32_t K[64] = {
*/
};
#ifndef ENABLE_SM3_AVX_BMI2
void sm3_compress_blocks(uint32_t digest[8], const uint8_t *data, size_t blocks)
{
uint32_t A;
@@ -293,7 +294,7 @@ void sm3_compress_blocks(uint32_t digest[8], const uint8_t *data, size_t blocks)
data += 64;
}
}
#endif
void sm3_init(SM3_CTX *ctx)
{
@@ -311,7 +312,7 @@ void sm3_init(SM3_CTX *ctx)
void sm3_update(SM3_CTX *ctx, const uint8_t *data, size_t data_len)
{
size_t blocks;
ctx->num &= 0x3f;
if (ctx->num) {
size_t left = SM3_BLOCK_SIZE - ctx->num;