Skip to content

Commit b652aae

Browse files
remove crypto dependency from sdk
--------- Co-authored-by: Jonathan M. Henson <[email protected]>
1 parent 75ea490 commit b652aae

33 files changed

+680
-5306
lines changed

CMakeLists.txt

+16-24
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ if (LEGACY_BUILD)
4141
option(ENABLE_TESTING "Flag to enable/disable building unit and integration tests" ON)
4242
option(AUTORUN_UNIT_TESTS "Flag to enable/disable automatically run unit tests after building" ON)
4343
option(ANDROID_BUILD_CURL "When building for Android, should curl be built as well" ON)
44-
option(ANDROID_BUILD_OPENSSL "When building for Android, should Openssl be built as well" ON)
4544
option(ANDROID_BUILD_ZLIB "When building for Android, should Zlib be built as well" ON)
4645
option(FORCE_CURL "Forces usage of the Curl client rather than the default OS-specific api" OFF)
4746
option(ENABLE_ADDRESS_SANITIZER "Flags to enable/disable Address Sanitizer for gcc or clang" OFF)
@@ -66,7 +65,6 @@ if (LEGACY_BUILD)
6665
option(BUILD_OPTEL_OTLP_BENCHMARKS "Enables building the benchmark tests with open telemetry OTLP clients" OFF)
6766
option(USE_TLS_V1_2 "Set http client to enforce TLS 1.2" ON)
6867
option(USE_TLS_V1_3 "Set http client to enforce TLS 1.3" OFF)
69-
option(AWS_USE_CRYPTO_SHARED_LIBS "Forces FindCrypto to use a shared crypto library if found. regardless of the value of BUILD_SHARED_LIBS" OFF)
7068

7169
set(AWS_USER_AGENT_CUSTOMIZATION "" CACHE STRING "User agent extension")
7270
set(AWS_TEST_REGION "US_EAST_1" CACHE STRING "Region to target integration tests against")
@@ -109,10 +107,6 @@ if (LEGACY_BUILD)
109107
set(BoldWhite "${Esc}[1;37m")
110108
endif ()
111109

112-
if (NOT USE_OPENSSL)
113-
message(WARNING "Turning off USE_OPENSSL will install AWS-LC as replacement of OpenSSL in the system default directory. This is an experimental feature. Do not use if you have an OpenSSL installation in your system already.")
114-
endif ()
115-
116110
# backwards compatibility with old command line params
117111
if ("${STATIC_LINKING}" STREQUAL "1")
118112
set(BUILD_SHARED_LIBS OFF)
@@ -230,22 +224,28 @@ if (LEGACY_BUILD)
230224
set(BUILD_TESTING_PREV ${BUILD_TESTING})
231225
set(BUILD_TESTING OFF CACHE BOOL "Disable all tests in dependencies.")
232226
# TODO: Use same BUILD_SHARED_LIBS for Aws Common Runtime dependencies.
233-
# libcurl and aws-sdk-cpp-core may link to different libcrypto, which leads to some issues for shared build.
234-
if (ENABLE_OPENSSL_ENCRYPTION)
235-
set(BUILD_SHARED_LIBS_PREV ${BUILD_SHARED_LIBS})
236-
set(BUILD_SHARED_LIBS OFF)
237-
endif ()
238227
set(CRT_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
239228
add_subdirectory(crt/aws-crt-cpp)
240229
set(BUILD_TESTING ${BUILD_TESTING_PREV})
241-
if (ENABLE_OPENSSL_ENCRYPTION)
242-
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_PREV})
243-
endif ()
244230
else ()
245-
include(AwsFindPackage)
231+
# This is required in order to append /lib/cmake to each element in CMAKE_PREFIX_PATH
232+
set(AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR}/cmake")
233+
string(REPLACE ";" "${AWS_MODULE_DIR};" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR}")
234+
# Append that generated list to the module search path
235+
list(APPEND CMAKE_MODULE_PATH ${AWS_MODULE_PATH})
246236
set(IN_SOURCE_BUILD OFF)
247237
endif ()
248-
set(AWS_COMMON_RUNTIME_LIBS "aws-crt-cpp;aws-c-auth;aws-c-cal;aws-c-common;aws-c-compression;aws-c-event-stream;aws-c-http;aws-c-io;aws-c-mqtt;aws-c-s3;aws-checksums;aws-c-sdkutils")
238+
aws_use_package(aws-crt-cpp)
239+
aws_use_package(aws-c-http)
240+
aws_use_package(aws-c-mqtt)
241+
aws_use_package(aws-c-cal)
242+
aws_use_package(aws-c-auth)
243+
aws_use_package(aws-c-common)
244+
aws_use_package(aws-c-io)
245+
aws_use_package(aws-checksums)
246+
aws_use_package(aws-c-event-stream)
247+
aws_use_package(aws-c-s3)
248+
set(AWS_COMMON_RUNTIME_LIBS ${DEP_AWS_LIBS})
249249

250250
include(compiler_settings)
251251
# Instead of calling functions/macros inside included cmake scripts, we should call them in our main CMakeList.txt
@@ -256,14 +256,6 @@ if (LEGACY_BUILD)
256256

257257
include(utilities)
258258

259-
if (ENABLE_BCRYPT_ENCRYPTION)
260-
set(CRYPTO_LIBS Bcrypt)
261-
set(CRYPTO_LIBS_ABSTRACT_NAME Bcrypt)
262-
elseif (ENABLE_OPENSSL_ENCRYPTION)
263-
set(CRYPTO_LIBS ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES})
264-
set(CRYPTO_LIBS_ABSTRACT_NAME crypto ssl z)
265-
endif ()
266-
267259
if (ENABLE_CURL_CLIENT)
268260
set(CLIENT_LIBS ${CURL_LIBRARIES})
269261
set(CLIENT_LIBS_ABSTRACT_NAME curl)

cmake/Findcrypto.cmake

-113
This file was deleted.

cmake/external_dependencies.cmake

+3-36
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,10 @@ endif()
1919

2020

2121
# Encryption control
22-
if(NOT NO_ENCRYPTION)
23-
if(PLATFORM_WINDOWS)
24-
set(ENABLE_BCRYPT_ENCRYPTION ON)
25-
elseif(PLATFORM_LINUX OR PLATFORM_ANDROID)
26-
set(ENABLE_OPENSSL_ENCRYPTION ON)
27-
elseif(PLATFORM_APPLE)
28-
set(ENABLE_COMMONCRYPTO_ENCRYPTION ON)
29-
endif()
30-
else()
22+
# TODO: BYO Crypto is not implemented for CRT/Was not working in the latest version of the SDK.
23+
if(NO_ENCRYPTION)
24+
message(FATAL_ERROR "BYO_CRYPTO is not currently implemented and has been broken since version 1.9")
3125
set(ENABLE_INJECTED_ENCRYPTION ON)
32-
endif()
33-
34-
if(ENABLE_BCRYPT_ENCRYPTION)
35-
add_definitions(-DENABLE_BCRYPT_ENCRYPTION)
36-
set(CRYPTO_LIBS Bcrypt)
37-
set(CRYPTO_LIBS_ABSTRACT_NAME Bcrypt)
38-
message(STATUS "Encryption: Bcrypt")
39-
elseif(ENABLE_OPENSSL_ENCRYPTION)
40-
add_definitions(-DENABLE_OPENSSL_ENCRYPTION)
41-
message(STATUS "Encryption: LibCrypto")
42-
43-
set(CRYPTO_TARGET_NAME "AWS::crypto")
44-
if(PLATFORM_ANDROID AND ANDROID_BUILD_OPENSSL)
45-
set(BUILD_OPENSSL 1)
46-
set(CRYPTO_TARGET_NAME "crypto")
47-
set(USE_OPENSSL ON)
48-
message(STATUS " Building Openssl as part of AWS SDK")
49-
else()
50-
find_package(crypto REQUIRED)
51-
endif()
52-
set(CRYPTO_LIBS ${CRYPTO_TARGET_NAME} ${ZLIB_LIBRARIES})
53-
# ssl depends on libcrypto
54-
set(CRYPTO_LIBS_ABSTRACT_NAME ${CRYPTO_TARGET_NAME} ssl z)
55-
elseif(ENABLE_COMMONCRYPTO_ENCRYPTION)
56-
add_definitions(-DENABLE_COMMONCRYPTO_ENCRYPTION)
57-
message(STATUS "Encryption: CommonCrypto")
58-
elseif(ENABLE_INJECTED_ENCRYPTION)
5926
message(STATUS "Encryption: None")
6027
message(STATUS "You will need to inject an encryption implementation before making any http requests!")
6128
endif()

src/aws-cpp-sdk-core/.gitignore

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# exceptions due to naming conflicts between our external projects (curl/openssl) and implementations that use those libraries
2-
!source/utils/crypto/openssl
32
!source/http/curl
43
!source/external
54
!include/aws/core/external
65
!include/aws/core/http/curl
7-
!include/aws/core/utils/crypto/openssl

src/aws-cpp-sdk-core/CMakeLists.txt

+13-44
Original file line numberDiff line numberDiff line change
@@ -247,16 +247,10 @@ else()
247247
file(GLOB NET_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/source/net/*.cpp")
248248
endif()
249249

250-
# encryption implementations
251-
if(ENABLE_BCRYPT_ENCRYPTION)
252-
file(GLOB UTILS_CRYPTO_BCRYPT_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/aws/core/utils/crypto/bcrypt/*.h")
253-
file(GLOB UTILS_CRYPTO_BCRYPT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/source/utils/crypto/bcrypt/*.cpp")
254-
elseif(ENABLE_OPENSSL_ENCRYPTION)
255-
file(GLOB UTILS_CRYPTO_OPENSSL_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/aws/core/utils/crypto/openssl/*.h")
256-
file(GLOB UTILS_CRYPTO_OPENSSL_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/source/utils/crypto/openssl/*.cpp")
257-
elseif(ENABLE_COMMONCRYPTO_ENCRYPTION)
258-
file(GLOB UTILS_CRYPTO_COMMONCRYPTO_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/aws/core/utils/crypto/commoncrypto/*.h")
259-
file(GLOB UTILS_CRYPTO_COMMONCRYPTO_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/source/utils/crypto/commoncrypto/*.cpp")
250+
# encryption implementation
251+
if (NOT NO_ENCRYPTION)
252+
file(GLOB UTILS_CRYPTO_CRT_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/aws/core/utils/crypto/crt/*.h")
253+
file(GLOB UTILS_CRYPTO_CRT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/source/utils/crypto/crt/*.cpp")
260254
endif()
261255

262256
if (BUILD_OPTEL)
@@ -287,8 +281,7 @@ file(GLOB AWS_NATIVE_SDK_COMMON_SRC
287281
${UTILS_MEMORY_SOURCE}
288282
${UTILS_COMPONENT_REGISTRY_SOURCE}
289283
${UTILS_MEMORY_STL_SOURCE}
290-
${UTILS_CRYPTO_OPENSSL_SOURCE}
291-
${UTILS_CRYPTO_COMMONCRYPTO_SOURCE}
284+
${UTILS_CRYPTO_CRT_SOURCE}
292285
${SMITHY_SOURCE}
293286
${SMITHY_TRACING_SOURCE}
294287
)
@@ -329,9 +322,6 @@ file(GLOB AWS_NATIVE_SDK_COMMON_HEADERS
329322
${TINYXML2_HEADERS}
330323
${HTTP_CURL_CLIENT_HEADERS}
331324
${HTTP_WINDOWS_CLIENT_HEADERS}
332-
${UTILS_CRYPTO_BCRYPT_HEADERS}
333-
${UTILS_CRYPTO_OPENSSL_HEADERS}
334-
${UTILS_CRYPTO_COMMONCRYPTO_HEADERS}
335325
${SMITHY_HEADERS}
336326
${SMITHY_TRACING_HEADERS}
337327
${OPTEL_HEADERS}
@@ -435,6 +425,7 @@ if(MSVC)
435425
source_group("Header Files\\aws\\core\\utils" FILES ${UTILS_HEADERS})
436426
source_group("Header Files\\aws\\core\\utils\\base64" FILES ${UTILS_BASE64_HEADERS})
437427
source_group("Header Files\\aws\\core\\utils\\crypto" FILES ${UTILS_CRYPTO_HEADERS})
428+
source_group("Header Files\\aws\\core\\utils\\crypto\\crt" FILES ${UTILS_CRYPTO_CRT_HEADERS})
438429
source_group("Header Files\\aws\\core\\utils\\event" FILES ${UTILS_EVENT_HEADERS})
439430
source_group("Header Files\\aws\\core\\utils\\exceptions" FILES ${UTILS_EXCEPTIONS_HEADERS})
440431
source_group("Header Files\\aws\\core\\utils\\json" FILES ${UTILS_JSON_HEADERS})
@@ -459,16 +450,6 @@ if(MSVC)
459450
endif()
460451
source_group("Header Files\\aws\\core\\http\\crt" FILES ${CRT_HTTP_HEADERS})
461452

462-
463-
# encryption conditional headers
464-
if(ENABLE_BCRYPT_ENCRYPTION)
465-
source_group("Header Files\\aws\\core\\utils\\crypto\\bcrypt" FILES ${UTILS_CRYPTO_BCRYPT_HEADERS})
466-
elseif(ENABLE_OPENSSL_ENCRYPTION)
467-
source_group("Header Files\\aws\\core\\utils\\crypto\\openssl" FILES ${UTILS_CRYPTO_OPENSSL_HEADERS})
468-
elseif(ENABLE_COMMONCRYPTO_ENCRYPTION)
469-
source_group("Header Files\\aws\\core\\utils\\crypto\\commoncrypto" FILES ${UTILS_CRYPTO_COMMONCRYPTO_HEADERS})
470-
endif()
471-
472453
if (BUILD_OPTEL)
473454
source_group("Header Files\\smithy\\tracing\\impl\\opentelemetry" FILES ${OPTEL_HEADERS})
474455
endif ()
@@ -519,19 +500,13 @@ if(MSVC)
519500

520501

521502
# encryption conditional source
522-
if(ENABLE_BCRYPT_ENCRYPTION)
523-
source_group("Source Files\\utils\\crypto\\bcrypt" FILES ${UTILS_CRYPTO_BCRYPT_SOURCE})
524-
elseif(ENABLE_OPENSSL_ENCRYPTION)
525-
source_group("Source Files\\utils\\crypto\\openssl" FILES ${UTILS_CRYPTO_OPENSSL_SOURCE})
526-
elseif(ENABLE_COMMONCRYPTO_ENCRYPTION)
527-
source_group("Source Files\\utils\\crypto\\commoncrypto" FILES ${UTILS_CRYPTO_COMMONCRYPTO_SOURCE})
503+
if (NOT NO_ENCRYPTION)
504+
source_group("Source Files\\utils\\crypto\\crt" FILES ${UTILS_CRYPTO_CRT_SOURCE})
528505
endif()
529506

530507
if (BUILD_OPTEL)
531508
source_group("Source Files\\smithy\\tracing\\impl\\opentelemetry" FILES ${OPTEL_SOURCE})
532509
endif ()
533-
534-
535510
endif(MSVC)
536511

537512
check_cxx_source_compiles("
@@ -568,6 +543,10 @@ if (CURL_HAS_TLS_PROXY)
568543
target_compile_definitions(${PROJECT_NAME} PRIVATE "CURL_HAS_TLS_PROXY")
569544
endif()
570545

546+
if (NO_ENCRYPTION)
547+
target_compile_definitions(${PROJECT_NAME} PRIVATE "NO_ENCRYPTION")
548+
endif()
549+
571550
if (AWS_HAS_ALIGNED_ALLOC)
572551
target_compile_definitions(${PROJECT_NAME} PRIVATE "AWS_HAS_ALIGNED_ALLOC")
573552
endif()
@@ -594,10 +573,6 @@ if(BUILD_CURL)
594573
target_include_directories(${PROJECT_NAME} PRIVATE "${CURL_INCLUDE_DIR}")
595574
endif()
596575

597-
if(BUILD_OPENSSL)
598-
target_include_directories(${PROJECT_NAME} PRIVATE "${OPENSSL_INCLUDE_DIR}")
599-
endif()
600-
601576
if (BUILD_OPTEL)
602577
target_include_directories(${PROJECT_NAME} PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS})
603578
endif ()
@@ -743,13 +718,7 @@ endif()
743718

744719

745720
# encryption headers
746-
if(ENABLE_BCRYPT_ENCRYPTION)
747-
install (FILES ${UTILS_CRYPTO_BCRYPT_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/core/utils/crypto/bcrypt)
748-
elseif(ENABLE_OPENSSL_ENCRYPTION)
749-
install (FILES ${UTILS_CRYPTO_OPENSSL_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/core/utils/crypto/openssl)
750-
elseif(ENABLE_COMMONCRYPTO_ENCRYPTION)
751-
install (FILES ${UTILS_CRYPTO_COMMONCRYPTO_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/core/utils/crypto/commoncrypto)
752-
endif()
721+
install (FILES ${UTILS_CRYPTO_CRT_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/core/utils/crypto/crt)
753722

754723
do_packaging()
755724

src/aws-cpp-sdk-core/include/aws/core/auth/signer/AWSAuthEventStreamV4Signer.h

-2
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ namespace Aws
100100
const Aws::String& simpleDate, const Aws::String& region, const Aws::String& serviceName) const;
101101
const Aws::String m_serviceName;
102102
const Aws::String m_region;
103-
mutable Aws::Utils::Crypto::Sha256 m_hash;
104-
mutable Aws::Utils::Crypto::Sha256HMAC m_HMAC;
105103
mutable Utils::Threading::ReaderWriterLock m_derivedKeyLock;
106104
mutable Aws::Utils::ByteBuffer m_derivedKey;
107105
mutable Aws::String m_currentDateStr;

src/aws-cpp-sdk-core/include/aws/core/auth/signer/AWSAuthV4Signer.h

-2
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,6 @@ namespace Aws
197197
std::shared_ptr<Auth::AWSCredentialsProvider> m_credentialsProvider;
198198
const Aws::String m_serviceName;
199199
const Aws::String m_region;
200-
Aws::UniquePtr<Aws::Utils::Crypto::Sha256> m_hash;
201-
Aws::UniquePtr<Aws::Utils::Crypto::Sha256HMAC> m_HMAC;
202200

203201
Aws::Set<Aws::String> m_unsignedHeaders;
204202

0 commit comments

Comments
 (0)