diff --git a/sdk/keyvault/azure-security-keyvault-keys/CMakeLists.txt b/sdk/keyvault/azure-security-keyvault-keys/CMakeLists.txt index 570118e046..152d97e223 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/CMakeLists.txt +++ b/sdk/keyvault/azure-security-keyvault-keys/CMakeLists.txt @@ -62,7 +62,6 @@ set( set( AZURE_KEYVAULT_KEYS_SOURCE src/cryptography/cryptography_client.cpp - src/cryptography/cryptography_client_options.cpp src/cryptography/decrypt_parameters.cpp src/cryptography/decrypt_result.cpp src/cryptography/encrypt_parameters.cpp diff --git a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/cryptography/cryptography_client_options.hpp b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/cryptography/cryptography_client_options.hpp index 531795011a..5adfc81cee 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/cryptography/cryptography_client_options.hpp +++ b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/cryptography/cryptography_client_options.hpp @@ -20,48 +20,6 @@ namespace Azure { namespace Keys { namespace Cryptography { - /** - * @brief Represent the Key Vault Keys Service Version. - * - */ - class ServiceVersion final { - private: - std::string m_version; - - public: - /** - * @brief Construct a new Service Version object - * - * @param version The string version for the Key Vault keys service. - */ - ServiceVersion(std::string version) : m_version(std::move(version)) {} - - /** - * @brief Enable comparing the ext enum. - * - * @param other Another #ServiceVersion to be compared. - */ - bool operator==(ServiceVersion const& other) const { return m_version == other.m_version; } - - /** - * @brief Return the #ServiceVersion string representation. - * - */ - std::string const& ToString() const { return m_version; } - - /** - * @brief Use to send request to the 7.2 version of Key Vault service. - * - */ - AZ_SECURITY_KEYVAULT_KEYS_DLLEXPORT static const ServiceVersion V7_2; - - /** - * @brief Use to send request to the 7.2 version of Key Vault service. - * - */ - AZ_SECURITY_KEYVAULT_KEYS_DLLEXPORT static const ServiceVersion V7_3; - }; - /** * @brief Options that allow you to configure the #CryptographyClient for local or remote * operations on Key Vault. @@ -75,16 +33,12 @@ namespace Azure { * versions](https://docs.microsoft.com/rest/api/keyvault/key-vault-versions). * */ - ServiceVersion Version; + std::string Version; /** * @brief Construct a new Key Client Options object. * - * @param version Optional version for the client. */ - CryptographyClientOptions(ServiceVersion version = ServiceVersion::V7_3) - : Azure::Core::_internal::ClientOptions(), Version(version) - { - } + CryptographyClientOptions() : Azure::Core::_internal::ClientOptions() { Version = "7.3"; } }; }}}}} // namespace Azure::Security::KeyVault::Keys::Cryptography diff --git a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client.hpp b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client.hpp index 70879df705..dfbc259421 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client.hpp +++ b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client.hpp @@ -246,14 +246,12 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys { * marked exportable. This operation requires the keys/release permission. * * @param name The name of the key. - * @param version The key version. * @param options The options for the key release operation. * @param context A cancellation token controlling the request lifetime. * @return ReleaseKeyResult object. */ Azure::Response ReleaseKey( std::string const& name, - std::string const& version, KeyReleaseOptions const& options, Azure::Core::Context const& context = Azure::Core::Context()) const; diff --git a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_models.hpp b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_models.hpp index b2ed5a264f..7132488228 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_models.hpp +++ b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_models.hpp @@ -453,7 +453,7 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys { * * @remark Format: base64url */ - std::string Data; + std::string EncodedPolicy; }; /** diff --git a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_options.hpp b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_options.hpp index 1fe104d7a4..6e880df9a2 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_options.hpp +++ b/sdk/keyvault/azure-security-keyvault-keys/inc/azure/keyvault/keys/key_client_options.hpp @@ -407,10 +407,16 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys { Azure::Nullable Nonce; /** - * @brief The encryption algorithm to use to protected the exported key material + * @brief The encryption algorithm to use to protected the exported key material. * */ Azure::Nullable Encryption; + + /** + * @brief The version of the key to release. + * + */ + Azure::Nullable Version; }; }}}} // namespace Azure::Security::KeyVault::Keys diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/cryptography_client.cpp b/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/cryptography_client.cpp index d9d1572580..86a8353379 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/cryptography_client.cpp +++ b/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/cryptography_client.cpp @@ -97,7 +97,7 @@ CryptographyClient::CryptographyClient( std::string const& keyId, std::shared_ptr credential, CryptographyClientOptions const& options) - : m_keyId(Azure::Core::Url(keyId)), m_apiVersion(options.Version.ToString()) + : m_keyId(Azure::Core::Url(keyId)), m_apiVersion(options.Version) { std::vector> perRetrypolicies; { diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/cryptography_client_options.cpp b/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/cryptography_client_options.cpp deleted file mode 100644 index 19e4407747..0000000000 --- a/sdk/keyvault/azure-security-keyvault-keys/src/cryptography/cryptography_client_options.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// SPDX-License-Identifier: MIT - -#include "azure/keyvault/keys/cryptography/cryptography_client_options.hpp" - -namespace Azure { - namespace Security { - namespace KeyVault { - namespace Keys { - namespace Cryptography { - const ServiceVersion ServiceVersion::V7_2("7.2"); - const ServiceVersion ServiceVersion::V7_3("7.3"); -}}}}} // namespace Azure::Security::KeyVault::Keys::Cryptography diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/key_client.cpp b/sdk/keyvault/azure-security-keyvault-keys/src/key_client.cpp index a098c63d72..abd528770c 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/src/key_client.cpp +++ b/sdk/keyvault/azure-security-keyvault-keys/src/key_client.cpp @@ -237,7 +237,6 @@ Azure::Security::KeyVault::Keys::DeleteKeyOperation KeyClient::StartDeleteKey( Azure::Response KeyClient::ReleaseKey( std::string const& name, - std::string const& version, KeyReleaseOptions const& options, Azure::Core::Context const& context) const { @@ -247,7 +246,10 @@ Azure::Response KeyClient::ReleaseKey( // Request and settings auto request = CreateRequest( - HttpMethod::Post, {_detail::KeysPath, name, version, _detail::ReleaseValue}, &payloadStream); + HttpMethod::Post, + {_detail::KeysPath, name, options.Version.ValueOr(""), _detail::ReleaseValue}, + &payloadStream); + request.SetHeader(HttpShared::ContentType, HttpShared::ApplicationJson); // Send and parse respone auto rawResponse = SendRequest(request, context); diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/key_release_policy.cpp b/sdk/keyvault/azure-security-keyvault-keys/src/key_release_policy.cpp index e18824bd7d..1ac616f01e 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/src/key_release_policy.cpp +++ b/sdk/keyvault/azure-security-keyvault-keys/src/key_release_policy.cpp @@ -24,8 +24,7 @@ Azure::Security::KeyVault::Keys::_detail::KeyReleasePolicySerializer::KeyRelease payload[_detail::ContentTypeValue] = policy.ContentType.ValueOr(_detail::ContentTypeDefaultValue); payload[_detail::ImmutableValue] = policy.Immutable; - payload[_detail::DataValue] - = Base64Url::Base64UrlEncode(std::vector(policy.Data.begin(), policy.Data.end())); + payload[_detail::DataValue] = policy.EncodedPolicy; return payload; } @@ -35,11 +34,10 @@ Azure::Security::KeyVault::Keys::_detail::KeyReleasePolicySerializer::KeyRelease Azure::Core::Json::_internal::json const& rawResponse) { KeyReleasePolicy policy; - auto decodedData = Base64Url::Base64UrlDecode(rawResponse[_detail::DataValue].get()); policy.ContentType = rawResponse[_detail::ContentTypeValue].get(); policy.Immutable = rawResponse[_detail::ImmutableValue].get(); - policy.Data = std::string(decodedData.begin(), decodedData.end()); + policy.EncodedPolicy = rawResponse[_detail::DataValue].get(); return policy; } diff --git a/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_client_create_test_live.cpp b/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_client_create_test_live.cpp index 47bf2a8b67..6d432d2af3 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_client_create_test_live.cpp +++ b/sdk/keyvault/azure-security-keyvault-keys/test/ut/key_client_create_test_live.cpp @@ -333,7 +333,9 @@ TEST_F(KeyVaultKeyClient, CreateKeyWithReleasePolicyOptions) " \"version\" : \"1.0.0\"" "} "; auto jsonParser = json::parse(dataStr); - options.ReleasePolicy.Value().Data = jsonParser.dump(); + auto parsedJson = jsonParser.dump(); + options.ReleasePolicy.Value().EncodedPolicy + = Base64Url::Base64UrlEncode(std::vector(parsedJson.begin(), parsedJson.end())); options.Exportable = true; { auto keyResponse = client.CreateKey( @@ -372,7 +374,8 @@ TEST_F(KeyVaultKeyClient, CreateKeyWithReleasePolicyOptions) EXPECT_FALSE(policy.Immutable); EXPECT_EQ( - json::parse(options.ReleasePolicy.Value().Data).dump(1, ' ', true), - json::parse(policy.Data).dump(1, ' ', true)); + json::parse(Base64Url::Base64UrlDecode(options.ReleasePolicy.Value().EncodedPolicy)) + .dump(1, ' ', true), + json::parse(Base64Url::Base64UrlDecode(policy.EncodedPolicy)).dump(1, ' ', true)); } }