Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • car/libdap-crypto
1 result
Show changes
Commits on Source (21)
Showing with 708 additions and 551 deletions
File mode changed from 100644 to 100755
[submodule "test/libdap-test"] [submodule "test/libdap-test"]
path = test/libdap-test path = test/libdap-test
url = https://github.com/kelvinblockchain/libdap-test url = https://gitlab.demlabs.net/cellframe/libdap-test.git
branch = master branch = master
[submodule "libdap"]
path = libdap
url = https://gitlab.demlabs.net/cellframe/libdap.git
...@@ -12,8 +12,8 @@ before_install: ...@@ -12,8 +12,8 @@ before_install:
script: script:
- sudo service network-manager start - sudo service network-manager start
- mkdir build - mkdir build
- cd build - cd build
- cmake -DBUILD_DAP_TESTS=ON ../ - cmake -DBUILD_CRYPTO_TESTS=ON ../
- make - make
- ctest --verbose - ctest --verbose
......
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
project (dap_crypto) project (dap_crypto)
# fix implicit declaration warnings # fix implicit declaration warnings
add_definitions ("-D_GNU_SOURCE") add_definitions ("-D_GNU_SOURCE")
set(CMAKE_C_FLAGS "-std=c11 -Wall -Wextra") set(CMAKE_C_FLAGS "-std=c11 -O2 -Wall -Wextra -fPIC -fno-pie -no-pie")
set(CMAKE_ASM_FLAGS "-std=c11 -O2 -Wall -Wextra -fPIC -fno-pie -no-pie")
file(GLOB CRYPTO_SRCS src/*.c src/rand/*.c src/iaes/*.c src/oaes/*.c src/sha3/*.c src/msrln/*.c src/defeo_scheme/*.c src/sig_bliss/*.c src/sig_tesla/*.c src/sig_picnic/*.c)
file(GLOB CRYPTO_HEADERS src/*.h src/rand/*.h src/iaes/*.h src/oaes/*.h src/sha3/*.h src/msrln/*.h src/defeo_scheme/*.h src/sig_bliss/*.h src/sig_tesla/*.h src/sig_picnic/*.c include/*.h) if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON))
add_library(${PROJECT_NAME} STATIC ${CRYPTO_SRCS} ${CRYPTO_HEADERS} ) # Check whether we're on a 32-bit or 64-bit system
if(CMAKE_SIZEOF_VOID_P EQUAL "8")
target_include_directories(dap_crypto PRIVATE src/rand src/iaes src/oaes sha3 src/msrln src/defeo_scheme src/sig_bliss src/sig_tesla src/sig_picnic src include) set(DEFAULT_BUILD_64 ON)
target_include_directories(dap_crypto INTERFACE src/ src/sha3 include/) else()
set(DEFAULT_BUILD_64 OFF)
target_link_libraries(dap_crypto dap_core m) endif()
option(BUILD_64 "Build for 64-bit? 'OFF' builds for 32-bit." ${DEFAULT_BUILD_64})
if(BUILD_DAP_TESTS) add_definitions ("-DDAP_SERVER")
enable_testing() add_definitions ("-DNODE_NETNAME=\"kelvin\"")
add_subdirectory(test)
endif() set(_CCOPT "-Wall -O2 -pg -fPIC -fno-pie -no-pie")
set(_LOPT "-pg")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
if (NOT (TARGET dap_core))
add_subdirectory(libdap)
endif()
endif()
file( GLOB CRYPTO_SRCS
src/*.c
src/rand/*.c
src/iaes/*.c
src/oaes/*.c
src/sha3/*.c
src/msrln/*.c
src/defeo_scheme/*.c
src/sig_bliss/*.c
src/sig_tesla/*.c
src/sig_picnic/*.c
src/sig_dilithium/*.c
)
file( GLOB CRYPTO_HEADERS
src/*.h
src/rand/*.h
src/iaes/*.h
src/oaes/*.h
src/sha3/*.h
src/msrln/*.h
src/defeo_scheme/*.h
src/sig_bliss/*.h
src/sig_tesla/*.h
src/sig_picnic/*.h
src/sig_dilithium/*.h
include/*.h
)
enable_language(ASM)
file( GLOB XKCP_SRCS
src/XKCP/lib/high/Keccak/FIPS202/KeccakHash.c
src/XKCP/lib/high/Keccak/FIPS202/SimpleFIPS202.c
src/XKCP/lib/high/Keccak/KeccakSpongeWidth1600.c
)
if(WIN32)
if(BUILD_64)
file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64/win32/KeccakP-1600-x86-64-gas.s )
else()
file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/Inplace32BI/KeccakP-1600-inplace32BI.c )
endif()
endif()
if(UNIX)
if(BUILD_64)
file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64/KeccakP-1600-x86-64-gas.s )
else()
file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/Inplace32BI/KeccakP-1600-inplace32BI.c )
endif()
endif()
add_library(${PROJECT_NAME} STATIC ${CRYPTO_SRCS} ${XKCP_SRCS} ${XKCP_SRCS2} ${CRYPTO_HEADERS} )
target_include_directories(dap_crypto PRIVATE src/rand src/iaes src/oaes sha3 src/msrln src/defeo_scheme src/sig_bliss src/sig_tesla src/sig_picnic src/sig_dilithium src include)
target_include_directories(dap_crypto INTERFACE src/ src/sha3 include/)
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/common)
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/low/common)
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/high/Keccak)
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/high/Keccak/FIPS202)
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/low/KeccakP-1600/Optimized)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/common)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/low/common)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/high/Keccak)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/high/Keccak/FIPS202)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/low/KeccakP-1600/Optimized)
if(WIN32)
if(BUILD_64)
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64/win32)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64/win32)
else()
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/low/KeccakP-1600/Inplace32BI)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/low/KeccakP-1600/Inplace32BI)
endif()
endif()
if(UNIX)
if(BUILD_64)
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64)
else()
target_include_directories(dap_crypto INTERFACE src/XKCP/lib/low/KeccakP-1600/Inplace32BI)
target_include_directories(dap_crypto PRIVATE src/XKCP/lib/low/KeccakP-1600/Inplace32BI)
endif()
endif()
if(WIN32)
target_link_libraries(dap_crypto dap_core)
endif()
if(UNIX)
target_link_libraries(dap_crypto dap_core m)
endif()
if(BUILD_CRYPTO_TESTS)
enable_testing()
add_subdirectory(test)
endif()
File mode changed from 100644 to 100755
#ifndef __CRYPTO_COMMON_H__ #ifndef __CRYPTO_COMMON_H__
#define __CRYPTO_COMMON_H__ #define __CRYPTO_COMMON_H__
// For C++ // For C++
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#include <stddef.h> #include <stddef.h>
#include "rand/dap_rand.h" #include "rand/dap_rand.h"
#include "sha3/fips202.h" #include "sha3/fips202.h"
// Definition of operating system // Definition of operating system
#define OS_WIN 1 #define OS_WIN 1
#define OS_LINUX 2 #define OS_LINUX 2
#define OS_MACOS 3 #define OS_MACOS 3
#if defined(_WIN32) // Microsoft Windows OS #if defined(_WIN32) // Microsoft Windows OS
#define OS_TARGET OS_WIN #define OS_TARGET OS_WIN
#elif defined(__linux__) // Linux OS #elif defined(__linux__) // Linux OS
#define OS_TARGET OS_LINUX #define OS_TARGET OS_LINUX
#elif defined(__APPLE__) // MACOS #elif defined(__APPLE__) // MACOS
#define OS_TARGET OS_MACOS #define OS_TARGET OS_MACOS
#else #else
#error -- "Unsupported OS" #error -- "Unsupported OS"
#endif #endif
// Definition of compiler // Definition of compiler
#define COMPILER_VC 1 #define COMPILER_VC 1
#define COMPILER_GCC 2 #define COMPILER_GCC 2
#define COMPILER_CLANG 3 #define COMPILER_CLANG 3
#if defined(_MSC_VER) // Microsoft Visual C compiler #if defined(_MSC_VER) // Microsoft Visual C compiler
#define COMPILER COMPILER_VC #define COMPILER COMPILER_VC
#elif defined(__GNUC__) // GNU GCC compiler #elif defined(__GNUC__) // GNU GCC compiler
#define COMPILER COMPILER_GCC #define COMPILER COMPILER_GCC
#elif defined(__clang__) // Clang compiler #elif defined(__clang__) // Clang compiler
#define COMPILER COMPILER_CLANG #define COMPILER COMPILER_CLANG
#else #else
#error -- "Unsupported COMPILER" #error -- "Unsupported COMPILER"
#endif #endif
// Definition of the targeted architecture and basic data types // Definition of the targeted architecture and basic data types
#define TARGET_AMD64 1 #define TARGET_AMD64 1
#define TARGET_x86 2 #define TARGET_x86 2
#define TARGET_ARM 3 #define TARGET_ARM 3
#define TARGET_ARM64 4 #define TARGET_ARM64 4
#if (defined(__x86_64__) || defined(__x86_64) || defined(__arch64__) || defined(_M_AMD64) || defined(_M_X64) || defined(_WIN64) || !defined(__LP64__)) #if (defined(__x86_64__) || defined(__x86_64) || defined(__arch64__) || defined(_M_AMD64) || defined(_M_X64) || defined(_WIN64) || !defined(__LP64__))
#define _AMD64_ #define _AMD64_
#elif (defined(__aarch64__)) #elif (defined(__aarch64__))
#define _ARM64_ #define _ARM64_
#else #else
#define _X86_ #define _X86_
#endif #endif
#if defined(_AMD64_) #if defined(_AMD64_)
#define TARGET TARGET_AMD64 #define TARGET TARGET_AMD64
#define RADIX 64 #define RADIX 64
#define LOG2RADIX 6 #define LOG2RADIX 6
typedef uint64_t digit_t; // Unsigned 64-bit digit typedef uint64_t digit_t; // Unsigned 64-bit digit
typedef int64_t sdigit_t; // Signed 64-bit digit typedef int64_t sdigit_t; // Signed 64-bit digit
typedef uint32_t hdigit_t; // Unsigned 32-bit digit typedef uint32_t hdigit_t; // Unsigned 32-bit digit
#define NWORDS_FIELD 12 // Number of words of a 751-bit field element #define NWORDS_FIELD 12 // Number of words of a 751-bit field element
#define p751_ZERO_WORDS 5 // Number of "0" digits in the least significant part of p751 + 1 #define p751_ZERO_WORDS 5 // Number of "0" digits in the least significant part of p751 + 1
#elif defined(_X86_) #elif defined(_X86_)
#define TARGET TARGET_x86 #define TARGET TARGET_x86
#define RADIX 32 #define RADIX 32
#define LOG2RADIX 5 #define LOG2RADIX 5
typedef uint32_t digit_t; // Unsigned 32-bit digit typedef uint32_t digit_t; // Unsigned 32-bit digit
typedef int32_t sdigit_t; // Signed 32-bit digit typedef int32_t sdigit_t; // Signed 32-bit digit
typedef uint16_t hdigit_t; // Unsigned 16-bit digit typedef uint16_t hdigit_t; // Unsigned 16-bit digit
#define NWORDS_FIELD 24 #define NWORDS_FIELD 24
#define p751_ZERO_WORDS 11 #define p751_ZERO_WORDS 11
#elif defined(_ARM_) #elif defined(_ARM_)
#define TARGET TARGET_ARM #define TARGET TARGET_ARM
#define RADIX 32 #define RADIX 32
#define LOG2RADIX 5 #define LOG2RADIX 5
typedef uint32_t digit_t; // Unsigned 32-bit digit typedef uint32_t digit_t; // Unsigned 32-bit digit
typedef int32_t sdigit_t; // Signed 32-bit digit typedef int32_t sdigit_t; // Signed 32-bit digit
typedef uint16_t hdigit_t; // Unsigned 16-bit digit typedef uint16_t hdigit_t; // Unsigned 16-bit digit
#define NWORDS_FIELD 24 #define NWORDS_FIELD 24
#define p751_ZERO_WORDS 11 #define p751_ZERO_WORDS 11
#elif defined(_ARM64_) #elif defined(_ARM64_)
#define TARGET TARGET_ARM64 #define TARGET TARGET_ARM64
#define RADIX 64 #define RADIX 64
#define LOG2RADIX 6 #define LOG2RADIX 6
typedef uint64_t digit_t; // Unsigned 64-bit digit typedef uint64_t digit_t; // Unsigned 64-bit digit
typedef int64_t sdigit_t; // Signed 64-bit digit typedef int64_t sdigit_t; // Signed 64-bit digit
typedef uint32_t hdigit_t; typedef uint32_t hdigit_t;
#define NWORDS_FIELD 12 #define NWORDS_FIELD 12
#define p751_ZERO_WORDS 5 #define p751_ZERO_WORDS 5
#else #else
#error -- "Unsupported ARCHITECTURE" #error -- "Unsupported ARCHITECTURE"
#endif #endif
#define RADIX64 #define RADIX64
// Instruction support // Instruction support
#define NO_SIMD_SUPPORT 0 #define NO_SIMD_SUPPORT 0
#define AVX_SUPPORT 1 #define AVX_SUPPORT 1
#define AVX2_SUPPORT 2 #define AVX2_SUPPORT 2
#if defined(__AVX2__) #if defined(__AVX2__)
#define SIMD_SUPPORT AVX2_SUPPORT // AVX2 support selection #define SIMD_SUPPORT AVX2_SUPPORT // AVX2 support selection
#elif defined(__AVX__) #elif defined(__AVX__)
#define SIMD_SUPPORT AVX_SUPPORT // AVX support selection #define SIMD_SUPPORT AVX_SUPPORT // AVX support selection
#else #else
#define SIMD_SUPPORT NO_SIMD_SUPPORT #define SIMD_SUPPORT NO_SIMD_SUPPORT
#endif #endif
#if defined(__ASM__) // Assembly support selection #if defined(__ASM__) // Assembly support selection
#define ASM_SUPPORT #define ASM_SUPPORT
#endif #endif
#if (SIMD_SUPPORT == NO_SIMD_SUPPORT) // Selection of generic, portable implementation #if (SIMD_SUPPORT == NO_SIMD_SUPPORT) // Selection of generic, portable implementation
#define GENERIC_IMPLEMENTATION #define GENERIC_IMPLEMENTATION
#endif #endif
// Unsupported configurations // Unsupported configurations
#if defined(ASM_SUPPORT) && (OS_TARGET == OS_WIN) #if defined(ASM_SUPPORT) && (OS_TARGET == OS_WIN)
#error -- "Assembly is not supported on this platform" #error -- "Assembly is not supported on this platform"
#endif #endif
#if defined(ASM_SUPPORT) && defined(GENERIC_IMPLEMENTATION) #if defined(ASM_SUPPORT) && defined(GENERIC_IMPLEMENTATION)
#error -- "Unsupported configuration" #error -- "Unsupported configuration"
#endif #endif
#if (SIMD_SUPPORT != NO_SIMD_SUPPORT) && defined(GENERIC_IMPLEMENTATION) #if (SIMD_SUPPORT != NO_SIMD_SUPPORT) && defined(GENERIC_IMPLEMENTATION)
#error -- "Unsupported configuration" #error -- "Unsupported configuration"
#endif #endif
#if (TARGET != TARGET_AMD64) && !defined(GENERIC_IMPLEMENTATION) #if (TARGET != TARGET_AMD64) && !defined(GENERIC_IMPLEMENTATION)
#error -- "Unsupported configuration" #error -- "Unsupported configuration"
#endif #endif
#if (OS_TARGET == OS_LINUX) && defined(ASM_SUPPORT) && (SIMD_SUPPORT != AVX2_SUPPORT) #if (OS_TARGET == OS_LINUX) && defined(ASM_SUPPORT) && (SIMD_SUPPORT != AVX2_SUPPORT)
#error -- "Unsupported configuration" #error -- "Unsupported configuration"
#endif #endif
// Definitions of the error-handling type and error codes // Definitions of the error-handling type and error codes
/*typedef enum { /*typedef enum {
CRYPTO_MSRLN_SUCCESS, // 0x00 CRYPTO_MSRLN_SUCCESS, // 0x00
CRYPTO_MSRLN_ERROR, // 0x01 CRYPTO_MSRLN_ERROR, // 0x01
CRYPTO_MSRLN_ERROR_DURING_TEST, // 0x02 CRYPTO_MSRLN_ERROR_DURING_TEST, // 0x02
CRYPTO_MSRLN_ERROR_UNKNOWN, // 0x03 CRYPTO_MSRLN_ERROR_UNKNOWN, // 0x03
CRYPTO_MSRLN_ERROR_NOT_IMPLEMENTED, // 0x04 CRYPTO_MSRLN_ERROR_NOT_IMPLEMENTED, // 0x04
CRYPTO_MSRLN_ERROR_NO_MEMORY, // 0x05 CRYPTO_MSRLN_ERROR_NO_MEMORY, // 0x05
CRYPTO_MSRLN_ERROR_INVALID_PARAMETER, // 0x06 CRYPTO_MSRLN_ERROR_INVALID_PARAMETER, // 0x06
CRYPTO_MSRLN_ERROR_SHARED_KEY, // 0x07 CRYPTO_MSRLN_ERROR_SHARED_KEY, // 0x07
CRYPTO_MSRLN_ERROR_TOO_MANY_ITERATIONS, // 0x08 CRYPTO_MSRLN_ERROR_TOO_MANY_ITERATIONS, // 0x08
CRYPTO_MSRLN_ERROR_END_OF_LIST CRYPTO_MSRLN_ERROR_END_OF_LIST
} CRYPTO_MSRLN_STATUS; } CRYPTO_MSRLN_STATUS;
#define CRYPTO_STATUS_TYPE_SIZE (CRYPTO_ERROR_END_OF_LIST) #define CRYPTO_STATUS_TYPE_SIZE (CRYPTO_ERROR_END_OF_LIST)
// Definitions of the error messages // Definitions of the error messages
// NOTE: they must match the error codes above // NOTE: they must match the error codes above
#define CRYPTO_MSG_SUCCESS "CRYPTO_SUCCESS" #define CRYPTO_MSG_SUCCESS "CRYPTO_SUCCESS"
#define CRYPTO_MSG_ERROR "CRYPTO_ERROR" #define CRYPTO_MSG_ERROR "CRYPTO_ERROR"
#define CRYPTO_MSG_ERROR_DURING_TEST "CRYPTO_ERROR_DURING_TEST" #define CRYPTO_MSG_ERROR_DURING_TEST "CRYPTO_ERROR_DURING_TEST"
#define CRYPTO_MSG_ERROR_UNKNOWN "CRYPTO_ERROR_UNKNOWN" #define CRYPTO_MSG_ERROR_UNKNOWN "CRYPTO_ERROR_UNKNOWN"
#define CRYPTO_MSG_ERROR_NOT_IMPLEMENTED "CRYPTO_ERROR_NOT_IMPLEMENTED" #define CRYPTO_MSG_ERROR_NOT_IMPLEMENTED "CRYPTO_ERROR_NOT_IMPLEMENTED"
#define CRYPTO_MSG_ERROR_NO_MEMORY "CRYPTO_ERROR_NO_MEMORY" #define CRYPTO_MSG_ERROR_NO_MEMORY "CRYPTO_ERROR_NO_MEMORY"
#define CRYPTO_MSG_ERROR_INVALID_PARAMETER "CRYPTO_ERROR_INVALID_PARAMETER" #define CRYPTO_MSG_ERROR_INVALID_PARAMETER "CRYPTO_ERROR_INVALID_PARAMETER"
#define CRYPTO_MSG_ERROR_SHARED_KEY "CRYPTO_ERROR_SHARED_KEY" #define CRYPTO_MSG_ERROR_SHARED_KEY "CRYPTO_ERROR_SHARED_KEY"
#define CRYPTO_MSG_ERROR_TOO_MANY_ITERATIONS "CRYPTO_ERROR_TOO_MANY_ITERATIONS" #define CRYPTO_MSG_ERROR_TOO_MANY_ITERATIONS "CRYPTO_ERROR_TOO_MANY_ITERATIONS"
*/ */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
/* /*
* Authors: * Authors:
* Dmitriy A. Gearasimov <kahovski@gmail.com> * Dmitriy A. Gearasimov <kahovski@gmail.com>
* Anatolii Kurotych <akurotych@gmail.com> * Anatolii Kurotych <akurotych@gmail.com>
* DeM Labs Inc. https://demlabs.net * DeM Labs Inc. https://demlabs.net
* DeM Labs Open source community https://github.com/demlabsinc * DeM Labs Open source community https://github.com/demlabsinc
* Copyright (c) 2017-2019 * Copyright (c) 2017-2019
* All rights reserved. * All rights reserved.
This file is part of DAP (Deus Applications Prototypes) the open source project This file is part of DAP (Deus Applications Prototypes) the open source project
DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
DAP is distributed in the hope that it will be useful, DAP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with any DAP based project. If not, see <http://www.gnu.org/licenses/>. along with any DAP based project. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef _DAP_ENC_H_ #ifndef _DAP_ENC_H_
#define _DAP_ENC_H_ #define _DAP_ENC_H_
#include <stddef.h> #include <stddef.h>
#include <stdbool.h> #include <stdbool.h>
#include "dap_enc_key.h" #include "dap_enc_key.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
int dap_enc_init(void); int dap_enc_init(void);
void dap_enc_deinit(void); void dap_enc_deinit(void);
// if include_base64 == true. Calc out size with base64 encoding // if include_base64 == true. Calc out size with base64 encoding
size_t dap_enc_code_out_size(dap_enc_key_t* a_key, const size_t a_buf_in_size, dap_enc_data_type_t type); size_t dap_enc_code_out_size(dap_enc_key_t* a_key, const size_t a_buf_in_size, dap_enc_data_type_t type);
size_t dap_enc_decode_out_size(dap_enc_key_t* a_key, const size_t a_buf_in_size, dap_enc_data_type_t type); size_t dap_enc_decode_out_size(dap_enc_key_t* a_key, const size_t a_buf_in_size, dap_enc_data_type_t type);
size_t dap_enc_code(struct dap_enc_key * a_key, // Key size_t dap_enc_code(struct dap_enc_key * a_key, // Key
const void * a_buf_in, const size_t a_buf_in_size, // Input const void * a_buf_in, const size_t a_buf_in_size, // Input
void * a_buf_out, const size_t a_buf_out_size_max, // Output void * a_buf_out, const size_t a_buf_out_size_max, // Output
dap_enc_data_type_t a_data_type_out); // Output data type dap_enc_data_type_t a_data_type_out); // Output data type
size_t dap_enc_decode(struct dap_enc_key * a_key, // Key size_t dap_enc_decode(struct dap_enc_key * a_key, // Key
const void * a_buf_in, const size_t a_buf_in_size, // Input const void * a_buf_in, const size_t a_buf_in_size, // Input
void * a_buf_out, const size_t a_buf_out_size_max, // Output void * a_buf_out, const size_t a_buf_out_size_max, // Output
dap_enc_data_type_t a_data_type_in); // Output data type dap_enc_data_type_t a_data_type_in); // Output data type
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
/* /*
* Authors: * Authors:
* Dmitriy A. Gearasimov <kahovski@gmail.com> * Dmitriy A. Gearasimov <kahovski@gmail.com>
* DeM Labs Inc. https://demlabs.net * DeM Labs Inc. https://demlabs.net
* Kelvin Blockchain community https://github.com/kelvinblockchain * Kelvin Blockchain community https://github.com/kelvinblockchain
* Copyright (c) 2017-2019 * Copyright (c) 2017-2019
* All rights reserved. * All rights reserved.
This file is part of DAP (Deus Applications Prototypes) the open source project This file is part of DAP (Deus Applications Prototypes) the open source project
DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
DAP is distributed in the hope that it will be useful, DAP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with any DAP based project. If not, see <http://www.gnu.org/licenses/>. along with any DAP based project. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef _DAP_ENC_BASE64_H_ #ifndef _DAP_ENC_BASE64_H_
#define _DAP_ENC_BASE64_H_ #define _DAP_ENC_BASE64_H_
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include "dap_enc_key.h" #include "dap_enc_key.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* /*
* Calculates encode size from input size * Calculates encode size from input size
*/ */
#define DAP_ENC_BASE58_ENCODE_SIZE(a_in_size) ( (size_t) ((137 * a_in_size / 100)+2)) #define DAP_ENC_BASE58_ENCODE_SIZE(a_in_size) ( (size_t) ((137 * a_in_size / 100)+2))
#define DAP_ENC_BASE58_DECODE_SIZE(a_in_size) ( (size_t) ( 2 * a_in_size +1) ) #define DAP_ENC_BASE58_DECODE_SIZE(a_in_size) ( (size_t) ( 2 * a_in_size +1) )
size_t dap_enc_base58_encode(const void * a_in, size_t a_in_size, char * a_out); size_t dap_enc_base58_encode(const void * a_in, size_t a_in_size, char * a_out);
size_t dap_enc_base58_decode(const char * a_in, void * a_out); size_t dap_enc_base58_decode(const char * a_in, void * a_out);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
/* /*
* Authors: * Authors:
* Dmitriy A. Gearasimov <kahovski@gmail.com> * Dmitriy A. Gearasimov <kahovski@gmail.com>
* Anatolii Kurotych <akurotych@gmail.com> * Anatolii Kurotych <akurotych@gmail.com>
* DeM Labs Inc. https://demlabs.net * DeM Labs Inc. https://demlabs.net
* DeM Labs Open source community https://github.com/demlabsinc * DeM Labs Open source community https://github.com/demlabsinc
* Copyright (c) 2017-2019 * Copyright (c) 2017-2019
* All rights reserved. * All rights reserved.
This file is part of DAP (Deus Applications Prototypes) the open source project This file is part of DAP (Deus Applications Prototypes) the open source project
DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
DAP is distributed in the hope that it will be useful, DAP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with any DAP based project. If not, see <http://www.gnu.org/licenses/>. along with any DAP based project. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef _DAP_ENC_BASE64_H_ #ifndef _DAP_ENC_BASE64_H_
#define _DAP_ENC_BASE64_H_ #define _DAP_ENC_BASE64_H_
#include <stddef.h> #include <stddef.h>
#include "dap_enc_key.h" #include "dap_enc_key.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* /*
* Calculates encode size from input size * Calculates encode size from input size
*/ */
#define DAP_ENC_BASE64_ENCODE_SIZE(in_size) (size_t)(((4 * in_size / 3) + 3) & ~3) #define DAP_ENC_BASE64_ENCODE_SIZE(in_size) (size_t)(((4 * in_size / 3) + 3) & ~3)
size_t dap_enc_base64_decode(const char * in, size_t in_size, void * out, dap_enc_data_type_t standard); size_t dap_enc_base64_decode(const char * in, size_t in_size, void * out, dap_enc_data_type_t standard);
size_t dap_enc_base64_encode(const void * in, size_t in_size, char * out, dap_enc_data_type_t standard); size_t dap_enc_base64_encode(const void * in, size_t in_size, char * out, dap_enc_data_type_t standard);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
#pragma once #pragma once
#include "sig_bliss/bliss_b_params.h" #include "sig_bliss/bliss_b_params.h"
#include "dap_enc_key.h" #include "dap_enc_key.h"
enum DAP_BLISS_SIGN_SECURITY { enum DAP_BLISS_SIGN_SECURITY {
TOY = 0, MAX_SPEED, MIN_SIZE, SPEED_AND_SECURITY, MAX_SECURITY TOY = 0, MAX_SPEED, MIN_SIZE, SPEED_AND_SECURITY, MAX_SECURITY
}; };
void dap_enc_sig_bliss_set_type(enum DAP_BLISS_SIGN_SECURITY type); void dap_enc_sig_bliss_set_type(enum DAP_BLISS_SIGN_SECURITY type);
void dap_enc_sig_bliss_key_new(struct dap_enc_key *key); void dap_enc_sig_bliss_key_new(struct dap_enc_key *key);
void dap_enc_sig_bliss_key_new_generate(struct dap_enc_key * key, const void *kex_buf, void dap_enc_sig_bliss_key_new_generate(struct dap_enc_key * key, const void *kex_buf,
size_t kex_size, const void * seed, size_t seed_size, size_t kex_size, const void * seed, size_t seed_size,
size_t key_size); size_t key_size);
int dap_enc_sig_bliss_get_sign(struct dap_enc_key * key,const void * msg, int dap_enc_sig_bliss_get_sign(struct dap_enc_key * key,const void * msg,
const size_t msg_size, void * signature, const size_t signature_size); const size_t msg_size, void * signature, const size_t signature_size);
int dap_enc_sig_bliss_verify_sign(struct dap_enc_key * key,const void * msg, int dap_enc_sig_bliss_verify_sign(struct dap_enc_key * key,const void * msg,
const size_t msg_size, void * signature, const size_t signature_size); const size_t msg_size, void * signature, const size_t signature_size);
void dap_enc_sig_bliss_key_delete(struct dap_enc_key *key); void dap_enc_sig_bliss_key_delete(struct dap_enc_key *key);
size_t dap_enc_sig_bliss_key_pub_output_size(struct dap_enc_key *l_key); size_t dap_enc_sig_bliss_key_pub_output_size(struct dap_enc_key *l_key);
int dap_enc_sig_bliss_key_pub_output(struct dap_enc_key *l_key, void * l_output); int dap_enc_sig_bliss_key_pub_output(struct dap_enc_key *l_key, void * l_output);
uint8_t* dap_enc_sig_bliss_write_signature(bliss_signature_t* a_sign, size_t *a_sign_out); uint8_t* dap_enc_sig_bliss_write_signature(bliss_signature_t* a_sign, size_t *a_sign_out);
bliss_signature_t* dap_enc_sig_bliss_read_signature(uint8_t *a_buf, size_t a_buflen); bliss_signature_t* dap_enc_sig_bliss_read_signature(uint8_t *a_buf, size_t a_buflen);
uint8_t* dap_enc_sig_bliss_write_private_key(const bliss_private_key_t* a_private_key, size_t *a_buflen_out); uint8_t* dap_enc_sig_bliss_write_private_key(const bliss_private_key_t* a_private_key, size_t *a_buflen_out);
uint8_t* dap_enc_sig_bliss_write_public_key(const bliss_public_key_t* a_public_key, size_t *a_buflen_out); uint8_t* dap_enc_sig_bliss_write_public_key(const bliss_public_key_t* a_public_key, size_t *a_buflen_out);
bliss_private_key_t* dap_enc_sig_bliss_read_private_key(uint8_t *a_buf, size_t a_buflen); bliss_private_key_t* dap_enc_sig_bliss_read_private_key(uint8_t *a_buf, size_t a_buflen);
bliss_public_key_t* dap_enc_sig_bliss_read_public_key(const uint8_t *a_buf, size_t a_buflen); bliss_public_key_t* dap_enc_sig_bliss_read_public_key(const uint8_t *a_buf, size_t a_buflen);
#pragma once #pragma once
typedef struct dap_enc_ca { typedef struct dap_enc_ca {
} dap_enc_ca_t; } dap_enc_ca_t;
#ifndef _DAP_ENC_DEFEO_H_ #ifndef _DAP_ENC_DEFEO_H_
#define _DAP_ENC_DEFEO_H_ #define _DAP_ENC_DEFEO_H_
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include <stdbool.h> #include <stdbool.h>
#include "dap_common.h" #include "dap_common.h"
#include "dap_enc_key.h" #include "dap_enc_key.h"
struct dap_enc_key; struct dap_enc_key;
typedef struct dap_enc_defeo_key{ typedef struct dap_enc_defeo_key{
unsigned int alice_msg_len; unsigned int alice_msg_len;
unsigned int bob_msg_len; unsigned int bob_msg_len;
unsigned int key_len; unsigned int key_len;
uint16_t estimated_classical_security; uint16_t estimated_classical_security;
uint16_t estimated_quantum_security; uint16_t estimated_quantum_security;
} dap_enc_defeo_key_t; } dap_enc_defeo_key_t;
#define LOG_TAG "dap_enc_defeo" #define LOG_TAG "dap_enc_defeo"
#define DAP_ENC_DEFEO_KEY(a) ((dap_enc_defeo_key_t *)((a)->_inheritor)) #define DAP_ENC_DEFEO_KEY(a) ((dap_enc_defeo_key_t *)((a)->_inheritor))
void dap_enc_defeo_key_new(struct dap_enc_key* a_key); void dap_enc_defeo_key_new(struct dap_enc_key* a_key);
void dap_enc_defeo_key_new_generate(struct dap_enc_key * a_key, const void *kex_buf, void dap_enc_defeo_key_new_generate(struct dap_enc_key * a_key, const void *kex_buf,
size_t kex_size, const void * seed, size_t seed_size, size_t kex_size, const void * seed, size_t seed_size,
size_t key_size); size_t key_size);
void dap_enc_defeo_key_new_from_data(struct dap_enc_key* a_key, void **a_priv, size_t a_in_size); void dap_enc_defeo_key_new_from_data(struct dap_enc_key* a_key, void **a_priv, size_t a_in_size);
void dap_enc_defeo_key_delete(struct dap_enc_key* a_key); void dap_enc_defeo_key_delete(struct dap_enc_key* a_key);
size_t dap_enc_defeo_gen_bob_shared_key(struct dap_enc_key* b_key, const void* a_pub, size_t a_pub_size, void **b_pub); size_t dap_enc_defeo_gen_bob_shared_key(struct dap_enc_key* b_key, const void* a_pub, size_t a_pub_size, void **b_pub);
size_t dap_enc_defeo_gen_alice_shared_key(struct dap_enc_key* a_key, const void* a_priv, size_t b_pub_size, unsigned char * b_pub); size_t dap_enc_defeo_gen_alice_shared_key(struct dap_enc_key* a_key, const void* a_priv, size_t b_pub_size, unsigned char * b_pub);
#endif #endif
#ifndef _DAP_ENC_DILITHIUM_H_
#define _DAP_ENC_DILITHIUM_H_
#include "sig_dilithium/dilithium_params.h"
#include "dap_enc_key.h"
enum DAP_DILITHIUM_SIGN_SECURITY {
DILITHIUM_TOY = 0, DILITHIUM_MAX_SPEED, DILITHIUM_MIN_SIZE, DILITHIUM_MAX_SECURITY
};
void dap_enc_sig_dilithium_set_type(enum DAP_DILITHIUM_SIGN_SECURITY type);
void dap_enc_sig_dilithium_key_new(struct dap_enc_key *key);
void dap_enc_sig_dilithium_key_new_generate(struct dap_enc_key * key, const void *kex_buf,
size_t kex_size, const void * seed, size_t seed_size,
size_t key_size);
size_t dap_enc_sig_dilithium_get_sign(struct dap_enc_key * key,const void * msg,
const size_t msg_size, void * signature, const size_t signature_size);
size_t dap_enc_sig_dilithium_verify_sign(struct dap_enc_key * key,const void * msg,
const size_t msg_size, void * signature, const size_t signature_size);
void dap_enc_sig_dilithium_key_delete(struct dap_enc_key * key);
size_t dap_enc_dilithium_calc_signature_size(void);
uint8_t* dap_enc_dilithium_write_signature(dilithium_signature_t* a_sign, size_t *a_sign_out);
dilithium_signature_t* dap_enc_dilithium_read_signature(uint8_t *a_buf, size_t a_buflen);
uint8_t* dap_enc_dilithium_write_private_key(const dilithium_private_key_t* a_private_key, size_t *a_buflen_out);
uint8_t* dap_enc_dilithium_write_public_key(const dilithium_public_key_t* a_public_key, size_t *a_buflen_out);
dilithium_private_key_t* dap_enc_dilithium_read_private_key(const uint8_t *a_buf, size_t a_buflen);
dilithium_public_key_t* dap_enc_dilithium_read_public_key(const uint8_t *a_buf, size_t a_buflen);
#endif
#ifndef _DAP_ENC_AES_H_ #ifndef _DAP_ENC_AES_H_
#define _DAP_ENC_AES_H_ #define _DAP_ENC_AES_H_
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include "iaes/dap_iaes_proto.h" #include "iaes/dap_iaes_proto.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
struct dap_enc_key; struct dap_enc_key;
void dap_enc_aes_key_new(struct dap_enc_key * a_key); void dap_enc_aes_key_new(struct dap_enc_key * a_key);
void dap_enc_aes_key_delete(struct dap_enc_key *a_key); void dap_enc_aes_key_delete(struct dap_enc_key *a_key);
void dap_enc_aes_key_generate(struct dap_enc_key * a_key, const void *kex_buf, size_t kex_size, void dap_enc_aes_key_generate(struct dap_enc_key * a_key, const void *kex_buf, size_t kex_size,
const void * seed, size_t seed_size, size_t key_size); const void * seed, size_t seed_size, size_t key_size);
size_t dap_enc_iaes256_calc_decode_size(const size_t size_in); size_t dap_enc_iaes256_calc_decode_size(const size_t size_in);
size_t dap_enc_iaes256_calc_encode_size(const size_t size_in); size_t dap_enc_iaes256_calc_encode_size(const size_t size_in);
size_t dap_enc_iaes256_cbc_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); size_t dap_enc_iaes256_cbc_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out);
size_t dap_enc_iaes256_cbc_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); size_t dap_enc_iaes256_cbc_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out);
// Writes result ( out ) in already allocated buffer // Writes result ( out ) in already allocated buffer
size_t dap_enc_iaes256_cbc_decrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t dap_enc_iaes256_cbc_decrypt_fast(struct dap_enc_key * a_key, const void * a_in,
size_t a_in_size, void * buf_out, size_t buf_out_size); size_t a_in_size, void * buf_out, size_t buf_out_size);
// if "a_in size mod IAES_BLOCK_SIZE = 0" encryption will be faster // if "a_in size mod IAES_BLOCK_SIZE = 0" encryption will be faster
size_t dap_enc_iaes256_cbc_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t dap_enc_iaes256_cbc_encrypt_fast(struct dap_enc_key * a_key, const void * a_in,
size_t a_in_size, void * buf_out, size_t buf_out_size); size_t a_in_size, void * buf_out, size_t buf_out_size);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
...@@ -110,6 +110,8 @@ typedef enum dap_enc_key_type{ DAP_ENC_KEY_TYPE_IAES, // Symmetric AES ...@@ -110,6 +110,8 @@ typedef enum dap_enc_key_type{ DAP_ENC_KEY_TYPE_IAES, // Symmetric AES
DAP_ENC_KEY_TYPE_SIG_TESLA, // signature based on Ring_LWE problem with zero-knowledge proof as specified in DAP_ENC_KEY_TYPE_SIG_TESLA, // signature based on Ring_LWE problem with zero-knowledge proof as specified in
// Post-Quantum Zero-Knowledge and Signatures from Symmetric-Key Primitives // Post-Quantum Zero-Knowledge and Signatures from Symmetric-Key Primitives
DAP_ENC_KEY_TYPE_SIG_DILITHIUM,
DAP_ENC_KEY_TYPE_NULL = 0 DAP_ENC_KEY_TYPE_NULL = 0
} dap_enc_key_type_t; } dap_enc_key_type_t;
......
#ifndef _DAP_ENC_MSRLN_H_ #ifndef _DAP_ENC_MSRLN_H_
#define _DAP_ENC_MSRLN_H_ #define _DAP_ENC_MSRLN_H_
#include <stddef.h> #include <stddef.h>
#include "msrln/msrln.h" #include "msrln/msrln.h"
#include "dap_enc_key.h" #include "dap_enc_key.h"
//typedef struct dap_enc_key dap_enc_key_t; //typedef struct dap_enc_key dap_enc_key_t;
//typedef struct dap_enc_msrln_key{ //typedef struct dap_enc_msrln_key{
// void* private_key; // void* private_key;
// size_t private_length; // size_t private_length;
// uint8_t* public_key; // uint8_t* public_key;
// size_t public_length; // size_t public_length;
//} dap_enc_msrln_key_t; //} dap_enc_msrln_key_t;
#define DAP_ENC_KEY_TYPE_MSRLN(a) ((dap_enc_msrln_key_t *)((a)->_inheritor)) #define DAP_ENC_KEY_TYPE_MSRLN(a) ((dap_enc_msrln_key_t *)((a)->_inheritor))
void dap_enc_msrln_key_new(struct dap_enc_key* a_key); void dap_enc_msrln_key_new(struct dap_enc_key* a_key);
void dap_enc_msrln_key_generate(struct dap_enc_key * a_key, const void *kex_buf, void dap_enc_msrln_key_generate(struct dap_enc_key * a_key, const void *kex_buf,
size_t kex_size, const void * seed, size_t seed_size, size_t kex_size, const void * seed, size_t seed_size,
size_t key_size); size_t key_size);
//void dap_enc_msrln_key_new_from_data(struct dap_enc_key* a_key, void **a_priv, size_t *a_in_size); //void dap_enc_msrln_key_new_from_data(struct dap_enc_key* a_key, void **a_priv, size_t *a_in_size);
void dap_enc_msrln_key_new_from_data_public(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size); void dap_enc_msrln_key_new_from_data_public(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size);
void dap_enc_msrln_key_delete(struct dap_enc_key* a_key); void dap_enc_msrln_key_delete(struct dap_enc_key* a_key);
size_t dap_enc_msrln_key_public_raw(dap_enc_key_t *a_key, void ** a_key_public); size_t dap_enc_msrln_key_public_raw(dap_enc_key_t *a_key, void ** a_key_public);
size_t dap_enc_msrln_gen_bob_shared_key(struct dap_enc_key* b_key, const void *a_pub, size_t a_pub_size, void **b_pub); size_t dap_enc_msrln_gen_bob_shared_key(struct dap_enc_key* b_key, const void *a_pub, size_t a_pub_size, void **b_pub);
size_t dap_enc_msrln_gen_alice_shared_key(struct dap_enc_key* a_key, const void* a_priv, const size_t b_key_len, unsigned char * b_pub); size_t dap_enc_msrln_gen_alice_shared_key(struct dap_enc_key* a_key, const void* a_priv, const size_t b_key_len, unsigned char * b_pub);
#endif #endif
#ifndef _DAP_ENC_OAES_H_ #ifndef _DAP_ENC_OAES_H_
#define _DAP_ENC_OAES_H_ #define _DAP_ENC_OAES_H_
#include <stddef.h> #include <stddef.h>
#include "dap_enc_key.h" #include "dap_enc_key.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
void dap_enc_oaes_key_new(struct dap_enc_key * a_key); void dap_enc_oaes_key_new(struct dap_enc_key * a_key);
void dap_enc_oaes_key_delete(struct dap_enc_key *a_key); void dap_enc_oaes_key_delete(struct dap_enc_key *a_key);
void dap_enc_oaes_key_generate(struct dap_enc_key * a_key, const void *kex_buf, void dap_enc_oaes_key_generate(struct dap_enc_key * a_key, const void *kex_buf,
size_t kex_size, const void * seed, size_t seed_size, size_t key_size); size_t kex_size, const void * seed, size_t seed_size, size_t key_size);
size_t dap_enc_oaes_calc_decode_size(const size_t size_in); size_t dap_enc_oaes_calc_decode_size(const size_t size_in);
size_t dap_enc_oaes_calc_encode_size(const size_t size_in); size_t dap_enc_oaes_calc_encode_size(const size_t size_in);
size_t dap_enc_oaes_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); size_t dap_enc_oaes_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out);
size_t dap_enc_oaes_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); size_t dap_enc_oaes_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out);
// Writes result ( out ) in already allocated buffer // Writes result ( out ) in already allocated buffer
size_t dap_enc_oaes_decrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t dap_enc_oaes_decrypt_fast(struct dap_enc_key * a_key, const void * a_in,
size_t a_in_size, void * buf_out, size_t buf_out_size); size_t a_in_size, void * buf_out, size_t buf_out_size);
// Writes result ( out ) in already allocated buffer // Writes result ( out ) in already allocated buffer
size_t dap_enc_oaes_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t dap_enc_oaes_encrypt_fast(struct dap_enc_key * a_key, const void * a_in,
size_t a_in_size, void * buf_out, size_t buf_out_size); size_t a_in_size, void * buf_out, size_t buf_out_size);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
Subproject commit 6c5dd5a5b0de5573b03ed144c651352467a56101
bin/
var/
__pycache__
\ No newline at end of file
See in file README.markdown, after the line starting with "# Under which license is the KCP distributed?".