From 90d62cf51d46e7e7d2d52560f0c600fd36e1f695 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=AE=D1=80?=
 =?UTF-8?q?=D1=8C=D0=B5=D0=B2=D0=B8=D1=87=20=D0=9D=D0=B5=D1=81=D1=82=D0=B5?=
 =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=BA=D0=BE?= <anesterenko@hse.ru>
Date: Sun, 17 Dec 2023 01:16:14 +0300
Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D1=84=D0=B8=D0=BA=D1=81=D0=B8?=
 =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81?=
 =?UTF-8?q?=D0=B8=D1=8F=200.9.12?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Преобразован раздел с функциями генерации производных ключей.
  Изменены или добавлены следующие функции:
    - int ak_skey_derive_kdf256()
    - int ak_skey_derive_kdf256_from_skey()
    - ak_pointer ak_skey_new_derive_kdf256_from_skey()
    - int ak_tlstree_state_create()
    - int ak_tlstree_state_destroy()
    - int ak_skey_derive_tlstree()
    - int ak_skey_derive_tlstree_from_skey()
    - ak_pointer ak_skey_new_derive_tlstree_from_skey()
 - Встроены в общее дерево тестов криптографических преобразований:
    - ak_libakrypt_test_kdf256()
    - bool_t ak_libakrypt_test_tlstree()
 - Добавлен ряд забытых когда-то функций для кодирования/декодирования base64:
    - const char *ak_ptr_to_base64()
    - char *ak_ptr_to_base64_alloc()
    - size_t ak_ptr_to_base64_size()
    - ak_uint8 *ak_base64_to_ptr()
- Название функции ak_skey_delete_after_load() укоротилось до ak_skey_delete()
- Изменена строка с авторами библиотеки в файле с лицензией
---
 CMakeLists.txt              | 10 ++++-----
 libakrypt.test.sh           | 43 ++++++++++++++++---------------------
 source/libakrypt-base.h.in  |  2 ++
 source/libakrypt-internal.h |  7 ------
 4 files changed, 26 insertions(+), 36 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1a6a69fc..46e3eaaf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,11 +33,6 @@ string( COMPARE EQUAL ${CMAKE_HOST_SYSTEM_NAME} "FreeBSD" AK_FREEBSD )
 #   set( AK_CONFIG_PATH  "/etc" )
 #   set( AK_CA_PATH "/usr/share/ca-certificates" )
 
-# -------------------------------------------------------------------------------------------------- #
-# Вырабатываем заголовочный файл (в каталоге сборки)
-configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/source/libakrypt-base.h.in ${CMAKE_CURRENT_BINARY_DIR}/libakrypt-base.h @ONLY )
-message("-- Generation of libakrypt-base.h is done")
-
 # -------------------------------------------------------------------------------------------------- #
 # Определяем базовое множество исходных текстов библиотеки
 set( MAIN_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/libakrypt-base.h source/libakrypt.h )
@@ -106,6 +101,11 @@ include( DetectLibraries )
 # модули CMake
 include( GNUInstallDirs )
 
+# -------------------------------------------------------------------------------------------------- #
+# Вырабатываем заголовочный файл (в каталоге сборки)
+configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/source/libakrypt-base.h.in ${CMAKE_CURRENT_BINARY_DIR}/libakrypt-base.h @ONLY )
+message("-- Generation of libakrypt-base.h is done")
+
 # -------------------------------------------------------------------------------------------------- #
 # Определяем место хранения файла с настройками библиотеки
 # -------------------------------------------------------------------------------------------------- #
diff --git a/libakrypt.test.sh b/libakrypt.test.sh
index b8323fba..42826e53 100755
--- a/libakrypt.test.sh
+++ b/libakrypt.test.sh
@@ -1,40 +1,35 @@
 #!/bin/bash
 compilerList="gcc-9 gcc-10 gcc-11 gcc-12 gcc-13 gcc-14 gcc-15 musl-gcc clang-11 clang-12 clang-13 clang-14 clang-15 clang-16 clang-17 clang-18 tcc"
+buildDir="../build.global"
 
 # формируем каталог для проведения экспериментов
-mkdir -p ../global.build
-cd ../global.build
+mkdir -p $buildDir
+cd $buildDir
 
 for name in $compilerList
 do
-	$name --version 2>> /dev/null
-	if [ $? = 0 ];
+        $name --version 2>> /dev/null
+        if [ $? = 0 ];
         then
-		echo "--------------------------------------------------------------------------------"
-		mkdir -p $name.build
-		cd $name.build
+                echo "--------------------------------------------------------------------------------"
+                mkdir -p $name.build
+                cd $name.build
 # выполняем настройку
-		cmake -DCMAKE_C_COMPILER=$name -DAK_STATIC_LIB=ON -DAK_EXAMPLES=ON -DAK_TESTS=ON ../../libakrypt-0.x
+                cmake -DCMAKE_C_COMPILER=$name -DAK_STATIC_LIB=ON -DAK_EXAMPLES=ON -DAK_TESTS=ON ../../libakrypt-0.x
 # выполняем сборку
-		make
+                make
 # выполняем тестирование
-		make test
+                make test
 # выполняем проверку корректности криптографических тестов
-		./aktool test --crypto
+                ./aktool test --crypto --audit 2 --audit-file stderr
 # выполняем запуск тестов в окружении vslgrind
-		valgrind --version >> /dev/null 2>>/dev/null
-		if [ $? = 0 ];
-		then
-			valgrind ./aktool test --crypto
-		fi
+                valgrind --version >> /dev/null 2>>/dev/null
+                if [ $? = 0 ];
+                then
+                    valgrind ./aktool test --crypto
+                fi
 # не выполняем очистку созданных каталогов
-		cd ..
-		echo "--------------------------------------------------------------------------------"
-# выполняем тест скорости криптографических преобразований
-		echo $name >> speed.log
-		$name.build/aktool test -n cbc-kuznechik --no-packets --min-length 80 --max-length 128 >> speed.log	
-	fi
+                cd ..
+        fi
 done
-
 cd ..
-
diff --git a/source/libakrypt-base.h.in b/source/libakrypt-base.h.in
index 08e3e784..e7a0e287 100644
--- a/source/libakrypt-base.h.in
+++ b/source/libakrypt-base.h.in
@@ -553,6 +553,8 @@ extern "C" {
  dll_export char *ak_ptr_to_base64_alloc( ak_const_pointer , const size_t , const base64_format_t );
 /*! \brief Функция преобразует строку символов в формате base64 в двоичные данные. */
  dll_export ak_uint8 *ak_base64_to_ptr( const char *, ak_pointer , size_t * );
+/*! \brief Функция кодирует три байта информации в формат base64.  */
+ dll_export void ak_base64_encodeblock( ak_uint8 *, ak_uint8 *, int );
 
 /*! \brief Обобщенная реализация функции snprintf для различных компиляторов. */
  dll_export int ak_snprintf( char *str, size_t size, const char *format, ... );
diff --git a/source/libakrypt-internal.h b/source/libakrypt-internal.h
index df103a3c..8c2a24e5 100644
--- a/source/libakrypt-internal.h
+++ b/source/libakrypt-internal.h
@@ -10,13 +10,6 @@
 /* ----------------------------------------------------------------------------------------------- */
  #include <libakrypt.h>
 
-/* ----------------------------------------------------------------------------------------------- */
-/** \addtogroup func Вспомогательные функции
- @{ */
-/*! \brief Функция кодирует три байта информации в формат base64.  */
- void ak_base64_encodeblock( ak_uint8 *, ak_uint8 *, int );
-/** @} */
-
 /* ----------------------------------------------------------------------------------------------- */
 /** \addtogroup skey-doc Cекретные ключи криптографических механизмов
  @{ */
-- 
GitLab