• Axel Kenzo's avatar
    Зафиксирована версия 0.9.7 · 16b4071a
    Axel Kenzo authored
     - Изменено поведение функции ak_bckey_cmac(),
       теперь она вычисляет имитовставку для данных нулевой длины.
     - Добавлена функция ak_bckey_cmac_file()
     - Реализована возможность вычисления контрольных сумм и имитовставок для файлов,
       с использованием выработанных ранее секретных ключей.
       Поддерживаются алгоритмы: hmac-*, cmac-* и все реализованные
       функции хеширования. Реализована проверка полученных ранее значений.
     - Добавлена функция ak_skey_new_derive_kdf256()
     - Расширена документация к утилите aktool
     - Добавлен тестовый скрипт icode.sh (.csh для отладки под FreeBSD)
     - Уточнен скрипт инсталляции
    16b4071a
CMakeLists.txt 15.77 KiB
# -------------------------------------------------------------------------------------------------- #
# Copyright (c) 2014 - 2021 by Axel Kenzo, axelkenzo@mail.ru
# CMakeLists.txt
# -------------------------------------------------------------------------------------------------- #
cmake_minimum_required( VERSION 3.2 FATAL_ERROR )
# -------------------------------------------------------------------------------------------------- #
set( HEAD_VERSION 0 )
set( MAIN_VERSION 9 )
set( MINOR_VERSION 7 )
set( MAJOR_VERSION ${HEAD_VERSION}.${MAIN_VERSION} )
set( FULL_VERSION ${MAJOR_VERSION}.${MINOR_VERSION} )
# строка с текущей датой, используется при сборке документации
string( TIMESTAMP CURRENT_DATE_STRING "[%d %B, %Y]" )
# -------------------------------------------------------------------------------------------------- #
# Формируем название проекта
project( libakrypt C )
# -------------------------------------------------------------------------------------------------- #
# Перечень доступных опций для сборки библиотеки
option( AK_STATIC_LIB "Build the static library" ON )
option( AK_SHARED_LIB "Build the shared library" ON )
option( AK_TESTS "Build test for libakrypt" OFF )
option( AK_TESTS_GMP "Build comparison tests for gmp and libakrypt" OFF )
# -------------------------------------------------------------------------------------------------- #
# Перечень опций, которые имеют предустановленные значения и могут изменяться через командную строку
# для linux
#   set( AK_CONFIG_PATH  "/etc" )
#   set( AK_CA_PATH "/usr/share/ca-certificates" )
# -------------------------------------------------------------------------------------------------- #
# Подключаем модули CMake для тонкой настройки параметров сборки
set( CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH} )
include( DetectFlags )
include( DetectHeaders )
include( DetectIntrinsics )
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")
# -------------------------------------------------------------------------------------------------- #
# Определяем базовое множество исходных текстов библиотеки
set( MAIN_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/libakrypt-base.h source/libakrypt.h )
# -------------------------------------------------------------------------------------------------- #
set( AKBASE_SOURCES
   source/ak_tools.c
   source/ak_ini.c
   source/ak_list.c
   source/ak_file.c
   source/ak_base64.c
# -------------------------------------------------------------------------------------------------- #
# Добавляем исходные тексты для криптобиблиотеки
set( AKRYPT_SOURCES
   source/libakrypt-internal.h
   source/ak_options.c
   source/ak_libakrypt.c
   source/ak_oid.c
   source/ak_random.c
   source/ak_gf2n.c
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
source/ak_mpzn.c source/ak_curves.c source/ak_parameters.c source/ak_mac.c source/ak_hash.c source/ak_skey.c source/ak_hmac.c source/ak_bckey.c source/ak_cmac.c source/ak_magma.c source/ak_kuznechik.c source/ak_acpkm.c source/ak_mgm.c source/ak_xts.c source/ak_asn1.c source/ak_sign.c source/ak_asn1_keys.c source/ak_asn1_cert.c source/ak_blom.c source/ak_kdf.c ) # -------------------------------------------------------------------------------------------------- # # Проверка архитектуры include( TestBigEndian ) TEST_BIG_ENDIAN( IS_BIG_ENDIAN ) if( IS_BIG_ENDIAN ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAK_BIG_ENDIAN" ) else() set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAK_LITTLE_ENDIAN" ) endif() message("-- Used compile flags ${CMAKE_C_FLAGS}") # -------------------------------------------------------------------------------------------------- # # Определяем место хранения файла с настройками библиотеки # -------------------------------------------------------------------------------------------------- # if( AK_CONFIG_PATH ) else() if( CMAKE_HOST_UNIX ) set( AK_CONFIG_PATH "/etc" ) endif() if( WIN32 ) set( AK_CONFIG_PATH "C:\\\\Program Files\\\\Akrypt" ) endif() endif() message("-- Path for libakrypt.conf is ${AK_CONFIG_PATH}") # -------------------------------------------------------------------------------------------------- # # Определяем место хранения доверенных сертификатов библиотеки # -------------------------------------------------------------------------------------------------- # if( AK_CA_PATH ) else() if( CMAKE_HOST_UNIX ) set( AK_CA_PATH "${CMAKE_INSTALL_PREFIX}/share/ca-certificates/libakrypt" ) endif() if( WIN32 ) set( AK_CA_PATH "C:\\\\Program Files\\\\Akrypt\\\\ca-certificates" ) endif() endif() message("-- Path for ca-certificates is ${AK_CA_PATH}") # -------------------------------------------------------------------------------------------------- # # Определем процедуры сборки библиотек - статической или динамической include_directories( "source" ) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) add_compile_options( -DLIBAKRYPT_OPTIONS_PATH="${AK_CONFIG_PATH}" ) add_compile_options( -DLIBAKRYPT_VERSION="${FULL_VERSION}" ) add_compile_options( -DLIBAKRYPT_COMPILER_NAME="${CMAKE_C_COMPILER}" ) add_compile_options( -DLIBAKRYPT_COMPILER_VERSION="${CMAKE_C_COMPILER_VERSION}" ) add_compile_options( -DLIBAKRYPT_CA_PATH="${AK_CA_PATH}" )
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
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" ) 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 ${LIBAKRYPT_LIBS} ) message( "-- Building libakrypt: shared library" ) 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" ) 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: static library" ) endif() # -------------------------------------------------------------------------------------------------- # # Сборка примеров, иллюстрирующих работу базовой библиотеки # -------------------------------------------------------------------------------------------------- # if( AK_TESTS_GMP ) set( AK_TESTS ON ) endif() # -------------------------------------------------------------------------------------------------- # set( EXAMPLES_LIST log ini file ) # -------------------------------------------------------------------------------------------------- # if( AK_TESTS ) foreach( programm ${EXAMPLES_LIST} ) if( AK_STATIC_LIB ) add_executable( example-${programm} examples/example-${programm}.c ) 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 ${LIBAKRYPT_LIBS} ) endif() endforeach() endif() # -------------------------------------------------------------------------------------------------- # # Сборка тестовых примеров, проверяющих корректность элементарных арифметических операций set ( ARITHMETIC_TESTS_LIST random01 gf2n mgm01 xtsmac01 asn1-build asn1-parse sign01 asn1-keys blom-keys cmac )