Skip to content
This repository was archived by the owner on Feb 17, 2025. It is now read-only.

Commit 53b68a8

Browse files
Merge pull request #220 from NilFoundation/directly-include-kdf
Directly include kdf
2 parents 825f253 + 1f9bbcc commit 53b68a8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+7021
-4
lines changed

.gitmodules

-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010
[submodule "crypto3-hash"]
1111
path = libs/hash
1212
url = ../../NilFoundation/crypto3-hash.git
13-
[submodule "crypto3-kdf"]
14-
path = libs/kdf
15-
url = ../../NilFoundation/crypto3-kdf.git
1613
[submodule "crypto3-mac"]
1714
path = libs/mac
1815
url = ../../NilFoundation/crypto3-mac.git

libs/kdf

-1
This file was deleted.

libs/kdf/CMakeLists.txt

+238
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
#---------------------------------------------------------------------------#
2+
# Copyright (c) 2018-2020 Mikhail Komarov <[email protected]>
3+
#
4+
# Distributed under the Boost Software License, Version 1.0
5+
# See accompanying file LICENSE_1_0.txt or copy at
6+
# http://www.boost.org/LICENSE_1_0.txt
7+
#---------------------------------------------------------------------------#
8+
9+
cmake_minimum_required(VERSION 2.8.12)
10+
11+
cmake_policy(SET CMP0028 NEW)
12+
cmake_policy(SET CMP0042 NEW)
13+
cmake_policy(SET CMP0048 NEW)
14+
cmake_policy(SET CMP0057 NEW)
15+
cmake_policy(SET CMP0076 NEW)
16+
17+
list(APPEND CMAKE_MODULE_PATH
18+
"${CMAKE_CURRENT_LIST_DIR}/cmake"
19+
"${CMAKE_CURRENT_LIST_DIR}/cmake/packages"
20+
"${CMAKE_CURRENT_LIST_DIR}/cmake/modules/share/modules/cmake")
21+
22+
include(CMDeploy)
23+
include(CMSetupVersion)
24+
include(CMConfig)
25+
26+
if(NOT CMAKE_WORKSPACE_NAME OR NOT ("${CMAKE_WORKSPACE_NAME}" STREQUAL "crypto3"))
27+
cm_workspace(crypto3)
28+
endif()
29+
30+
cm_project(kdf WORKSPACE_NAME ${CMAKE_WORKSPACE_NAME} LANGUAGES C CXX)
31+
32+
cm_find_package(${CMAKE_WORKSPACE_NAME}_block)
33+
cm_find_package(${CMAKE_WORKSPACE_NAME}_hash)
34+
cm_find_package(${CMAKE_WORKSPACE_NAME}_mac)
35+
36+
if(NOT Boost)
37+
find_package(Boost REQUIRED)
38+
endif()
39+
40+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
41+
include/nil/crypto3/kdf/algorithm/derive.hpp
42+
43+
include/nil/crypto3/kdf/kdf.hpp)
44+
45+
list(APPEND ${CURRENT_PROJECT_NAME}_UNGROUPED_SOURCES
46+
)
47+
48+
option(CRYPTO3_KDF_HKDF "Build with HKDF support" TRUE)
49+
option(CRYPTO3_KDF_KDF1 "Build with HKDF support" TRUE)
50+
option(CRYPTO3_KDF_KDF1_18033 "Build with HKDF support" TRUE)
51+
option(CRYPTO3_KDF_KDF2 "Build with HKDF support" TRUE)
52+
option(CRYPTO3_KDF_TLS_PRF "Build with HKDF support" TRUE)
53+
option(CRYPTO3_KDF_X942_PRF "Build with HKDF support" TRUE)
54+
option(CRYPTO3_KDF_SP800_108 "Build with HKDF support" TRUE)
55+
option(CRYPTO3_KDF_SP800_56C "Build with HKDF support" TRUE)
56+
57+
if(CRYPTO3_KDF_HKDF)
58+
list(APPEND ${CURRENT_PROJECT_NAME}_HKDF_HEADERS
59+
include/nil/crypto3/kdf/hkdf.hpp
60+
)
61+
62+
list(APPEND ${CURRENT_PROJECT_NAME}_HKDF_SOURCES
63+
)
64+
65+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_HKDF)
66+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
67+
${${CURRENT_PROJECT_NAME}_HKDF_HEADERS}
68+
)
69+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
70+
${${CURRENT_PROJECT_NAME}_HKDF_SOURCES}
71+
)
72+
endif()
73+
74+
if(CRYPTO3_KDF_KDF1)
75+
list(APPEND ${CURRENT_PROJECT_NAME}_KDF1_HEADERS
76+
include/nil/crypto3/kdf/kdf1.hpp
77+
)
78+
79+
list(APPEND ${CURRENT_PROJECT_NAME}_KDF1_SOURCES
80+
)
81+
82+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_KDF1)
83+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
84+
${${CURRENT_PROJECT_NAME}_KDF1_HEADERS}
85+
)
86+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
87+
${${CURRENT_PROJECT_NAME}_KDF1_SOURCES}
88+
)
89+
endif()
90+
91+
if(CRYPTO3_KDF_KDF1_18033)
92+
list(APPEND ${CURRENT_PROJECT_NAME}_KDF1_18033_HEADERS
93+
include/nil/crypto3/kdf/kdf1_iso18033.hpp
94+
)
95+
96+
list(APPEND ${CURRENT_PROJECT_NAME}_KDF1_18033_SOURCES
97+
)
98+
99+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_KDF1_18033)
100+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
101+
${${CURRENT_PROJECT_NAME}_KDF1_18033_HEADERS}
102+
)
103+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
104+
${${CURRENT_PROJECT_NAME}_KDF1_18033_SOURCES}
105+
)
106+
endif()
107+
108+
if(CRYPTO3_KDF_KDF2)
109+
list(APPEND ${CURRENT_PROJECT_NAME}_KDF2_HEADERS
110+
include/nil/crypto3/kdf/kdf2.hpp
111+
)
112+
113+
list(APPEND ${CURRENT_PROJECT_NAME}_KDF2_SOURCES
114+
)
115+
116+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_KDF2)
117+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
118+
${${CURRENT_PROJECT_NAME}_KDF2_HEADERS}
119+
)
120+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
121+
${${CURRENT_PROJECT_NAME}_KDF2_SOURCES}
122+
)
123+
endif()
124+
125+
if(CRYPTO3_KDF_TLS_PRF)
126+
list(APPEND ${CURRENT_PROJECT_NAME}_TLS_PRF_HEADERS
127+
include/nil/crypto3/kdf/prf_tls.hpp
128+
)
129+
130+
list(APPEND ${CURRENT_PROJECT_NAME}_TLS_PRF_SOURCES
131+
)
132+
133+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_TLS_V10_PRF)
134+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_TLS_V12_PRF)
135+
136+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
137+
${${CURRENT_PROJECT_NAME}_TLS_PRF_HEADERS}
138+
)
139+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
140+
${${CURRENT_PROJECT_NAME}_TLS_PRF_SOURCES}
141+
)
142+
endif()
143+
144+
if(CRYPTO3_KDF_PRF_X942)
145+
list(APPEND ${CURRENT_PROJECT_NAME}_PRF_X942_HEADERS
146+
include/nil/crypto3/kdf/prf_x942.hpp
147+
)
148+
149+
list(APPEND ${CURRENT_PROJECT_NAME}_PRF_X942_SOURCES
150+
)
151+
152+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_X942_PRF)
153+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
154+
${${CURRENT_PROJECT_NAME}_PRF_X942_HEADERS}
155+
)
156+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
157+
${${CURRENT_PROJECT_NAME}_PRF_X942_SOURCES}
158+
)
159+
endif()
160+
161+
if(CRYPTO3_KDF_SP800_108)
162+
list(APPEND ${CURRENT_PROJECT_NAME}_SP800_108_HEADERS
163+
include/nil/crypto3/kdf/sp800_108.hpp
164+
)
165+
166+
list(APPEND ${CURRENT_PROJECT_NAME}_SP800_108_SOURCES
167+
)
168+
169+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_SP800_108)
170+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
171+
${${CURRENT_PROJECT_NAME}_SP800_108_HEADERS}
172+
)
173+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
174+
${${CURRENT_PROJECT_NAME}_SP800_108_SOURCES}
175+
)
176+
endif()
177+
178+
if(CRYPTO3_KDF_SP800_56C)
179+
list(APPEND ${CURRENT_PROJECT_NAME}_SP800_56C_HEADERS
180+
include/nil/crypto3/kdf/sp800_56c.hpp
181+
)
182+
183+
list(APPEND ${CURRENT_PROJECT_NAME}_SP800_56C_SOURCES
184+
)
185+
186+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_SP800_56C)
187+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
188+
${${CURRENT_PROJECT_NAME}_SP800_56C_HEADERS}
189+
)
190+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
191+
${${CURRENT_PROJECT_NAME}_SP800_56C_SOURCES}
192+
)
193+
endif()
194+
195+
if(CRYPTO3_KDF_SP800_56A)
196+
list(APPEND ${CURRENT_PROJECT_NAME}_SP800_56A_HEADERS
197+
include/nil/crypto3/kdf/sp800_56a.hpp
198+
)
199+
200+
list(APPEND ${CURRENT_PROJECT_NAME}_SP800_56A_SOURCES
201+
)
202+
203+
add_definitions(-D${CMAKE_UPPER_WORKSPACE_NAME}_HAS_SP800_56A)
204+
list(APPEND ${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS
205+
${${CURRENT_PROJECT_NAME}_SP800_56A_HEADERS}
206+
)
207+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
208+
${${CURRENT_PROJECT_NAME}_SP800_56A_SOURCES}
209+
)
210+
endif()
211+
212+
list(APPEND ${CURRENT_PROJECT_NAME}_HEADERS
213+
${${CURRENT_PROJECT_NAME}_PUBLIC_HEADERS})
214+
215+
list(APPEND ${CURRENT_PROJECT_NAME}_SOURCES
216+
${${CURRENT_PROJECT_NAME}_UNGROUPED_SOURCES})
217+
218+
cm_setup_version(VERSION 0.1.0 PREFIX ${CMAKE_WORKSPACE_NAME}_${CURRENT_PROJECT_NAME})
219+
220+
add_library(${CMAKE_WORKSPACE_NAME}_${CURRENT_PROJECT_NAME} INTERFACE)
221+
set_target_properties(${CMAKE_WORKSPACE_NAME}_${CURRENT_PROJECT_NAME} PROPERTIES
222+
EXPORT_NAME ${CURRENT_PROJECT_NAME})
223+
224+
target_link_libraries(${CMAKE_WORKSPACE_NAME}_${CURRENT_PROJECT_NAME} INTERFACE
225+
${CMAKE_WORKSPACE_NAME}::block
226+
${CMAKE_WORKSPACE_NAME}::hash
227+
${CMAKE_WORKSPACE_NAME}::mac)
228+
229+
target_include_directories(${CMAKE_WORKSPACE_NAME}_${CURRENT_PROJECT_NAME} INTERFACE
230+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
231+
"$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>")
232+
233+
cm_deploy(TARGETS ${CMAKE_WORKSPACE_NAME}_${CURRENT_PROJECT_NAME}
234+
INCLUDE include
235+
NAMESPACE ${CMAKE_WORKSPACE_NAME}::)
236+
237+
include(CMTest)
238+
cm_add_test_subdirectory(test)

libs/kdf/crypto3.kdf.podspec.json

+132
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
{
2+
"name": "crypto3.kdf",
3+
"version": "0.1.0",
4+
"summary": "=nil; Crypto3 C++ Cryptography Suite KDF",
5+
"description": "Crypto3.KDF library extends the =nil; Foundation's cryptography suite and provides a set of key derivation functions implemented in way C++ standard library implies: concepts, algorithms, predictable behavior, latest standard features support and clean architecture without compromising security and performance.",
6+
"homepage": "http://crypto3.nil.foundation/projects/crypto3",
7+
"license": "Boost Software License",
8+
"authors": {
9+
"Mikhail Komarov": "[email protected]"
10+
},
11+
"platforms": {
12+
"ios": "5.0",
13+
"osx": "10.7"
14+
},
15+
"source": {
16+
"git": "https://github.com/nilfoundation/kdf.git",
17+
"branch": "master"
18+
},
19+
"xcconfig": {
20+
"CLANG_CXX_LANGUAGE_STANDARD": "c++14",
21+
"CLANG_CXX_LIBRARY": "libc++",
22+
"HEADER_SEARCH_PATHS": "\"${PODS_ROOT}/include/\""
23+
},
24+
"subspecs": [
25+
{
26+
"name": "include",
27+
"subspecs": [
28+
{
29+
"name": "nil",
30+
"subspecs": [
31+
{
32+
"name": "crypto3",
33+
"subspecs": [
34+
{
35+
"name": "detail",
36+
"source_files": [
37+
"include/nil/crypto3/detail/*.{hpp}"
38+
]
39+
},
40+
{
41+
"name": "kdf",
42+
"source_files": [
43+
"include/nil/crypto3/kdf/*.{hpp}"
44+
],
45+
"subspecs": [
46+
{
47+
"name": "algorithm",
48+
"source_files": [
49+
"include/nil/crypto3/kdf/algorithm/*.{hpp}"
50+
]
51+
},
52+
{
53+
"name": "adaptor",
54+
"source_files": [
55+
"include/nil/crypto3/kdf/adaptor/*.{hpp}"
56+
]
57+
},
58+
{
59+
"name": "accumulators",
60+
"source_files": [
61+
"include/nil/crypto3/kdf/accumulators/*.{hpp}"
62+
]
63+
},
64+
{
65+
"name": "detail",
66+
"subspecs": [
67+
{
68+
"name": "hkdf",
69+
"source_files": [
70+
"include/nil/crypto3/kdf/detail/hkdf/*.{hpp}"
71+
]
72+
},
73+
{
74+
"name": "kdf1",
75+
"source_files": [
76+
"include/nil/crypto3/kdf/detail/kdf1/*.{hpp}"
77+
]
78+
},
79+
{
80+
"name": "kdf2",
81+
"source_files": [
82+
"include/nil/crypto3/kdf/detail/kdf2/*.{hpp}"
83+
]
84+
},
85+
{
86+
"name": "kdf_iso18033",
87+
"source_files": [
88+
"include/nil/crypto3/kdf/detail/kdf_iso18033/*.{hpp}"
89+
]
90+
},
91+
{
92+
"name": "prf_tls",
93+
"source_files": [
94+
"include/nil/crypto3/kdf/detail/prf_tls/*.{hpp}"
95+
]
96+
},
97+
{
98+
"name": "prf_x942",
99+
"source_files": [
100+
"include/nil/crypto3/kdf/detail/prf_x942/*.{hpp}"
101+
]
102+
},
103+
{
104+
"name": "sp800_56a",
105+
"source_files": [
106+
"include/nil/crypto3/kdf/detail/sp800_56a/*.{hpp}"
107+
]
108+
},
109+
{
110+
"name": "sp800_56c",
111+
"source_files": [
112+
"include/nil/crypto3/kdf/detail/sp800_56c/*.{hpp}"
113+
]
114+
},
115+
{
116+
"name": "sp800_108",
117+
"source_files": [
118+
"include/nil/crypto3/kdf/detail/sp800_108/*.{hpp}"
119+
]
120+
}
121+
]
122+
}
123+
]
124+
}
125+
]
126+
}
127+
]
128+
}
129+
]
130+
}
131+
]
132+
}

0 commit comments

Comments
 (0)