Commit 545a250d authored by Axel Kenzo's avatar Axel Kenzo
Browse files

Зафиксирована версия 0.9.1

 - Базовая часть библиотеки и платформозависимые функции вынесены в отдельный объектный модуль
   (теперь собираются две библиотеки:
     - libakrypt-base, библиотека с платформозависимыми и не криптографическими функциями,
     - libakrypt, библиотека с криптографическими преобразованиями )
 - Удалены функции внешнего интерфейса, это привело к изменению названия большого числа
   экспортируемых функций
 - Оставлен только один инсталлируемый заголовочный файл libakrypt.h
 - Добавлен заголовочный файл libakrypt-internal.h для неэкспортируемых функций
 - С настоящего момента собираются два комплекта документации: для каждой разделяемой
   библиотеки отдельно
 - Возвращена реализация MGM, потерянная в восьмой версии библиотеки
 - В утииту aktool добавлены функции тестирования корректности и скорости работы
Showing with 117 additions and 27 deletions
+117 -27
......@@ -22,27 +22,17 @@ option( AK_STATIC_LIB "Build the static library" ON )
option( AK_SHARED_LIB "Build the shared library" ON )
option( AK_HAVE_LIBAKRYPT "Build crypto library" ON )
option( LIBAKRYPT_GMP_TESTS "Build comparison tests for gmp and libakrypt" OFF )
option( LIBAKRYPT_FIOT "Build library with FIOT protocol support" OFF )
option( LIBAKRYPT_TLS_13 "Build library with TLS 1.3 protocol support" OFF )
# LIBAKRYPT_CONF
if( LIBAKRYPT_GMP_TESTS )
find_library( GMP_LIB gmp )
if( GMP_LIB )
set( AK_HAVE_LIBAKRYPT ON )
set( AK_STATIC_LIB ON )
message("-- Found libgmp: ${GMP_LIB}" )
else()
set( LIBAKRYPT_GMP_TESTS OFF )
message("-- libgmp not found" )
endif()
endif()
# -------------------------------------------------------------------------------------------------- #
# подключаем модули CMake для тонкой настройки параметров сборки
set( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH} )
include( DetectFlags )
include( DetectHeaders )
include( DetectIntrinsics )
include( DetectLibraries )
# -------------------------------------------------------------------------------------------------- #
# вырабатываем заголовочный файл
......@@ -127,12 +117,13 @@ if( AK_SHARED_LIB )
add_library( akbase-shared SHARED ${MAIN_HEADERS} ${AKBASE_SOURCES} )
set_target_properties( akbase-shared PROPERTIES VERSION ${MAJOR_VERSION} SOVERSION ${FULL_VERSION} )
set_target_properties( akbase-shared PROPERTIES OUTPUT_NAME akrypt-base CLEAN_DIRECT_CUSTOM 1 )
target_link_libraries( akbase-shared ${LIBAKRYPT_LIBS} )
message( "-- Building libakrypt-base: shared library" )
if( AK_HAVE_LIBAKRYPT )
add_library( akrypt-shared SHARED ${MAIN_HEADERS} ${AKRYPT_SOURCES} )
set_target_properties( akrypt-shared PROPERTIES VERSION ${MAJOR_VERSION} SOVERSION ${FULL_VERSION} )
set_target_properties( akrypt-shared PROPERTIES OUTPUT_NAME akrypt CLEAN_DIRECT_CUSTOM 1 )
target_link_libraries( akrypt-shared akbase-shared )
target_link_libraries( akrypt-shared akbase-shared ${LIBAKRYPT_LIBS} )
message( "-- Building libakrypt: shared library" )
endif()
endif()
......@@ -141,10 +132,12 @@ endif()
if( AK_STATIC_LIB )
add_library( akbase-static STATIC ${MAIN_HEADERS} ${AKBASE_SOURCES} )
set_target_properties( akbase-static PROPERTIES OUTPUT_NAME akrypt-base CLEAN_DIRECT_CUSTOM 1 )
target_link_libraries( akbase-static ${LIBAKRYPT_LIBS} )
message( "-- Building libakrypt-base: static library" )
if( AK_HAVE_LIBAKRYPT )
add_library( akrypt-static STATIC ${MAIN_HEADERS} ${AKRYPT_SOURCES} )
set_target_properties( akrypt-static PROPERTIES OUTPUT_NAME akrypt CLEAN_DIRECT_CUSTOM 1 )
target_link_libraries( akrypt-static akbase-static ${LIBAKRYPT_LIBS} )
message( "-- Building libakrypt: shared library" )
endif()
endif()
......@@ -161,11 +154,11 @@ set( EXAMPLES_LIST
foreach( programm ${EXAMPLES_LIST} )
if( AK_STATIC_LIB )
add_executable( example-${programm} examples/example-${programm}.c )
target_link_libraries( example-${programm} akbase-static )
target_link_libraries( example-${programm} akbase-static ${LIBAKRYPT_LIBS} )
endif()
if( AK_SHARED_LIB )
add_executable( example-shared-${programm} examples/example-${programm}.c )
target_link_libraries( example-shared-${programm} akbase-shared )
target_link_libraries( example-shared-${programm} akbase-shared ${LIBAKRYPT_LIBS} )
endif()
endforeach()
......@@ -189,7 +182,7 @@ endif()
enable_testing()
foreach( programm ${ARITHMETIC_TESTS_LIST} )
add_executable( test-${programm} examples/test-${programm}.c )
target_link_libraries( test-${programm} akrypt-static akbase-static ${GMP_LIB} )
target_link_libraries( test-${programm} akrypt-static akbase-static ${LIBAKRYPT_LIBS} )
add_test( NAME test-${programm} COMMAND test-${programm} )
endforeach()
message("-- Added tests (now \"make test\" enabled)")
......@@ -229,9 +222,9 @@ target_include_directories( aktool PUBLIC "aktool" )
find_library( LIBINTL_LIB intl )
if( LIBINTL_LIB )
message("-- Additional library for aktool is ${LIBINTL_LIB}")
target_link_libraries( aktool akrypt-static akbase-static ${LIBINTL_LIB} ${GMP_LIB} )
target_link_libraries( aktool akrypt-static akbase-static ${LIBINTL_LIB} ${LIBAKRYPT_LIBS} )
else()
target_link_libraries( aktool akrypt-static akbase-static ${GMP_LIB} )
target_link_libraries( aktool akrypt-static akbase-static ${LIBAKRYPT_LIBS} )
endif()
# -------------------------------------------------------------------------------------------------- #
......
# -------------------------------------------------------------------------------------------------- #
# поиск gmp
if( LIBAKRYPT_GMP_TESTS )
find_library( LIBGMP gmp )
if( LIBGMP )
set( AK_HAVE_LIBAKRYPT ON )
set( AK_STATIC_LIB ON )
find_file( LIBGMP_H gmp.h )
if( LIBGMP_H )
# теперь готовим тесты для GMP
set( LIBAKRYPT_LIBS ${LIBAKRYPT_LIBS} gmp )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAK_HAVE_GMP_H" )
else()
message("-- gmp.h not found")
return()
endif()
else()
message("-- libgmp or gmp.h not found")
set( LIBAKRYPT_GMP_TESTS OFF )
return()
endif()
endif()
# -------------------------------------------------------------------------------------------------- #
# ищем реализацию сокетов для Windows
if( WIN32 )
if( LIBAKRYPT_FIOT )
# ищем реализацию сокетов
find_library( LIBAKRYPT_WS2_32 ws2_32 )
if( LIBAKRYPT_WS2_32 )
message("-- Searching ws2_32 - done ")
set( LIBAKRYPT_LIBS ws2_32 )
else()
message("-- ws2_32 not found")
return()
endif()
endif()
endif()
# -------------------------------------------------------------------------------------------------- #
if( MSVC )
# в начале ищем библиотеки, если нет - выходим
find_library( LIBAKRYPT_PTHREAD pthreadVC2 )
if( LIBAKRYPT_PTHREAD )
message("-- Searching pthreadVC2 - done ")
set( LIBAKRYPT_LIBS ${LIBAKRYPT_LIBS} pthreadVC2 )
# потом ищем заголовочный файл, если нет - выходим
find_file( LIBAKRYPT_PTHREAD_H pthread.h )
if( LIBAKRYPT_PTHREAD_H )
# устанавливаем флаг
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAK_HAVE_PTHREAD_H" )
# наконец, проверяем, определена ли структура timespec
check_c_source_compiles("
#include <pthread.h>
int main( void ) {
return 0;
}" LIBAKRYPT_HAVE_STRUCT_TIMESPEC )
if( LIBAKRYPT_HAVE_STRUCT_TIMESPEC )
else()
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_STRUCT_TIMESPEC" )
endif()
else()
message("-- pthread.h not found")
return()
endif()
else()
message("-- pthreadVC2 not found")
return()
endif()
else()
if( WIN32 )
find_library( LIBAKRYPT_PTHREAD pthread )
if( LIBAKRYPT_PTHREAD )
message("-- Searching pthread - done ")
set( LIBAKRYPT_LIBS ${LIBAKRYPT_LIBS} pthread )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAK_HAVE_PTHREAD_H" )
endif()
else()
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAK_HAVE_PTHREAD_H" )
endif()
endif()
# -------------------------------------------------------------------------------------------------- #
# вырабатываем и подключаем файл с ресурсами библиотеки
if( WIN32 )
configure_file( ${CMAKE_SOURCE_DIR}/libakrypt.rc.in ${CMAKE_SOURCE_DIR}/libakrypt.rc @ONLY )
set( AKRYPT_SOURCES ${AKRYPT_SOURCES} libakrypt.rc )
set( CMAKE_BUILD_TYPE "Release" )
endif()
......@@ -938,7 +938,8 @@ EXCLUDE_SYMBOLS =
# that contain example code fragments that are included (see the \include
# command).
EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/aktool
EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/aktool \
@CMAKE_SOURCE_DIR@/examples
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
......
......@@ -2,7 +2,7 @@
Пример использует неэкспортируемые функции.
test-internal-mgm01.c
test-mgm01.c
*/
#include <stdio.h>
......
......@@ -1156,6 +1156,8 @@
return result;
}
/* ----------------------------------------------------------------------------------------------- */
/*! \example test-mgm01.c */
/* ----------------------------------------------------------------------------------------------- */
/* ak_mgm.c */
/* ----------------------------------------------------------------------------------------------- */
......@@ -106,8 +106,6 @@ extern "C" {
#cmakedefine AK_HAVE_SIGNAL_H
#cmakedefine AK_HAVE_GETOPT_H
#cmakedefine AK_HAVE_LIBINTL_H
#cmakedefine AK_HAVE_PTHREAD_H
#cmakedefine LIBAKRYPT_TESTS_GMP
/* ----------------------------------------------------------------------------------------------- */
#cmakedefine AK_HAVE_WINDOWS_H
......@@ -481,13 +479,13 @@ extern "C" {
/*! \brief Функция чтения заданного файла в буффер. */
dll_export ak_uint8 *ak_ptr_load_from_file( ak_pointer , size_t * , const char * );
/*! \brief Функция чтения заданного файла в кодировке base64 в буффер. */
ak_uint8 *ak_ptr_load_from_base64_file( ak_pointer , size_t * , const char * );
dll_export ak_uint8 *ak_ptr_load_from_base64_file( ak_pointer , size_t * , const char * );
/*! \brief Выделение выравненной памяти. */
ak_pointer ak_aligned_malloc( size_t );
dll_export ak_pointer ak_aligned_malloc( size_t );
/* ----------------------------------------------------------------------------------------------- */
/*! \brief Функция кодирует три байта информации в формат base64. */
void ak_base64_encodeblock( ak_uint8 *, ak_uint8 *, int );
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, ... );
/*! \brief Чтение строки из консоли. */
......
......@@ -15,7 +15,7 @@
#include <libakrypt-base.h>
/* ----------------------------------------------------------------------------------------------- */
#ifdef LIBAKRYPT_TESTS_GMP
#ifdef AK_HAVE_GMP_H
#define LIBAKRYPT_HAVE_GMP_H
#endif
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment