/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace KMS { namespace Model { /** *

Contains metadata about a KMS key.

This data type is used as a * response element for the CreateKey, DescribeKey, and * ReplicateKey operations.

See Also:

AWS API * Reference

*/ class KeyMetadata { public: AWS_KMS_API KeyMetadata(); AWS_KMS_API KeyMetadata(Aws::Utils::Json::JsonView jsonValue); AWS_KMS_API KeyMetadata& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_KMS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline const Aws::String& GetAWSAccountId() const{ return m_aWSAccountId; } /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline bool AWSAccountIdHasBeenSet() const { return m_aWSAccountIdHasBeenSet; } /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline void SetAWSAccountId(const Aws::String& value) { m_aWSAccountIdHasBeenSet = true; m_aWSAccountId = value; } /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline void SetAWSAccountId(Aws::String&& value) { m_aWSAccountIdHasBeenSet = true; m_aWSAccountId = std::move(value); } /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline void SetAWSAccountId(const char* value) { m_aWSAccountIdHasBeenSet = true; m_aWSAccountId.assign(value); } /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline KeyMetadata& WithAWSAccountId(const Aws::String& value) { SetAWSAccountId(value); return *this;} /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline KeyMetadata& WithAWSAccountId(Aws::String&& value) { SetAWSAccountId(std::move(value)); return *this;} /** *

The twelve-digit account ID of the Amazon Web Services account that owns the * KMS key.

*/ inline KeyMetadata& WithAWSAccountId(const char* value) { SetAWSAccountId(value); return *this;} /** *

The globally unique identifier for the KMS key.

*/ inline const Aws::String& GetKeyId() const{ return m_keyId; } /** *

The globally unique identifier for the KMS key.

*/ inline bool KeyIdHasBeenSet() const { return m_keyIdHasBeenSet; } /** *

The globally unique identifier for the KMS key.

*/ inline void SetKeyId(const Aws::String& value) { m_keyIdHasBeenSet = true; m_keyId = value; } /** *

The globally unique identifier for the KMS key.

*/ inline void SetKeyId(Aws::String&& value) { m_keyIdHasBeenSet = true; m_keyId = std::move(value); } /** *

The globally unique identifier for the KMS key.

*/ inline void SetKeyId(const char* value) { m_keyIdHasBeenSet = true; m_keyId.assign(value); } /** *

The globally unique identifier for the KMS key.

*/ inline KeyMetadata& WithKeyId(const Aws::String& value) { SetKeyId(value); return *this;} /** *

The globally unique identifier for the KMS key.

*/ inline KeyMetadata& WithKeyId(Aws::String&& value) { SetKeyId(std::move(value)); return *this;} /** *

The globally unique identifier for the KMS key.

*/ inline KeyMetadata& WithKeyId(const char* value) { SetKeyId(value); return *this;} /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline const Aws::String& GetArn() const{ return m_arn; } /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; } /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); } /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); } /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline KeyMetadata& WithArn(const Aws::String& value) { SetArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline KeyMetadata& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the KMS key. For examples, see Key * Management Service (KMS) in the Example ARNs section of the Amazon Web * Services General Reference.

*/ inline KeyMetadata& WithArn(const char* value) { SetArn(value); return *this;} /** *

The date and time when the KMS key was created.

*/ inline const Aws::Utils::DateTime& GetCreationDate() const{ return m_creationDate; } /** *

The date and time when the KMS key was created.

*/ inline bool CreationDateHasBeenSet() const { return m_creationDateHasBeenSet; } /** *

The date and time when the KMS key was created.

*/ inline void SetCreationDate(const Aws::Utils::DateTime& value) { m_creationDateHasBeenSet = true; m_creationDate = value; } /** *

The date and time when the KMS key was created.

*/ inline void SetCreationDate(Aws::Utils::DateTime&& value) { m_creationDateHasBeenSet = true; m_creationDate = std::move(value); } /** *

The date and time when the KMS key was created.

*/ inline KeyMetadata& WithCreationDate(const Aws::Utils::DateTime& value) { SetCreationDate(value); return *this;} /** *

The date and time when the KMS key was created.

*/ inline KeyMetadata& WithCreationDate(Aws::Utils::DateTime&& value) { SetCreationDate(std::move(value)); return *this;} /** *

Specifies whether the KMS key is enabled. When KeyState is * Enabled this value is true, otherwise it is false.

*/ inline bool GetEnabled() const{ return m_enabled; } /** *

Specifies whether the KMS key is enabled. When KeyState is * Enabled this value is true, otherwise it is false.

*/ inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; } /** *

Specifies whether the KMS key is enabled. When KeyState is * Enabled this value is true, otherwise it is false.

*/ inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; } /** *

Specifies whether the KMS key is enabled. When KeyState is * Enabled this value is true, otherwise it is false.

*/ inline KeyMetadata& WithEnabled(bool value) { SetEnabled(value); return *this;} /** *

The description of the KMS key.

*/ inline const Aws::String& GetDescription() const{ return m_description; } /** *

The description of the KMS key.

*/ inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; } /** *

The description of the KMS key.

*/ inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; } /** *

The description of the KMS key.

*/ inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); } /** *

The description of the KMS key.

*/ inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); } /** *

The description of the KMS key.

*/ inline KeyMetadata& WithDescription(const Aws::String& value) { SetDescription(value); return *this;} /** *

The description of the KMS key.

*/ inline KeyMetadata& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;} /** *

The description of the KMS key.

*/ inline KeyMetadata& WithDescription(const char* value) { SetDescription(value); return *this;} /** *

The cryptographic * operations for which you can use the KMS key.

*/ inline const KeyUsageType& GetKeyUsage() const{ return m_keyUsage; } /** *

The cryptographic * operations for which you can use the KMS key.

*/ inline bool KeyUsageHasBeenSet() const { return m_keyUsageHasBeenSet; } /** *

The cryptographic * operations for which you can use the KMS key.

*/ inline void SetKeyUsage(const KeyUsageType& value) { m_keyUsageHasBeenSet = true; m_keyUsage = value; } /** *

The cryptographic * operations for which you can use the KMS key.

*/ inline void SetKeyUsage(KeyUsageType&& value) { m_keyUsageHasBeenSet = true; m_keyUsage = std::move(value); } /** *

The cryptographic * operations for which you can use the KMS key.

*/ inline KeyMetadata& WithKeyUsage(const KeyUsageType& value) { SetKeyUsage(value); return *this;} /** *

The cryptographic * operations for which you can use the KMS key.

*/ inline KeyMetadata& WithKeyUsage(KeyUsageType&& value) { SetKeyUsage(std::move(value)); return *this;} /** *

The current status of the KMS key.

For more information about how key * state affects the use of a KMS key, see Key * states of KMS keys in the Key Management Service Developer Guide.

*/ inline const KeyState& GetKeyState() const{ return m_keyState; } /** *

The current status of the KMS key.

For more information about how key * state affects the use of a KMS key, see Key * states of KMS keys in the Key Management Service Developer Guide.

*/ inline bool KeyStateHasBeenSet() const { return m_keyStateHasBeenSet; } /** *

The current status of the KMS key.

For more information about how key * state affects the use of a KMS key, see Key * states of KMS keys in the Key Management Service Developer Guide.

*/ inline void SetKeyState(const KeyState& value) { m_keyStateHasBeenSet = true; m_keyState = value; } /** *

The current status of the KMS key.

For more information about how key * state affects the use of a KMS key, see Key * states of KMS keys in the Key Management Service Developer Guide.

*/ inline void SetKeyState(KeyState&& value) { m_keyStateHasBeenSet = true; m_keyState = std::move(value); } /** *

The current status of the KMS key.

For more information about how key * state affects the use of a KMS key, see Key * states of KMS keys in the Key Management Service Developer Guide.

*/ inline KeyMetadata& WithKeyState(const KeyState& value) { SetKeyState(value); return *this;} /** *

The current status of the KMS key.

For more information about how key * state affects the use of a KMS key, see Key * states of KMS keys in the Key Management Service Developer Guide.

*/ inline KeyMetadata& WithKeyState(KeyState&& value) { SetKeyState(std::move(value)); return *this;} /** *

The date and time after which KMS deletes this KMS key. This value is present * only when the KMS key is scheduled for deletion, that is, when its * KeyState is PendingDeletion.

When the primary * key in a multi-Region key is scheduled for deletion but still has replica keys, * its key state is PendingReplicaDeletion and the length of its * waiting period is displayed in the PendingDeletionWindowInDays * field.

*/ inline const Aws::Utils::DateTime& GetDeletionDate() const{ return m_deletionDate; } /** *

The date and time after which KMS deletes this KMS key. This value is present * only when the KMS key is scheduled for deletion, that is, when its * KeyState is PendingDeletion.

When the primary * key in a multi-Region key is scheduled for deletion but still has replica keys, * its key state is PendingReplicaDeletion and the length of its * waiting period is displayed in the PendingDeletionWindowInDays * field.

*/ inline bool DeletionDateHasBeenSet() const { return m_deletionDateHasBeenSet; } /** *

The date and time after which KMS deletes this KMS key. This value is present * only when the KMS key is scheduled for deletion, that is, when its * KeyState is PendingDeletion.

When the primary * key in a multi-Region key is scheduled for deletion but still has replica keys, * its key state is PendingReplicaDeletion and the length of its * waiting period is displayed in the PendingDeletionWindowInDays * field.

*/ inline void SetDeletionDate(const Aws::Utils::DateTime& value) { m_deletionDateHasBeenSet = true; m_deletionDate = value; } /** *

The date and time after which KMS deletes this KMS key. This value is present * only when the KMS key is scheduled for deletion, that is, when its * KeyState is PendingDeletion.

When the primary * key in a multi-Region key is scheduled for deletion but still has replica keys, * its key state is PendingReplicaDeletion and the length of its * waiting period is displayed in the PendingDeletionWindowInDays * field.

*/ inline void SetDeletionDate(Aws::Utils::DateTime&& value) { m_deletionDateHasBeenSet = true; m_deletionDate = std::move(value); } /** *

The date and time after which KMS deletes this KMS key. This value is present * only when the KMS key is scheduled for deletion, that is, when its * KeyState is PendingDeletion.

When the primary * key in a multi-Region key is scheduled for deletion but still has replica keys, * its key state is PendingReplicaDeletion and the length of its * waiting period is displayed in the PendingDeletionWindowInDays * field.

*/ inline KeyMetadata& WithDeletionDate(const Aws::Utils::DateTime& value) { SetDeletionDate(value); return *this;} /** *

The date and time after which KMS deletes this KMS key. This value is present * only when the KMS key is scheduled for deletion, that is, when its * KeyState is PendingDeletion.

When the primary * key in a multi-Region key is scheduled for deletion but still has replica keys, * its key state is PendingReplicaDeletion and the length of its * waiting period is displayed in the PendingDeletionWindowInDays * field.

*/ inline KeyMetadata& WithDeletionDate(Aws::Utils::DateTime&& value) { SetDeletionDate(std::move(value)); return *this;} /** *

The time at which the imported key material expires. When the key material * expires, KMS deletes the key material and the KMS key becomes unusable. This * value is present only for KMS keys whose Origin is * EXTERNAL and whose ExpirationModel is * KEY_MATERIAL_EXPIRES, otherwise this value is omitted.

*/ inline const Aws::Utils::DateTime& GetValidTo() const{ return m_validTo; } /** *

The time at which the imported key material expires. When the key material * expires, KMS deletes the key material and the KMS key becomes unusable. This * value is present only for KMS keys whose Origin is * EXTERNAL and whose ExpirationModel is * KEY_MATERIAL_EXPIRES, otherwise this value is omitted.

*/ inline bool ValidToHasBeenSet() const { return m_validToHasBeenSet; } /** *

The time at which the imported key material expires. When the key material * expires, KMS deletes the key material and the KMS key becomes unusable. This * value is present only for KMS keys whose Origin is * EXTERNAL and whose ExpirationModel is * KEY_MATERIAL_EXPIRES, otherwise this value is omitted.

*/ inline void SetValidTo(const Aws::Utils::DateTime& value) { m_validToHasBeenSet = true; m_validTo = value; } /** *

The time at which the imported key material expires. When the key material * expires, KMS deletes the key material and the KMS key becomes unusable. This * value is present only for KMS keys whose Origin is * EXTERNAL and whose ExpirationModel is * KEY_MATERIAL_EXPIRES, otherwise this value is omitted.

*/ inline void SetValidTo(Aws::Utils::DateTime&& value) { m_validToHasBeenSet = true; m_validTo = std::move(value); } /** *

The time at which the imported key material expires. When the key material * expires, KMS deletes the key material and the KMS key becomes unusable. This * value is present only for KMS keys whose Origin is * EXTERNAL and whose ExpirationModel is * KEY_MATERIAL_EXPIRES, otherwise this value is omitted.

*/ inline KeyMetadata& WithValidTo(const Aws::Utils::DateTime& value) { SetValidTo(value); return *this;} /** *

The time at which the imported key material expires. When the key material * expires, KMS deletes the key material and the KMS key becomes unusable. This * value is present only for KMS keys whose Origin is * EXTERNAL and whose ExpirationModel is * KEY_MATERIAL_EXPIRES, otherwise this value is omitted.

*/ inline KeyMetadata& WithValidTo(Aws::Utils::DateTime&& value) { SetValidTo(std::move(value)); return *this;} /** *

The source of the key material for the KMS key. When this value is * AWS_KMS, KMS created the key material. When this value is * EXTERNAL, the key material was imported or the KMS key doesn't have * any key material. When this value is AWS_CLOUDHSM, the key material * was created in the CloudHSM cluster associated with a custom key store.

*/ inline const OriginType& GetOrigin() const{ return m_origin; } /** *

The source of the key material for the KMS key. When this value is * AWS_KMS, KMS created the key material. When this value is * EXTERNAL, the key material was imported or the KMS key doesn't have * any key material. When this value is AWS_CLOUDHSM, the key material * was created in the CloudHSM cluster associated with a custom key store.

*/ inline bool OriginHasBeenSet() const { return m_originHasBeenSet; } /** *

The source of the key material for the KMS key. When this value is * AWS_KMS, KMS created the key material. When this value is * EXTERNAL, the key material was imported or the KMS key doesn't have * any key material. When this value is AWS_CLOUDHSM, the key material * was created in the CloudHSM cluster associated with a custom key store.

*/ inline void SetOrigin(const OriginType& value) { m_originHasBeenSet = true; m_origin = value; } /** *

The source of the key material for the KMS key. When this value is * AWS_KMS, KMS created the key material. When this value is * EXTERNAL, the key material was imported or the KMS key doesn't have * any key material. When this value is AWS_CLOUDHSM, the key material * was created in the CloudHSM cluster associated with a custom key store.

*/ inline void SetOrigin(OriginType&& value) { m_originHasBeenSet = true; m_origin = std::move(value); } /** *

The source of the key material for the KMS key. When this value is * AWS_KMS, KMS created the key material. When this value is * EXTERNAL, the key material was imported or the KMS key doesn't have * any key material. When this value is AWS_CLOUDHSM, the key material * was created in the CloudHSM cluster associated with a custom key store.

*/ inline KeyMetadata& WithOrigin(const OriginType& value) { SetOrigin(value); return *this;} /** *

The source of the key material for the KMS key. When this value is * AWS_KMS, KMS created the key material. When this value is * EXTERNAL, the key material was imported or the KMS key doesn't have * any key material. When this value is AWS_CLOUDHSM, the key material * was created in the CloudHSM cluster associated with a custom key store.

*/ inline KeyMetadata& WithOrigin(OriginType&& value) { SetOrigin(std::move(value)); return *this;} /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline const Aws::String& GetCustomKeyStoreId() const{ return m_customKeyStoreId; } /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline bool CustomKeyStoreIdHasBeenSet() const { return m_customKeyStoreIdHasBeenSet; } /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline void SetCustomKeyStoreId(const Aws::String& value) { m_customKeyStoreIdHasBeenSet = true; m_customKeyStoreId = value; } /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline void SetCustomKeyStoreId(Aws::String&& value) { m_customKeyStoreIdHasBeenSet = true; m_customKeyStoreId = std::move(value); } /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline void SetCustomKeyStoreId(const char* value) { m_customKeyStoreIdHasBeenSet = true; m_customKeyStoreId.assign(value); } /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline KeyMetadata& WithCustomKeyStoreId(const Aws::String& value) { SetCustomKeyStoreId(value); return *this;} /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline KeyMetadata& WithCustomKeyStoreId(Aws::String&& value) { SetCustomKeyStoreId(std::move(value)); return *this;} /** *

A unique identifier for the custom * key store that contains the KMS key. This field is present only when the KMS * key is created in a custom key store.

*/ inline KeyMetadata& WithCustomKeyStoreId(const char* value) { SetCustomKeyStoreId(value); return *this;} /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline const Aws::String& GetCloudHsmClusterId() const{ return m_cloudHsmClusterId; } /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline bool CloudHsmClusterIdHasBeenSet() const { return m_cloudHsmClusterIdHasBeenSet; } /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline void SetCloudHsmClusterId(const Aws::String& value) { m_cloudHsmClusterIdHasBeenSet = true; m_cloudHsmClusterId = value; } /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline void SetCloudHsmClusterId(Aws::String&& value) { m_cloudHsmClusterIdHasBeenSet = true; m_cloudHsmClusterId = std::move(value); } /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline void SetCloudHsmClusterId(const char* value) { m_cloudHsmClusterIdHasBeenSet = true; m_cloudHsmClusterId.assign(value); } /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline KeyMetadata& WithCloudHsmClusterId(const Aws::String& value) { SetCloudHsmClusterId(value); return *this;} /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline KeyMetadata& WithCloudHsmClusterId(Aws::String&& value) { SetCloudHsmClusterId(std::move(value)); return *this;} /** *

The cluster ID of the CloudHSM cluster that contains the key material for the * KMS key. When you create a KMS key in an CloudHSM custom * key store, KMS creates the key material for the KMS key in the associated * CloudHSM cluster. This field is present only when the KMS key is created in an * CloudHSM key store.

*/ inline KeyMetadata& WithCloudHsmClusterId(const char* value) { SetCloudHsmClusterId(value); return *this;} /** *

Specifies whether the KMS key's key material expires. This value is present * only when Origin is EXTERNAL, otherwise this value is * omitted.

*/ inline const ExpirationModelType& GetExpirationModel() const{ return m_expirationModel; } /** *

Specifies whether the KMS key's key material expires. This value is present * only when Origin is EXTERNAL, otherwise this value is * omitted.

*/ inline bool ExpirationModelHasBeenSet() const { return m_expirationModelHasBeenSet; } /** *

Specifies whether the KMS key's key material expires. This value is present * only when Origin is EXTERNAL, otherwise this value is * omitted.

*/ inline void SetExpirationModel(const ExpirationModelType& value) { m_expirationModelHasBeenSet = true; m_expirationModel = value; } /** *

Specifies whether the KMS key's key material expires. This value is present * only when Origin is EXTERNAL, otherwise this value is * omitted.

*/ inline void SetExpirationModel(ExpirationModelType&& value) { m_expirationModelHasBeenSet = true; m_expirationModel = std::move(value); } /** *

Specifies whether the KMS key's key material expires. This value is present * only when Origin is EXTERNAL, otherwise this value is * omitted.

*/ inline KeyMetadata& WithExpirationModel(const ExpirationModelType& value) { SetExpirationModel(value); return *this;} /** *

Specifies whether the KMS key's key material expires. This value is present * only when Origin is EXTERNAL, otherwise this value is * omitted.

*/ inline KeyMetadata& WithExpirationModel(ExpirationModelType&& value) { SetExpirationModel(std::move(value)); return *this;} /** *

The manager of the KMS key. KMS keys in your Amazon Web Services account are * either customer managed or Amazon Web Services managed. For more information * about the difference, see KMS * keys in the Key Management Service Developer Guide.

*/ inline const KeyManagerType& GetKeyManager() const{ return m_keyManager; } /** *

The manager of the KMS key. KMS keys in your Amazon Web Services account are * either customer managed or Amazon Web Services managed. For more information * about the difference, see KMS * keys in the Key Management Service Developer Guide.

*/ inline bool KeyManagerHasBeenSet() const { return m_keyManagerHasBeenSet; } /** *

The manager of the KMS key. KMS keys in your Amazon Web Services account are * either customer managed or Amazon Web Services managed. For more information * about the difference, see KMS * keys in the Key Management Service Developer Guide.

*/ inline void SetKeyManager(const KeyManagerType& value) { m_keyManagerHasBeenSet = true; m_keyManager = value; } /** *

The manager of the KMS key. KMS keys in your Amazon Web Services account are * either customer managed or Amazon Web Services managed. For more information * about the difference, see KMS * keys in the Key Management Service Developer Guide.

*/ inline void SetKeyManager(KeyManagerType&& value) { m_keyManagerHasBeenSet = true; m_keyManager = std::move(value); } /** *

The manager of the KMS key. KMS keys in your Amazon Web Services account are * either customer managed or Amazon Web Services managed. For more information * about the difference, see KMS * keys in the Key Management Service Developer Guide.

*/ inline KeyMetadata& WithKeyManager(const KeyManagerType& value) { SetKeyManager(value); return *this;} /** *

The manager of the KMS key. KMS keys in your Amazon Web Services account are * either customer managed or Amazon Web Services managed. For more information * about the difference, see KMS * keys in the Key Management Service Developer Guide.

*/ inline KeyMetadata& WithKeyManager(KeyManagerType&& value) { SetKeyManager(std::move(value)); return *this;} /** *

Describes the type of key material in the KMS key.

*/ inline const KeySpec& GetKeySpec() const{ return m_keySpec; } /** *

Describes the type of key material in the KMS key.

*/ inline bool KeySpecHasBeenSet() const { return m_keySpecHasBeenSet; } /** *

Describes the type of key material in the KMS key.

*/ inline void SetKeySpec(const KeySpec& value) { m_keySpecHasBeenSet = true; m_keySpec = value; } /** *

Describes the type of key material in the KMS key.

*/ inline void SetKeySpec(KeySpec&& value) { m_keySpecHasBeenSet = true; m_keySpec = std::move(value); } /** *

Describes the type of key material in the KMS key.

*/ inline KeyMetadata& WithKeySpec(const KeySpec& value) { SetKeySpec(value); return *this;} /** *

Describes the type of key material in the KMS key.

*/ inline KeyMetadata& WithKeySpec(KeySpec&& value) { SetKeySpec(std::move(value)); return *this;} /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline const Aws::Vector& GetEncryptionAlgorithms() const{ return m_encryptionAlgorithms; } /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline bool EncryptionAlgorithmsHasBeenSet() const { return m_encryptionAlgorithmsHasBeenSet; } /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline void SetEncryptionAlgorithms(const Aws::Vector& value) { m_encryptionAlgorithmsHasBeenSet = true; m_encryptionAlgorithms = value; } /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline void SetEncryptionAlgorithms(Aws::Vector&& value) { m_encryptionAlgorithmsHasBeenSet = true; m_encryptionAlgorithms = std::move(value); } /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline KeyMetadata& WithEncryptionAlgorithms(const Aws::Vector& value) { SetEncryptionAlgorithms(value); return *this;} /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline KeyMetadata& WithEncryptionAlgorithms(Aws::Vector&& value) { SetEncryptionAlgorithms(std::move(value)); return *this;} /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline KeyMetadata& AddEncryptionAlgorithms(const EncryptionAlgorithmSpec& value) { m_encryptionAlgorithmsHasBeenSet = true; m_encryptionAlgorithms.push_back(value); return *this; } /** *

The encryption algorithms that the KMS key supports. You cannot use the KMS * key with other encryption algorithms within KMS.

This value is present * only when the KeyUsage of the KMS key is * ENCRYPT_DECRYPT.

*/ inline KeyMetadata& AddEncryptionAlgorithms(EncryptionAlgorithmSpec&& value) { m_encryptionAlgorithmsHasBeenSet = true; m_encryptionAlgorithms.push_back(std::move(value)); return *this; } /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline const Aws::Vector& GetSigningAlgorithms() const{ return m_signingAlgorithms; } /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline bool SigningAlgorithmsHasBeenSet() const { return m_signingAlgorithmsHasBeenSet; } /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline void SetSigningAlgorithms(const Aws::Vector& value) { m_signingAlgorithmsHasBeenSet = true; m_signingAlgorithms = value; } /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline void SetSigningAlgorithms(Aws::Vector&& value) { m_signingAlgorithmsHasBeenSet = true; m_signingAlgorithms = std::move(value); } /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline KeyMetadata& WithSigningAlgorithms(const Aws::Vector& value) { SetSigningAlgorithms(value); return *this;} /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline KeyMetadata& WithSigningAlgorithms(Aws::Vector&& value) { SetSigningAlgorithms(std::move(value)); return *this;} /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline KeyMetadata& AddSigningAlgorithms(const SigningAlgorithmSpec& value) { m_signingAlgorithmsHasBeenSet = true; m_signingAlgorithms.push_back(value); return *this; } /** *

The signing algorithms that the KMS key supports. You cannot use the KMS key * with other signing algorithms within KMS.

This field appears only when * the KeyUsage of the KMS key is SIGN_VERIFY.

*/ inline KeyMetadata& AddSigningAlgorithms(SigningAlgorithmSpec&& value) { m_signingAlgorithmsHasBeenSet = true; m_signingAlgorithms.push_back(std::move(value)); return *this; } /** *

Indicates whether the KMS key is a multi-Region (True) or * regional (False) key. This value is True for * multi-Region primary and replica keys and False for regional KMS * keys.

For more information about multi-Region keys, see Multi-Region * keys in KMS in the Key Management Service Developer Guide.

*/ inline bool GetMultiRegion() const{ return m_multiRegion; } /** *

Indicates whether the KMS key is a multi-Region (True) or * regional (False) key. This value is True for * multi-Region primary and replica keys and False for regional KMS * keys.

For more information about multi-Region keys, see Multi-Region * keys in KMS in the Key Management Service Developer Guide.

*/ inline bool MultiRegionHasBeenSet() const { return m_multiRegionHasBeenSet; } /** *

Indicates whether the KMS key is a multi-Region (True) or * regional (False) key. This value is True for * multi-Region primary and replica keys and False for regional KMS * keys.

For more information about multi-Region keys, see Multi-Region * keys in KMS in the Key Management Service Developer Guide.

*/ inline void SetMultiRegion(bool value) { m_multiRegionHasBeenSet = true; m_multiRegion = value; } /** *

Indicates whether the KMS key is a multi-Region (True) or * regional (False) key. This value is True for * multi-Region primary and replica keys and False for regional KMS * keys.

For more information about multi-Region keys, see Multi-Region * keys in KMS in the Key Management Service Developer Guide.

*/ inline KeyMetadata& WithMultiRegion(bool value) { SetMultiRegion(value); return *this;} /** *

Lists the primary and replica keys in same multi-Region key. This field is * present only when the value of the MultiRegion field is * True.

For more information about any listed KMS key, use the * DescribeKey operation.

  • MultiRegionKeyType * indicates whether the KMS key is a PRIMARY or REPLICA * key.

  • PrimaryKey displays the key ARN and Region * of the primary key. This field displays the current KMS key if it is the primary * key.

  • ReplicaKeys displays the key ARNs and * Regions of all replica keys. This field includes the current KMS key if it is a * replica key.

*/ inline const MultiRegionConfiguration& GetMultiRegionConfiguration() const{ return m_multiRegionConfiguration; } /** *

Lists the primary and replica keys in same multi-Region key. This field is * present only when the value of the MultiRegion field is * True.

For more information about any listed KMS key, use the * DescribeKey operation.

  • MultiRegionKeyType * indicates whether the KMS key is a PRIMARY or REPLICA * key.

  • PrimaryKey displays the key ARN and Region * of the primary key. This field displays the current KMS key if it is the primary * key.

  • ReplicaKeys displays the key ARNs and * Regions of all replica keys. This field includes the current KMS key if it is a * replica key.

*/ inline bool MultiRegionConfigurationHasBeenSet() const { return m_multiRegionConfigurationHasBeenSet; } /** *

Lists the primary and replica keys in same multi-Region key. This field is * present only when the value of the MultiRegion field is * True.

For more information about any listed KMS key, use the * DescribeKey operation.

  • MultiRegionKeyType * indicates whether the KMS key is a PRIMARY or REPLICA * key.

  • PrimaryKey displays the key ARN and Region * of the primary key. This field displays the current KMS key if it is the primary * key.

  • ReplicaKeys displays the key ARNs and * Regions of all replica keys. This field includes the current KMS key if it is a * replica key.

*/ inline void SetMultiRegionConfiguration(const MultiRegionConfiguration& value) { m_multiRegionConfigurationHasBeenSet = true; m_multiRegionConfiguration = value; } /** *

Lists the primary and replica keys in same multi-Region key. This field is * present only when the value of the MultiRegion field is * True.

For more information about any listed KMS key, use the * DescribeKey operation.

  • MultiRegionKeyType * indicates whether the KMS key is a PRIMARY or REPLICA * key.

  • PrimaryKey displays the key ARN and Region * of the primary key. This field displays the current KMS key if it is the primary * key.

  • ReplicaKeys displays the key ARNs and * Regions of all replica keys. This field includes the current KMS key if it is a * replica key.

*/ inline void SetMultiRegionConfiguration(MultiRegionConfiguration&& value) { m_multiRegionConfigurationHasBeenSet = true; m_multiRegionConfiguration = std::move(value); } /** *

Lists the primary and replica keys in same multi-Region key. This field is * present only when the value of the MultiRegion field is * True.

For more information about any listed KMS key, use the * DescribeKey operation.

  • MultiRegionKeyType * indicates whether the KMS key is a PRIMARY or REPLICA * key.

  • PrimaryKey displays the key ARN and Region * of the primary key. This field displays the current KMS key if it is the primary * key.

  • ReplicaKeys displays the key ARNs and * Regions of all replica keys. This field includes the current KMS key if it is a * replica key.

*/ inline KeyMetadata& WithMultiRegionConfiguration(const MultiRegionConfiguration& value) { SetMultiRegionConfiguration(value); return *this;} /** *

Lists the primary and replica keys in same multi-Region key. This field is * present only when the value of the MultiRegion field is * True.

For more information about any listed KMS key, use the * DescribeKey operation.

  • MultiRegionKeyType * indicates whether the KMS key is a PRIMARY or REPLICA * key.

  • PrimaryKey displays the key ARN and Region * of the primary key. This field displays the current KMS key if it is the primary * key.

  • ReplicaKeys displays the key ARNs and * Regions of all replica keys. This field includes the current KMS key if it is a * replica key.

*/ inline KeyMetadata& WithMultiRegionConfiguration(MultiRegionConfiguration&& value) { SetMultiRegionConfiguration(std::move(value)); return *this;} /** *

The waiting period before the primary key in a multi-Region key is deleted. * This waiting period begins when the last of its replica keys is deleted. This * value is present only when the KeyState of the KMS key is * PendingReplicaDeletion. That indicates that the KMS key is the * primary key in a multi-Region key, it is scheduled for deletion, and it still * has existing replica keys.

When a single-Region KMS key or a multi-Region * replica key is scheduled for deletion, its deletion date is displayed in the * DeletionDate field. However, when the primary key in a multi-Region * key is scheduled for deletion, its waiting period doesn't begin until all of its * replica keys are deleted. This value displays that waiting period. When the last * replica key in the multi-Region key is deleted, the KeyState of the * scheduled primary key changes from PendingReplicaDeletion to * PendingDeletion and the deletion date appears in the * DeletionDate field.

*/ inline int GetPendingDeletionWindowInDays() const{ return m_pendingDeletionWindowInDays; } /** *

The waiting period before the primary key in a multi-Region key is deleted. * This waiting period begins when the last of its replica keys is deleted. This * value is present only when the KeyState of the KMS key is * PendingReplicaDeletion. That indicates that the KMS key is the * primary key in a multi-Region key, it is scheduled for deletion, and it still * has existing replica keys.

When a single-Region KMS key or a multi-Region * replica key is scheduled for deletion, its deletion date is displayed in the * DeletionDate field. However, when the primary key in a multi-Region * key is scheduled for deletion, its waiting period doesn't begin until all of its * replica keys are deleted. This value displays that waiting period. When the last * replica key in the multi-Region key is deleted, the KeyState of the * scheduled primary key changes from PendingReplicaDeletion to * PendingDeletion and the deletion date appears in the * DeletionDate field.

*/ inline bool PendingDeletionWindowInDaysHasBeenSet() const { return m_pendingDeletionWindowInDaysHasBeenSet; } /** *

The waiting period before the primary key in a multi-Region key is deleted. * This waiting period begins when the last of its replica keys is deleted. This * value is present only when the KeyState of the KMS key is * PendingReplicaDeletion. That indicates that the KMS key is the * primary key in a multi-Region key, it is scheduled for deletion, and it still * has existing replica keys.

When a single-Region KMS key or a multi-Region * replica key is scheduled for deletion, its deletion date is displayed in the * DeletionDate field. However, when the primary key in a multi-Region * key is scheduled for deletion, its waiting period doesn't begin until all of its * replica keys are deleted. This value displays that waiting period. When the last * replica key in the multi-Region key is deleted, the KeyState of the * scheduled primary key changes from PendingReplicaDeletion to * PendingDeletion and the deletion date appears in the * DeletionDate field.

*/ inline void SetPendingDeletionWindowInDays(int value) { m_pendingDeletionWindowInDaysHasBeenSet = true; m_pendingDeletionWindowInDays = value; } /** *

The waiting period before the primary key in a multi-Region key is deleted. * This waiting period begins when the last of its replica keys is deleted. This * value is present only when the KeyState of the KMS key is * PendingReplicaDeletion. That indicates that the KMS key is the * primary key in a multi-Region key, it is scheduled for deletion, and it still * has existing replica keys.

When a single-Region KMS key or a multi-Region * replica key is scheduled for deletion, its deletion date is displayed in the * DeletionDate field. However, when the primary key in a multi-Region * key is scheduled for deletion, its waiting period doesn't begin until all of its * replica keys are deleted. This value displays that waiting period. When the last * replica key in the multi-Region key is deleted, the KeyState of the * scheduled primary key changes from PendingReplicaDeletion to * PendingDeletion and the deletion date appears in the * DeletionDate field.

*/ inline KeyMetadata& WithPendingDeletionWindowInDays(int value) { SetPendingDeletionWindowInDays(value); return *this;} /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline const Aws::Vector& GetMacAlgorithms() const{ return m_macAlgorithms; } /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline bool MacAlgorithmsHasBeenSet() const { return m_macAlgorithmsHasBeenSet; } /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline void SetMacAlgorithms(const Aws::Vector& value) { m_macAlgorithmsHasBeenSet = true; m_macAlgorithms = value; } /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline void SetMacAlgorithms(Aws::Vector&& value) { m_macAlgorithmsHasBeenSet = true; m_macAlgorithms = std::move(value); } /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline KeyMetadata& WithMacAlgorithms(const Aws::Vector& value) { SetMacAlgorithms(value); return *this;} /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline KeyMetadata& WithMacAlgorithms(Aws::Vector&& value) { SetMacAlgorithms(std::move(value)); return *this;} /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline KeyMetadata& AddMacAlgorithms(const MacAlgorithmSpec& value) { m_macAlgorithmsHasBeenSet = true; m_macAlgorithms.push_back(value); return *this; } /** *

The message authentication code (MAC) algorithm that the HMAC KMS key * supports.

This value is present only when the KeyUsage of * the KMS key is GENERATE_VERIFY_MAC.

*/ inline KeyMetadata& AddMacAlgorithms(MacAlgorithmSpec&& value) { m_macAlgorithmsHasBeenSet = true; m_macAlgorithms.push_back(std::move(value)); return *this; } /** *

Information about the external key that is associated with a KMS key in an * external key store.

For more information, see External * key in the Key Management Service Developer Guide.

*/ inline const XksKeyConfigurationType& GetXksKeyConfiguration() const{ return m_xksKeyConfiguration; } /** *

Information about the external key that is associated with a KMS key in an * external key store.

For more information, see External * key in the Key Management Service Developer Guide.

*/ inline bool XksKeyConfigurationHasBeenSet() const { return m_xksKeyConfigurationHasBeenSet; } /** *

Information about the external key that is associated with a KMS key in an * external key store.

For more information, see External * key in the Key Management Service Developer Guide.

*/ inline void SetXksKeyConfiguration(const XksKeyConfigurationType& value) { m_xksKeyConfigurationHasBeenSet = true; m_xksKeyConfiguration = value; } /** *

Information about the external key that is associated with a KMS key in an * external key store.

For more information, see External * key in the Key Management Service Developer Guide.

*/ inline void SetXksKeyConfiguration(XksKeyConfigurationType&& value) { m_xksKeyConfigurationHasBeenSet = true; m_xksKeyConfiguration = std::move(value); } /** *

Information about the external key that is associated with a KMS key in an * external key store.

For more information, see External * key in the Key Management Service Developer Guide.

*/ inline KeyMetadata& WithXksKeyConfiguration(const XksKeyConfigurationType& value) { SetXksKeyConfiguration(value); return *this;} /** *

Information about the external key that is associated with a KMS key in an * external key store.

For more information, see External * key in the Key Management Service Developer Guide.

*/ inline KeyMetadata& WithXksKeyConfiguration(XksKeyConfigurationType&& value) { SetXksKeyConfiguration(std::move(value)); return *this;} private: Aws::String m_aWSAccountId; bool m_aWSAccountIdHasBeenSet = false; Aws::String m_keyId; bool m_keyIdHasBeenSet = false; Aws::String m_arn; bool m_arnHasBeenSet = false; Aws::Utils::DateTime m_creationDate; bool m_creationDateHasBeenSet = false; bool m_enabled; bool m_enabledHasBeenSet = false; Aws::String m_description; bool m_descriptionHasBeenSet = false; KeyUsageType m_keyUsage; bool m_keyUsageHasBeenSet = false; KeyState m_keyState; bool m_keyStateHasBeenSet = false; Aws::Utils::DateTime m_deletionDate; bool m_deletionDateHasBeenSet = false; Aws::Utils::DateTime m_validTo; bool m_validToHasBeenSet = false; OriginType m_origin; bool m_originHasBeenSet = false; Aws::String m_customKeyStoreId; bool m_customKeyStoreIdHasBeenSet = false; Aws::String m_cloudHsmClusterId; bool m_cloudHsmClusterIdHasBeenSet = false; ExpirationModelType m_expirationModel; bool m_expirationModelHasBeenSet = false; KeyManagerType m_keyManager; bool m_keyManagerHasBeenSet = false; KeySpec m_keySpec; bool m_keySpecHasBeenSet = false; Aws::Vector m_encryptionAlgorithms; bool m_encryptionAlgorithmsHasBeenSet = false; Aws::Vector m_signingAlgorithms; bool m_signingAlgorithmsHasBeenSet = false; bool m_multiRegion; bool m_multiRegionHasBeenSet = false; MultiRegionConfiguration m_multiRegionConfiguration; bool m_multiRegionConfigurationHasBeenSet = false; int m_pendingDeletionWindowInDays; bool m_pendingDeletionWindowInDaysHasBeenSet = false; Aws::Vector m_macAlgorithms; bool m_macAlgorithmsHasBeenSet = false; XksKeyConfigurationType m_xksKeyConfiguration; bool m_xksKeyConfigurationHasBeenSet = false; }; } // namespace Model } // namespace KMS } // namespace Aws