From d0ca42643f4c81261ecaa8ba0d75ceb7d3127a48 Mon Sep 17 00:00:00 2001 From: Ahson Khan Date: Thu, 1 Jul 2021 15:42:36 -0700 Subject: [PATCH] Move Sha256Hash and other Hash algorithm types from KeyVault to Azure::Core (#2526) * Move the SHA256, 384, and 512 Hash implementations to be internal. * Update changelog and add back missing file. * Rename SHA256 and others to Sha256Hash and update header name. * Fix up path in CMakeList by removing quotes. * Rename the sha.cpp source file to match header. * Move Sha256Hash and other Hash algorithm types from KeyVault to Azure::Core. * Reorder src file in cmakelist to be alpha order just to reset CI * Revert "Reorder src file in cmakelist to be alpha order just to reset CI" This reverts commit 6729cf311af76bb8388738cc519ea40092bc362c. --- sdk/core/azure-core/CMakeLists.txt | 2 ++ .../core/internal/cryptography}/sha_hash.hpp | 4 ++-- .../azure-core/src/cryptography}/sha_hash.cpp | 16 ++++++++-------- sdk/core/azure-core/test/ut/CMakeLists.txt | 1 + .../azure-core}/test/ut/sha_test.cpp | 4 ++-- .../CMakeLists.txt | 3 --- .../test/ut/CMakeLists.txt | 1 - .../src/cryptography/signature_algorithm.cpp | 8 ++++---- .../ut/key_cryptographic_client_test_live.cpp | 14 +++++++------- 9 files changed, 26 insertions(+), 27 deletions(-) rename sdk/{keyvault/azure-security-keyvault-common/inc/azure/keyvault/common/internal => core/azure-core/inc/azure/core/internal/cryptography}/sha_hash.hpp (97%) rename sdk/{keyvault/azure-security-keyvault-common/src => core/azure-core/src/cryptography}/sha_hash.cpp (92%) rename sdk/{keyvault/azure-security-keyvault-common => core/azure-core}/test/ut/sha_test.cpp (79%) diff --git a/sdk/core/azure-core/CMakeLists.txt b/sdk/core/azure-core/CMakeLists.txt index 49cd81fed..12f57af0f 100644 --- a/sdk/core/azure-core/CMakeLists.txt +++ b/sdk/core/azure-core/CMakeLists.txt @@ -61,6 +61,7 @@ set( inc/azure/core/http/transport.hpp inc/azure/core/internal/client_options.hpp inc/azure/core/internal/contract.hpp + inc/azure/core/internal/cryptography/sha_hash.hpp inc/azure/core/internal/diagnostics/log.hpp inc/azure/core/internal/http/pipeline.hpp inc/azure/core/internal/io/null_body_stream.hpp @@ -95,6 +96,7 @@ set( ${WIN_TRANSPORT_ADAPTER_SRC} src/azure_assert.cpp src/cryptography/md5.cpp + src/cryptography/sha_hash.cpp src/http/bearer_token_authentication_policy.cpp src/http/http.cpp src/http/log_policy.cpp diff --git a/sdk/keyvault/azure-security-keyvault-common/inc/azure/keyvault/common/internal/sha_hash.hpp b/sdk/core/azure-core/inc/azure/core/internal/cryptography/sha_hash.hpp similarity index 97% rename from sdk/keyvault/azure-security-keyvault-common/inc/azure/keyvault/common/internal/sha_hash.hpp rename to sdk/core/azure-core/inc/azure/core/internal/cryptography/sha_hash.hpp index 2e5c83c1b..d7a31c91f 100644 --- a/sdk/keyvault/azure-security-keyvault-common/inc/azure/keyvault/common/internal/sha_hash.hpp +++ b/sdk/core/azure-core/inc/azure/core/internal/cryptography/sha_hash.hpp @@ -15,7 +15,7 @@ #include #include -namespace Azure { namespace Security { namespace KeyVault { namespace _internal { +namespace Azure { namespace Core { namespace Cryptography { namespace _internal { /** * @brief Defines #Sha256Hash. @@ -173,4 +173,4 @@ namespace Azure { namespace Security { namespace KeyVault { namespace _internal } }; -}}}} // namespace Azure::Security::KeyVault::_internal +}}}} // namespace Azure::Core::Cryptography::_internal diff --git a/sdk/keyvault/azure-security-keyvault-common/src/sha_hash.cpp b/sdk/core/azure-core/src/cryptography/sha_hash.cpp similarity index 92% rename from sdk/keyvault/azure-security-keyvault-common/src/sha_hash.cpp rename to sdk/core/azure-core/src/cryptography/sha_hash.cpp index 0a7146e8e..3ef52b4fb 100644 --- a/sdk/keyvault/azure-security-keyvault-common/src/sha_hash.cpp +++ b/sdk/core/azure-core/src/cryptography/sha_hash.cpp @@ -12,13 +12,13 @@ #include #endif -#include "azure/keyvault/common/internal/sha_hash.hpp" +#include "azure/core/internal/cryptography/sha_hash.hpp" #include #include #include -using namespace Azure::Security::KeyVault; +using namespace Azure::Core::Cryptography; #if defined(AZ_PLATFORM_POSIX) @@ -97,17 +97,17 @@ public: } // namespace -Azure::Security::KeyVault::_internal::Sha256Hash::Sha256Hash() +Azure::Core::Cryptography::_internal::Sha256Hash::Sha256Hash() : m_portableImplementation(std::make_unique(SHASize::SHA256)) { } -Azure::Security::KeyVault::_internal::Sha384Hash::Sha384Hash() +Azure::Core::Cryptography::_internal::Sha384Hash::Sha384Hash() : m_portableImplementation(std::make_unique(SHASize::SHA384)) { } -Azure::Security::KeyVault::_internal::Sha512Hash::Sha512Hash() +Azure::Core::Cryptography::_internal::Sha512Hash::Sha512Hash() : m_portableImplementation(std::make_unique(SHASize::SHA512)) { } @@ -222,17 +222,17 @@ public: } // namespace -Azure::Security::KeyVault::_internal::Sha256Hash::Sha256Hash() +Azure::Core::Cryptography::_internal::Sha256Hash::Sha256Hash() : m_portableImplementation(std::make_unique(BCRYPT_SHA256_ALGORITHM)) { } -Azure::Security::KeyVault::_internal::Sha384Hash::Sha384Hash() +Azure::Core::Cryptography::_internal::Sha384Hash::Sha384Hash() : m_portableImplementation(std::make_unique(BCRYPT_SHA384_ALGORITHM)) { } -Azure::Security::KeyVault::_internal::Sha512Hash::Sha512Hash() +Azure::Core::Cryptography::_internal::Sha512Hash::Sha512Hash() : m_portableImplementation(std::make_unique(BCRYPT_SHA512_ALGORITHM)) { } diff --git a/sdk/core/azure-core/test/ut/CMakeLists.txt b/sdk/core/azure-core/test/ut/CMakeLists.txt index 9f917bb39..b28a9dd9d 100644 --- a/sdk/core/azure-core/test/ut/CMakeLists.txt +++ b/sdk/core/azure-core/test/ut/CMakeLists.txt @@ -65,6 +65,7 @@ add_executable ( request_id_policy_test.cpp response_t_test.cpp retry_policy_test.cpp + sha_test.cpp simplified_header_test.cpp string_test.cpp telemetry_policy_test.cpp diff --git a/sdk/keyvault/azure-security-keyvault-common/test/ut/sha_test.cpp b/sdk/core/azure-core/test/ut/sha_test.cpp similarity index 79% rename from sdk/keyvault/azure-security-keyvault-common/test/ut/sha_test.cpp rename to sdk/core/azure-core/test/ut/sha_test.cpp index 7d9d0c3ce..5cab15ec0 100644 --- a/sdk/keyvault/azure-security-keyvault-common/test/ut/sha_test.cpp +++ b/sdk/core/azure-core/test/ut/sha_test.cpp @@ -3,9 +3,9 @@ #include "gtest/gtest.h" -#include "azure/keyvault/common/internal/sha_hash.hpp" +#include "azure/core/internal/cryptography/sha_hash.hpp" -using namespace Azure::Security::KeyVault::_internal; +using namespace Azure::Core::Cryptography::_internal; TEST(SHA, SHA256Test) { diff --git a/sdk/keyvault/azure-security-keyvault-common/CMakeLists.txt b/sdk/keyvault/azure-security-keyvault-common/CMakeLists.txt index 615f05be4..bfd44b739 100644 --- a/sdk/keyvault/azure-security-keyvault-common/CMakeLists.txt +++ b/sdk/keyvault/azure-security-keyvault-common/CMakeLists.txt @@ -30,16 +30,13 @@ set( AZURE_KEYVAULT_COMMON_HEADER inc/azure/keyvault/common/internal/keyvault_pipeline.hpp inc/azure/keyvault/common/internal/single_page.hpp - inc/azure/keyvault/common/internal/sha_hash.hpp ) set( AZURE_KEYVAULT_COMMON_SOURCE src/private/keyvault_constants.hpp src/private/package_version.hpp - src/keyvault_pipeline.cpp - src/sha_hash.cpp ) add_library( diff --git a/sdk/keyvault/azure-security-keyvault-common/test/ut/CMakeLists.txt b/sdk/keyvault/azure-security-keyvault-common/test/ut/CMakeLists.txt index 460f844a0..f43abae24 100644 --- a/sdk/keyvault/azure-security-keyvault-common/test/ut/CMakeLists.txt +++ b/sdk/keyvault/azure-security-keyvault-common/test/ut/CMakeLists.txt @@ -13,7 +13,6 @@ add_executable ( azure-security-keyvault-common-test azure_security_keyvault_common_test.cpp pipeline_test.cpp - sha_test.cpp ) if (MSVC) diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/signature_algorithm.cpp b/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/signature_algorithm.cpp index 187a19a16..cd65c1483 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/signature_algorithm.cpp +++ b/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/signature_algorithm.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // SPDX-License-Identifier: MIT -#include +#include #include "../private/key_constants.hpp" #include "azure/keyvault/keys/cryptography/signature_algorithm.hpp" @@ -28,19 +28,19 @@ namespace Azure { if (*this == SignatureAlgorithm::RS256 || *this == SignatureAlgorithm::PS256 || *this == SignatureAlgorithm::ES256 || *this == SignatureAlgorithm::ES256K) { - return std::make_unique<_internal::Sha256Hash>(); + return std::make_unique(); } if (*this == SignatureAlgorithm::RS384 || *this == SignatureAlgorithm::PS384 || *this == SignatureAlgorithm::ES384) { - return std::make_unique<_internal::Sha384Hash>(); + return std::make_unique(); } if (*this == SignatureAlgorithm::RS512 || *this == SignatureAlgorithm::PS512 || *this == SignatureAlgorithm::ES512) { - return std::make_unique<_internal::Sha512Hash>(); + return std::make_unique(); } throw std::runtime_error("Unkown Hash algorithm for: " + m_value); } diff --git a/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_cryptographic_client_test_live.cpp b/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_cryptographic_client_test_live.cpp index 9bed31a3a..f87809fac 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_cryptographic_client_test_live.cpp +++ b/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_cryptographic_client_test_live.cpp @@ -7,7 +7,7 @@ #include "gtest/gtest.h" -#include +#include #include "key_client_base_test.hpp" @@ -94,7 +94,7 @@ TEST_P(KeyVaultClientTest, RemoteSignVerifyRSA256) // RS256 { - Azure::Security::KeyVault::_internal::Sha256Hash sha256; + Azure::Core::Cryptography::_internal::Sha256Hash sha256; auto signatureAlgorithm = SignatureAlgorithm::RS256; std::vector digest = sha256.Final(reinterpret_cast(digestSource.data()), digestSource.size()); @@ -112,7 +112,7 @@ TEST_P(KeyVaultClientTest, RemoteSignVerifyRSA256) // PS256 { - Azure::Security::KeyVault::_internal::Sha256Hash sha256; + Azure::Core::Cryptography::_internal::Sha256Hash sha256; auto signatureAlgorithm = SignatureAlgorithm::PS256; std::vector digest = sha256.Final(reinterpret_cast(digestSource.data()), digestSource.size()); @@ -142,7 +142,7 @@ TEST_F(KeyVaultClientTest, RemoteSignVerifyES256) auto ecKey = keyClient.CreateEcKey(ecKeyOptions).Value; CryptographyClient cryptoClient(ecKey.Id(), m_credential); - Azure::Security::KeyVault::_internal::Sha256Hash sha256; + Azure::Core::Cryptography::_internal::Sha256Hash sha256; auto signatureAlgorithm = SignatureAlgorithm::ES256; std::vector digest = sha256.Final(reinterpret_cast(digestSource.data()), digestSource.size()); @@ -165,7 +165,7 @@ TEST_F(KeyVaultClientTest, RemoteSignVerifyES256) auto ecKey = keyClient.CreateEcKey(ecKeyOptions).Value; CryptographyClient cryptoClient(ecKey.Id(), m_credential); - Azure::Security::KeyVault::_internal::Sha256Hash sha256; + Azure::Core::Cryptography::_internal::Sha256Hash sha256; auto signatureAlgorithm = SignatureAlgorithm::ES256K; std::vector digest = sha256.Final(reinterpret_cast(digestSource.data()), digestSource.size()); @@ -198,7 +198,7 @@ TEST_P(KeyVaultClientTest, RemoteSignVerifyRSA384) // RS384 { - Azure::Security::KeyVault::_internal::Sha384Hash sha384; + Azure::Core::Cryptography::_internal::Sha384Hash sha384; auto signatureAlgorithm = SignatureAlgorithm::RS384; std::vector digest = sha384.Final(reinterpret_cast(digestSource.data()), digestSource.size()); @@ -216,7 +216,7 @@ TEST_P(KeyVaultClientTest, RemoteSignVerifyRSA384) // PS384 { - Azure::Security::KeyVault::_internal::Sha384Hash sha384; + Azure::Core::Cryptography::_internal::Sha384Hash sha384; auto signatureAlgorithm = SignatureAlgorithm::PS384; std::vector digest = sha384.Final(reinterpret_cast(digestSource.data()), digestSource.size());