ARM backends: fix round key byte-swap on little-endian (vrev32q_u8), rewrite decrypt to pre-process middle keys with InvMixColumns, fix GHASH PMULL reflect and reduction ordering. API: add nonce/IV-generating convenience overloads for CTR, CBC, and GCM (library generates and prepends nonce, appends tag). Add C API for IV/nonce generation. Rename error codes (TINYAES_OK, Result::Ok, Result::AuthenticationFailed, etc.). Build: add MinGW GCC AVX-512 debug alignment fix, harden bench/fuzz CMake targets (warnings-as-errors, linker hardening), align with tinysha CMake conventions. Add README. Tests: expand coverage for nonce-generating API overloads, add NIST GCM test vectors, improve fuzz target differential testing.
36 lines
1.2 KiB
CMake
36 lines
1.2 KiB
CMake
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
return()
|
|
endif()
|
|
|
|
# libFuzzer is only reliably available on Linux Clang.
|
|
# macOS: Apple Clang lacks the runtime; Homebrew LLVM has ABI mismatches
|
|
# with macOS system libc++. Windows: CRT mismatches in Debug/Release.
|
|
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
return()
|
|
endif()
|
|
|
|
set(FUZZ_TARGETS fuzz_ecb fuzz_cbc fuzz_ctr fuzz_gcm)
|
|
|
|
foreach(target ${FUZZ_TARGETS})
|
|
add_executable(${target} ${target}.cpp)
|
|
target_link_libraries(${target} PRIVATE tinyaes)
|
|
target_include_directories(${target} PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
|
)
|
|
set_target_properties(${target} PROPERTIES
|
|
CXX_STANDARD 17
|
|
CXX_STANDARD_REQUIRED ON
|
|
CXX_EXTENSIONS OFF
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/fuzz
|
|
)
|
|
target_compile_options(${target} PRIVATE
|
|
-Wall -Wextra -Wpedantic -Werror
|
|
-fsanitize=fuzzer,address
|
|
)
|
|
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -fsanitize=fuzzer,address")
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS
|
|
" -Wl,-z,relro,-z,now -Wl,-z,noexecstack")
|
|
endif()
|
|
endforeach()
|