- crypto: KDF Ayla (двойной HMAC, suffix 0x30/31/32; app/dev направления),
AES-256-CBC с непрерывной цепочкой (iv обновляется mbedtls на месте),
Java-паддинг >=1 NUL; mode-latch против misuse (encrypt|decrypt);
zeroize ключей при повторном init; векторы из APK (4 сессии × 4 сообщения,
включая legacy-приём без NUL) — scripts/gen_kdf_vectors.py.
- envelope: pack/unpack {"enc","sign"}; расшифровка (движение цепочки)
ДО проверки подписи; сравнение подписи в константном времени;
extract_seq_no — depth-1 сканер без лимита токенов (OOB после escape
исправлен, регресс-тесты по ASan-репро ревьюера).
- json: Writer (фикс. буфер, стек глубин, escape, ok()=false при
переполнении) + Doc на jsmn (64 токена, unescape, overflow-guard).
- httpc: блокирующий POST/PUT для local_reg (статус 200-599, дренаж,
shutdown перед close).
- third_party/jsmn (MIT, JSMN_STATIC).
- CMake: mbedtls системный (/usr/include/mbedtls3) или FetchContent;
IDF: PRIV_REQUIRES mbedtls.
- CI: 3 конфигурации — gcc-Release, gcc-Debug+ASan/UBSan, clang-Release;
6/6 тестов стабильно; ESP-IDF esp32 build complete.
Ревью под-агентом: 3 круга (OOB-блокер + тестовые флаки закрыты), APPROVED.
29 lines
1.1 KiB
CMake
29 lines
1.1 KiB
CMake
# Тесты ядра. Структура зеркалит src: tests/ayla — протоколная часть,
|
||
# tests/aircon — конверсии/шаблоны (появятся в M3).
|
||
#
|
||
# Тесты собираются с исключениями (фреймворк), сама библиотека — без.
|
||
|
||
include(FetchContent)
|
||
FetchContent_Declare(
|
||
doctest
|
||
GIT_REPOSITORY https://github.com/doctest/doctest.git
|
||
GIT_TAG v2.4.12
|
||
GIT_SHALLOW TRUE
|
||
)
|
||
FetchContent_MakeAvailable(doctest)
|
||
|
||
function(fgl_add_test name)
|
||
add_executable(test_${name} ${ARGN})
|
||
target_compile_features(test_${name} PRIVATE cxx_std_20)
|
||
target_link_libraries(test_${name} PRIVATE fgl-aircon doctest_with_main)
|
||
target_include_directories(test_${name} PRIVATE "${CMAKE_SOURCE_DIR}/src")
|
||
add_test(NAME ${name} COMMAND test_${name})
|
||
endfunction()
|
||
|
||
fgl_add_test(ayla_platform ayla/test_platform.cpp)
|
||
fgl_add_test(ayla_httpd ayla/test_httpd.cpp)
|
||
fgl_add_test(ayla_crypto ayla/test_crypto.cpp)
|
||
fgl_add_test(ayla_envelope ayla/test_envelope.cpp)
|
||
fgl_add_test(ayla_json ayla/test_json.cpp)
|
||
fgl_add_test(ayla_httpc ayla/test_httpc.cpp)
|