-
Axel Kenzo authored
- Изменено поведение функции ak_bckey_cmac(), теперь она вычисляет имитовставку для данных нулевой длины. - Добавлена функция ak_bckey_cmac_file() - Реализована возможность вычисления контрольных сумм и имитовставок для файлов, с использованием выработанных ранее секретных ключей. Поддерживаются алгоритмы: hmac-*, cmac-* и все реализованные функции хеширования. Реализована проверка полученных ранее значений. - Добавлена функция ak_skey_new_derive_kdf256() - Расширена документация к утилите aktool - Добавлен тестовый скрипт icode.sh (.csh для отладки под FreeBSD) - Уточнен скрипт инсталляции
16b4071a
Forked from
Нестеренко Алексей Юрьевич / libakrypt-0.x
256 commits behind the upstream repository.
# -------------------------------------------------------------------------------------------------- #
# 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
)