{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.KMS.Types.KeyMetadata
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.KMS.Types.KeyMetadata where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.KMS.Types.CustomerMasterKeySpec
import Amazonka.KMS.Types.EncryptionAlgorithmSpec
import Amazonka.KMS.Types.ExpirationModelType
import Amazonka.KMS.Types.KeyManagerType
import Amazonka.KMS.Types.KeySpec
import Amazonka.KMS.Types.KeyState
import Amazonka.KMS.Types.KeyUsageType
import Amazonka.KMS.Types.MacAlgorithmSpec
import Amazonka.KMS.Types.MultiRegionConfiguration
import Amazonka.KMS.Types.OriginType
import Amazonka.KMS.Types.SigningAlgorithmSpec
import Amazonka.KMS.Types.XksKeyConfigurationType
import qualified Amazonka.Prelude as Prelude

-- | Contains metadata about a KMS key.
--
-- This data type is used as a response element for the CreateKey,
-- DescribeKey, and ReplicateKey operations.
--
-- /See:/ 'newKeyMetadata' smart constructor.
data KeyMetadata = KeyMetadata'
  { -- | The twelve-digit account ID of the Amazon Web Services account that owns
    -- the KMS key.
    KeyMetadata -> Maybe Text
aWSAccountId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the KMS key. For examples, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-kms Key Management Service (KMS)>
    -- in the Example ARNs section of the /Amazon Web Services General
    -- Reference/.
    KeyMetadata -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | 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
    -- <https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html 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.
    KeyMetadata -> Maybe Text
cloudHsmClusterId :: Prelude.Maybe Prelude.Text,
    -- | The date and time when the KMS key was created.
    KeyMetadata -> Maybe POSIX
creationDate :: Prelude.Maybe Data.POSIX,
    -- | A unique identifier for the
    -- <https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html custom key store>
    -- that contains the KMS key. This field is present only when the KMS key
    -- is created in a custom key store.
    KeyMetadata -> Maybe Text
customKeyStoreId :: Prelude.Maybe Prelude.Text,
    -- | Instead, use the @KeySpec@ field.
    --
    -- The @KeySpec@ and @CustomerMasterKeySpec@ fields have the same value. We
    -- recommend that you use the @KeySpec@ field in your code. However, to
    -- avoid breaking changes, KMS supports both fields.
    KeyMetadata -> Maybe CustomerMasterKeySpec
customerMasterKeySpec :: Prelude.Maybe CustomerMasterKeySpec,
    -- | 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.
    KeyMetadata -> Maybe POSIX
deletionDate :: Prelude.Maybe Data.POSIX,
    -- | The description of the KMS key.
    KeyMetadata -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether the KMS key is enabled. When @KeyState@ is @Enabled@
    -- this value is true, otherwise it is false.
    KeyMetadata -> Maybe Bool
enabled :: Prelude.Maybe Prelude.Bool,
    -- | 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@.
    KeyMetadata -> Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms :: Prelude.Maybe [EncryptionAlgorithmSpec],
    -- | Specifies whether the KMS key\'s key material expires. This value is
    -- present only when @Origin@ is @EXTERNAL@, otherwise this value is
    -- omitted.
    KeyMetadata -> Maybe ExpirationModelType
expirationModel :: Prelude.Maybe ExpirationModelType,
    -- | 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
    -- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys KMS keys>
    -- in the /Key Management Service Developer Guide/.
    KeyMetadata -> Maybe KeyManagerType
keyManager :: Prelude.Maybe KeyManagerType,
    -- | Describes the type of key material in the KMS key.
    KeyMetadata -> Maybe KeySpec
keySpec :: Prelude.Maybe KeySpec,
    -- | The current status of the KMS key.
    --
    -- For more information about how key state affects the use of a KMS key,
    -- see
    -- <https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html Key states of KMS keys>
    -- in the /Key Management Service Developer Guide/.
    KeyMetadata -> Maybe KeyState
keyState :: Prelude.Maybe KeyState,
    -- | The
    -- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations cryptographic operations>
    -- for which you can use the KMS key.
    KeyMetadata -> Maybe KeyUsageType
keyUsage :: Prelude.Maybe KeyUsageType,
    -- | 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@.
    KeyMetadata -> Maybe [MacAlgorithmSpec]
macAlgorithms :: Prelude.Maybe [MacAlgorithmSpec],
    -- | 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
    -- <https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html Multi-Region keys in KMS>
    -- in the /Key Management Service Developer Guide/.
    KeyMetadata -> Maybe Bool
multiRegion :: Prelude.Maybe Prelude.Bool,
    -- | 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.
    KeyMetadata -> Maybe MultiRegionConfiguration
multiRegionConfiguration :: Prelude.Maybe MultiRegionConfiguration,
    -- | 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.
    KeyMetadata -> Maybe OriginType
origin :: Prelude.Maybe OriginType,
    -- | 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.
    KeyMetadata -> Maybe Natural
pendingDeletionWindowInDays :: Prelude.Maybe Prelude.Natural,
    -- | 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@.
    KeyMetadata -> Maybe [SigningAlgorithmSpec]
signingAlgorithms :: Prelude.Maybe [SigningAlgorithmSpec],
    -- | 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.
    KeyMetadata -> Maybe POSIX
validTo :: Prelude.Maybe Data.POSIX,
    -- | Information about the external key that is associated with a KMS key in
    -- an external key store.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html#concept-external-key External key>
    -- in the /Key Management Service Developer Guide/.
    KeyMetadata -> Maybe XksKeyConfigurationType
xksKeyConfiguration :: Prelude.Maybe XksKeyConfigurationType,
    -- | The globally unique identifier for the KMS key.
    KeyMetadata -> Text
keyId :: Prelude.Text
  }
  deriving (KeyMetadata -> KeyMetadata -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyMetadata -> KeyMetadata -> Bool
$c/= :: KeyMetadata -> KeyMetadata -> Bool
== :: KeyMetadata -> KeyMetadata -> Bool
$c== :: KeyMetadata -> KeyMetadata -> Bool
Prelude.Eq, ReadPrec [KeyMetadata]
ReadPrec KeyMetadata
Int -> ReadS KeyMetadata
ReadS [KeyMetadata]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [KeyMetadata]
$creadListPrec :: ReadPrec [KeyMetadata]
readPrec :: ReadPrec KeyMetadata
$creadPrec :: ReadPrec KeyMetadata
readList :: ReadS [KeyMetadata]
$creadList :: ReadS [KeyMetadata]
readsPrec :: Int -> ReadS KeyMetadata
$creadsPrec :: Int -> ReadS KeyMetadata
Prelude.Read, Int -> KeyMetadata -> ShowS
[KeyMetadata] -> ShowS
KeyMetadata -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyMetadata] -> ShowS
$cshowList :: [KeyMetadata] -> ShowS
show :: KeyMetadata -> String
$cshow :: KeyMetadata -> String
showsPrec :: Int -> KeyMetadata -> ShowS
$cshowsPrec :: Int -> KeyMetadata -> ShowS
Prelude.Show, forall x. Rep KeyMetadata x -> KeyMetadata
forall x. KeyMetadata -> Rep KeyMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep KeyMetadata x -> KeyMetadata
$cfrom :: forall x. KeyMetadata -> Rep KeyMetadata x
Prelude.Generic)

-- |
-- Create a value of 'KeyMetadata' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'aWSAccountId', 'keyMetadata_aWSAccountId' - The twelve-digit account ID of the Amazon Web Services account that owns
-- the KMS key.
--
-- 'arn', 'keyMetadata_arn' - The Amazon Resource Name (ARN) of the KMS key. For examples, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-kms Key Management Service (KMS)>
-- in the Example ARNs section of the /Amazon Web Services General
-- Reference/.
--
-- 'cloudHsmClusterId', 'keyMetadata_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
-- <https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html 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.
--
-- 'creationDate', 'keyMetadata_creationDate' - The date and time when the KMS key was created.
--
-- 'customKeyStoreId', 'keyMetadata_customKeyStoreId' - A unique identifier for the
-- <https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html custom key store>
-- that contains the KMS key. This field is present only when the KMS key
-- is created in a custom key store.
--
-- 'customerMasterKeySpec', 'keyMetadata_customerMasterKeySpec' - Instead, use the @KeySpec@ field.
--
-- The @KeySpec@ and @CustomerMasterKeySpec@ fields have the same value. We
-- recommend that you use the @KeySpec@ field in your code. However, to
-- avoid breaking changes, KMS supports both fields.
--
-- 'deletionDate', 'keyMetadata_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.
--
-- 'description', 'keyMetadata_description' - The description of the KMS key.
--
-- 'enabled', 'keyMetadata_enabled' - Specifies whether the KMS key is enabled. When @KeyState@ is @Enabled@
-- this value is true, otherwise it is false.
--
-- 'encryptionAlgorithms', 'keyMetadata_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@.
--
-- 'expirationModel', 'keyMetadata_expirationModel' - Specifies whether the KMS key\'s key material expires. This value is
-- present only when @Origin@ is @EXTERNAL@, otherwise this value is
-- omitted.
--
-- 'keyManager', 'keyMetadata_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
-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys KMS keys>
-- in the /Key Management Service Developer Guide/.
--
-- 'keySpec', 'keyMetadata_keySpec' - Describes the type of key material in the KMS key.
--
-- 'keyState', 'keyMetadata_keyState' - The current status of the KMS key.
--
-- For more information about how key state affects the use of a KMS key,
-- see
-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html Key states of KMS keys>
-- in the /Key Management Service Developer Guide/.
--
-- 'keyUsage', 'keyMetadata_keyUsage' - The
-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations cryptographic operations>
-- for which you can use the KMS key.
--
-- 'macAlgorithms', 'keyMetadata_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@.
--
-- 'multiRegion', 'keyMetadata_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
-- <https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html Multi-Region keys in KMS>
-- in the /Key Management Service Developer Guide/.
--
-- 'multiRegionConfiguration', 'keyMetadata_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.
--
-- 'origin', 'keyMetadata_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.
--
-- 'pendingDeletionWindowInDays', 'keyMetadata_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.
--
-- 'signingAlgorithms', 'keyMetadata_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@.
--
-- 'validTo', 'keyMetadata_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.
--
-- 'xksKeyConfiguration', 'keyMetadata_xksKeyConfiguration' - Information about the external key that is associated with a KMS key in
-- an external key store.
--
-- For more information, see
-- <https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html#concept-external-key External key>
-- in the /Key Management Service Developer Guide/.
--
-- 'keyId', 'keyMetadata_keyId' - The globally unique identifier for the KMS key.
newKeyMetadata ::
  -- | 'keyId'
  Prelude.Text ->
  KeyMetadata
newKeyMetadata :: Text -> KeyMetadata
newKeyMetadata Text
pKeyId_ =
  KeyMetadata'
    { $sel:aWSAccountId:KeyMetadata' :: Maybe Text
aWSAccountId = forall a. Maybe a
Prelude.Nothing,
      $sel:arn:KeyMetadata' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:cloudHsmClusterId:KeyMetadata' :: Maybe Text
cloudHsmClusterId = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:KeyMetadata' :: Maybe POSIX
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:customKeyStoreId:KeyMetadata' :: Maybe Text
customKeyStoreId = forall a. Maybe a
Prelude.Nothing,
      $sel:customerMasterKeySpec:KeyMetadata' :: Maybe CustomerMasterKeySpec
customerMasterKeySpec = forall a. Maybe a
Prelude.Nothing,
      $sel:deletionDate:KeyMetadata' :: Maybe POSIX
deletionDate = forall a. Maybe a
Prelude.Nothing,
      $sel:description:KeyMetadata' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:enabled:KeyMetadata' :: Maybe Bool
enabled = forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionAlgorithms:KeyMetadata' :: Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms = forall a. Maybe a
Prelude.Nothing,
      $sel:expirationModel:KeyMetadata' :: Maybe ExpirationModelType
expirationModel = forall a. Maybe a
Prelude.Nothing,
      $sel:keyManager:KeyMetadata' :: Maybe KeyManagerType
keyManager = forall a. Maybe a
Prelude.Nothing,
      $sel:keySpec:KeyMetadata' :: Maybe KeySpec
keySpec = forall a. Maybe a
Prelude.Nothing,
      $sel:keyState:KeyMetadata' :: Maybe KeyState
keyState = forall a. Maybe a
Prelude.Nothing,
      $sel:keyUsage:KeyMetadata' :: Maybe KeyUsageType
keyUsage = forall a. Maybe a
Prelude.Nothing,
      $sel:macAlgorithms:KeyMetadata' :: Maybe [MacAlgorithmSpec]
macAlgorithms = forall a. Maybe a
Prelude.Nothing,
      $sel:multiRegion:KeyMetadata' :: Maybe Bool
multiRegion = forall a. Maybe a
Prelude.Nothing,
      $sel:multiRegionConfiguration:KeyMetadata' :: Maybe MultiRegionConfiguration
multiRegionConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:origin:KeyMetadata' :: Maybe OriginType
origin = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingDeletionWindowInDays:KeyMetadata' :: Maybe Natural
pendingDeletionWindowInDays = forall a. Maybe a
Prelude.Nothing,
      $sel:signingAlgorithms:KeyMetadata' :: Maybe [SigningAlgorithmSpec]
signingAlgorithms = forall a. Maybe a
Prelude.Nothing,
      $sel:validTo:KeyMetadata' :: Maybe POSIX
validTo = forall a. Maybe a
Prelude.Nothing,
      $sel:xksKeyConfiguration:KeyMetadata' :: Maybe XksKeyConfigurationType
xksKeyConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:keyId:KeyMetadata' :: Text
keyId = Text
pKeyId_
    }

-- | The twelve-digit account ID of the Amazon Web Services account that owns
-- the KMS key.
keyMetadata_aWSAccountId :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Text)
keyMetadata_aWSAccountId :: Lens' KeyMetadata (Maybe Text)
keyMetadata_aWSAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Text
aWSAccountId :: Maybe Text
$sel:aWSAccountId:KeyMetadata' :: KeyMetadata -> Maybe Text
aWSAccountId} -> Maybe Text
aWSAccountId) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Text
a -> KeyMetadata
s {$sel:aWSAccountId:KeyMetadata' :: Maybe Text
aWSAccountId = Maybe Text
a} :: KeyMetadata)

-- | The Amazon Resource Name (ARN) of the KMS key. For examples, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-kms Key Management Service (KMS)>
-- in the Example ARNs section of the /Amazon Web Services General
-- Reference/.
keyMetadata_arn :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Text)
keyMetadata_arn :: Lens' KeyMetadata (Maybe Text)
keyMetadata_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Text
arn :: Maybe Text
$sel:arn:KeyMetadata' :: KeyMetadata -> Maybe Text
arn} -> Maybe Text
arn) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Text
a -> KeyMetadata
s {$sel:arn:KeyMetadata' :: Maybe Text
arn = Maybe Text
a} :: KeyMetadata)

-- | 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
-- <https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html 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.
keyMetadata_cloudHsmClusterId :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Text)
keyMetadata_cloudHsmClusterId :: Lens' KeyMetadata (Maybe Text)
keyMetadata_cloudHsmClusterId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Text
cloudHsmClusterId :: Maybe Text
$sel:cloudHsmClusterId:KeyMetadata' :: KeyMetadata -> Maybe Text
cloudHsmClusterId} -> Maybe Text
cloudHsmClusterId) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Text
a -> KeyMetadata
s {$sel:cloudHsmClusterId:KeyMetadata' :: Maybe Text
cloudHsmClusterId = Maybe Text
a} :: KeyMetadata)

-- | The date and time when the KMS key was created.
keyMetadata_creationDate :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.UTCTime)
keyMetadata_creationDate :: Lens' KeyMetadata (Maybe UTCTime)
keyMetadata_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:KeyMetadata' :: KeyMetadata -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe POSIX
a -> KeyMetadata
s {$sel:creationDate:KeyMetadata' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: KeyMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A unique identifier for the
-- <https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html custom key store>
-- that contains the KMS key. This field is present only when the KMS key
-- is created in a custom key store.
keyMetadata_customKeyStoreId :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Text)
keyMetadata_customKeyStoreId :: Lens' KeyMetadata (Maybe Text)
keyMetadata_customKeyStoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Text
customKeyStoreId :: Maybe Text
$sel:customKeyStoreId:KeyMetadata' :: KeyMetadata -> Maybe Text
customKeyStoreId} -> Maybe Text
customKeyStoreId) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Text
a -> KeyMetadata
s {$sel:customKeyStoreId:KeyMetadata' :: Maybe Text
customKeyStoreId = Maybe Text
a} :: KeyMetadata)

-- | Instead, use the @KeySpec@ field.
--
-- The @KeySpec@ and @CustomerMasterKeySpec@ fields have the same value. We
-- recommend that you use the @KeySpec@ field in your code. However, to
-- avoid breaking changes, KMS supports both fields.
keyMetadata_customerMasterKeySpec :: Lens.Lens' KeyMetadata (Prelude.Maybe CustomerMasterKeySpec)
keyMetadata_customerMasterKeySpec :: Lens' KeyMetadata (Maybe CustomerMasterKeySpec)
keyMetadata_customerMasterKeySpec = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe CustomerMasterKeySpec
customerMasterKeySpec :: Maybe CustomerMasterKeySpec
$sel:customerMasterKeySpec:KeyMetadata' :: KeyMetadata -> Maybe CustomerMasterKeySpec
customerMasterKeySpec} -> Maybe CustomerMasterKeySpec
customerMasterKeySpec) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe CustomerMasterKeySpec
a -> KeyMetadata
s {$sel:customerMasterKeySpec:KeyMetadata' :: Maybe CustomerMasterKeySpec
customerMasterKeySpec = Maybe CustomerMasterKeySpec
a} :: KeyMetadata)

-- | 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.
keyMetadata_deletionDate :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.UTCTime)
keyMetadata_deletionDate :: Lens' KeyMetadata (Maybe UTCTime)
keyMetadata_deletionDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe POSIX
deletionDate :: Maybe POSIX
$sel:deletionDate:KeyMetadata' :: KeyMetadata -> Maybe POSIX
deletionDate} -> Maybe POSIX
deletionDate) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe POSIX
a -> KeyMetadata
s {$sel:deletionDate:KeyMetadata' :: Maybe POSIX
deletionDate = Maybe POSIX
a} :: KeyMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The description of the KMS key.
keyMetadata_description :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Text)
keyMetadata_description :: Lens' KeyMetadata (Maybe Text)
keyMetadata_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Text
description :: Maybe Text
$sel:description:KeyMetadata' :: KeyMetadata -> Maybe Text
description} -> Maybe Text
description) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Text
a -> KeyMetadata
s {$sel:description:KeyMetadata' :: Maybe Text
description = Maybe Text
a} :: KeyMetadata)

-- | Specifies whether the KMS key is enabled. When @KeyState@ is @Enabled@
-- this value is true, otherwise it is false.
keyMetadata_enabled :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Bool)
keyMetadata_enabled :: Lens' KeyMetadata (Maybe Bool)
keyMetadata_enabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Bool
enabled :: Maybe Bool
$sel:enabled:KeyMetadata' :: KeyMetadata -> Maybe Bool
enabled} -> Maybe Bool
enabled) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Bool
a -> KeyMetadata
s {$sel:enabled:KeyMetadata' :: Maybe Bool
enabled = Maybe Bool
a} :: KeyMetadata)

-- | 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@.
keyMetadata_encryptionAlgorithms :: Lens.Lens' KeyMetadata (Prelude.Maybe [EncryptionAlgorithmSpec])
keyMetadata_encryptionAlgorithms :: Lens' KeyMetadata (Maybe [EncryptionAlgorithmSpec])
keyMetadata_encryptionAlgorithms = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms :: Maybe [EncryptionAlgorithmSpec]
$sel:encryptionAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms} -> Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe [EncryptionAlgorithmSpec]
a -> KeyMetadata
s {$sel:encryptionAlgorithms:KeyMetadata' :: Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms = Maybe [EncryptionAlgorithmSpec]
a} :: KeyMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specifies whether the KMS key\'s key material expires. This value is
-- present only when @Origin@ is @EXTERNAL@, otherwise this value is
-- omitted.
keyMetadata_expirationModel :: Lens.Lens' KeyMetadata (Prelude.Maybe ExpirationModelType)
keyMetadata_expirationModel :: Lens' KeyMetadata (Maybe ExpirationModelType)
keyMetadata_expirationModel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe ExpirationModelType
expirationModel :: Maybe ExpirationModelType
$sel:expirationModel:KeyMetadata' :: KeyMetadata -> Maybe ExpirationModelType
expirationModel} -> Maybe ExpirationModelType
expirationModel) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe ExpirationModelType
a -> KeyMetadata
s {$sel:expirationModel:KeyMetadata' :: Maybe ExpirationModelType
expirationModel = Maybe ExpirationModelType
a} :: KeyMetadata)

-- | 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
-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys KMS keys>
-- in the /Key Management Service Developer Guide/.
keyMetadata_keyManager :: Lens.Lens' KeyMetadata (Prelude.Maybe KeyManagerType)
keyMetadata_keyManager :: Lens' KeyMetadata (Maybe KeyManagerType)
keyMetadata_keyManager = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe KeyManagerType
keyManager :: Maybe KeyManagerType
$sel:keyManager:KeyMetadata' :: KeyMetadata -> Maybe KeyManagerType
keyManager} -> Maybe KeyManagerType
keyManager) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe KeyManagerType
a -> KeyMetadata
s {$sel:keyManager:KeyMetadata' :: Maybe KeyManagerType
keyManager = Maybe KeyManagerType
a} :: KeyMetadata)

-- | Describes the type of key material in the KMS key.
keyMetadata_keySpec :: Lens.Lens' KeyMetadata (Prelude.Maybe KeySpec)
keyMetadata_keySpec :: Lens' KeyMetadata (Maybe KeySpec)
keyMetadata_keySpec = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe KeySpec
keySpec :: Maybe KeySpec
$sel:keySpec:KeyMetadata' :: KeyMetadata -> Maybe KeySpec
keySpec} -> Maybe KeySpec
keySpec) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe KeySpec
a -> KeyMetadata
s {$sel:keySpec:KeyMetadata' :: Maybe KeySpec
keySpec = Maybe KeySpec
a} :: KeyMetadata)

-- | The current status of the KMS key.
--
-- For more information about how key state affects the use of a KMS key,
-- see
-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html Key states of KMS keys>
-- in the /Key Management Service Developer Guide/.
keyMetadata_keyState :: Lens.Lens' KeyMetadata (Prelude.Maybe KeyState)
keyMetadata_keyState :: Lens' KeyMetadata (Maybe KeyState)
keyMetadata_keyState = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe KeyState
keyState :: Maybe KeyState
$sel:keyState:KeyMetadata' :: KeyMetadata -> Maybe KeyState
keyState} -> Maybe KeyState
keyState) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe KeyState
a -> KeyMetadata
s {$sel:keyState:KeyMetadata' :: Maybe KeyState
keyState = Maybe KeyState
a} :: KeyMetadata)

-- | The
-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations cryptographic operations>
-- for which you can use the KMS key.
keyMetadata_keyUsage :: Lens.Lens' KeyMetadata (Prelude.Maybe KeyUsageType)
keyMetadata_keyUsage :: Lens' KeyMetadata (Maybe KeyUsageType)
keyMetadata_keyUsage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe KeyUsageType
keyUsage :: Maybe KeyUsageType
$sel:keyUsage:KeyMetadata' :: KeyMetadata -> Maybe KeyUsageType
keyUsage} -> Maybe KeyUsageType
keyUsage) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe KeyUsageType
a -> KeyMetadata
s {$sel:keyUsage:KeyMetadata' :: Maybe KeyUsageType
keyUsage = Maybe KeyUsageType
a} :: KeyMetadata)

-- | 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@.
keyMetadata_macAlgorithms :: Lens.Lens' KeyMetadata (Prelude.Maybe [MacAlgorithmSpec])
keyMetadata_macAlgorithms :: Lens' KeyMetadata (Maybe [MacAlgorithmSpec])
keyMetadata_macAlgorithms = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe [MacAlgorithmSpec]
macAlgorithms :: Maybe [MacAlgorithmSpec]
$sel:macAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [MacAlgorithmSpec]
macAlgorithms} -> Maybe [MacAlgorithmSpec]
macAlgorithms) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe [MacAlgorithmSpec]
a -> KeyMetadata
s {$sel:macAlgorithms:KeyMetadata' :: Maybe [MacAlgorithmSpec]
macAlgorithms = Maybe [MacAlgorithmSpec]
a} :: KeyMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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
-- <https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html Multi-Region keys in KMS>
-- in the /Key Management Service Developer Guide/.
keyMetadata_multiRegion :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Bool)
keyMetadata_multiRegion :: Lens' KeyMetadata (Maybe Bool)
keyMetadata_multiRegion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Bool
multiRegion :: Maybe Bool
$sel:multiRegion:KeyMetadata' :: KeyMetadata -> Maybe Bool
multiRegion} -> Maybe Bool
multiRegion) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Bool
a -> KeyMetadata
s {$sel:multiRegion:KeyMetadata' :: Maybe Bool
multiRegion = Maybe Bool
a} :: KeyMetadata)

-- | 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.
keyMetadata_multiRegionConfiguration :: Lens.Lens' KeyMetadata (Prelude.Maybe MultiRegionConfiguration)
keyMetadata_multiRegionConfiguration :: Lens' KeyMetadata (Maybe MultiRegionConfiguration)
keyMetadata_multiRegionConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe MultiRegionConfiguration
multiRegionConfiguration :: Maybe MultiRegionConfiguration
$sel:multiRegionConfiguration:KeyMetadata' :: KeyMetadata -> Maybe MultiRegionConfiguration
multiRegionConfiguration} -> Maybe MultiRegionConfiguration
multiRegionConfiguration) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe MultiRegionConfiguration
a -> KeyMetadata
s {$sel:multiRegionConfiguration:KeyMetadata' :: Maybe MultiRegionConfiguration
multiRegionConfiguration = Maybe MultiRegionConfiguration
a} :: KeyMetadata)

-- | 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.
keyMetadata_origin :: Lens.Lens' KeyMetadata (Prelude.Maybe OriginType)
keyMetadata_origin :: Lens' KeyMetadata (Maybe OriginType)
keyMetadata_origin = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe OriginType
origin :: Maybe OriginType
$sel:origin:KeyMetadata' :: KeyMetadata -> Maybe OriginType
origin} -> Maybe OriginType
origin) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe OriginType
a -> KeyMetadata
s {$sel:origin:KeyMetadata' :: Maybe OriginType
origin = Maybe OriginType
a} :: KeyMetadata)

-- | 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.
keyMetadata_pendingDeletionWindowInDays :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.Natural)
keyMetadata_pendingDeletionWindowInDays :: Lens' KeyMetadata (Maybe Natural)
keyMetadata_pendingDeletionWindowInDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe Natural
pendingDeletionWindowInDays :: Maybe Natural
$sel:pendingDeletionWindowInDays:KeyMetadata' :: KeyMetadata -> Maybe Natural
pendingDeletionWindowInDays} -> Maybe Natural
pendingDeletionWindowInDays) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe Natural
a -> KeyMetadata
s {$sel:pendingDeletionWindowInDays:KeyMetadata' :: Maybe Natural
pendingDeletionWindowInDays = Maybe Natural
a} :: KeyMetadata)

-- | 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@.
keyMetadata_signingAlgorithms :: Lens.Lens' KeyMetadata (Prelude.Maybe [SigningAlgorithmSpec])
keyMetadata_signingAlgorithms :: Lens' KeyMetadata (Maybe [SigningAlgorithmSpec])
keyMetadata_signingAlgorithms = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe [SigningAlgorithmSpec]
signingAlgorithms :: Maybe [SigningAlgorithmSpec]
$sel:signingAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [SigningAlgorithmSpec]
signingAlgorithms} -> Maybe [SigningAlgorithmSpec]
signingAlgorithms) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe [SigningAlgorithmSpec]
a -> KeyMetadata
s {$sel:signingAlgorithms:KeyMetadata' :: Maybe [SigningAlgorithmSpec]
signingAlgorithms = Maybe [SigningAlgorithmSpec]
a} :: KeyMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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.
keyMetadata_validTo :: Lens.Lens' KeyMetadata (Prelude.Maybe Prelude.UTCTime)
keyMetadata_validTo :: Lens' KeyMetadata (Maybe UTCTime)
keyMetadata_validTo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe POSIX
validTo :: Maybe POSIX
$sel:validTo:KeyMetadata' :: KeyMetadata -> Maybe POSIX
validTo} -> Maybe POSIX
validTo) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe POSIX
a -> KeyMetadata
s {$sel:validTo:KeyMetadata' :: Maybe POSIX
validTo = Maybe POSIX
a} :: KeyMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Information about the external key that is associated with a KMS key in
-- an external key store.
--
-- For more information, see
-- <https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html#concept-external-key External key>
-- in the /Key Management Service Developer Guide/.
keyMetadata_xksKeyConfiguration :: Lens.Lens' KeyMetadata (Prelude.Maybe XksKeyConfigurationType)
keyMetadata_xksKeyConfiguration :: Lens' KeyMetadata (Maybe XksKeyConfigurationType)
keyMetadata_xksKeyConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Maybe XksKeyConfigurationType
xksKeyConfiguration :: Maybe XksKeyConfigurationType
$sel:xksKeyConfiguration:KeyMetadata' :: KeyMetadata -> Maybe XksKeyConfigurationType
xksKeyConfiguration} -> Maybe XksKeyConfigurationType
xksKeyConfiguration) (\s :: KeyMetadata
s@KeyMetadata' {} Maybe XksKeyConfigurationType
a -> KeyMetadata
s {$sel:xksKeyConfiguration:KeyMetadata' :: Maybe XksKeyConfigurationType
xksKeyConfiguration = Maybe XksKeyConfigurationType
a} :: KeyMetadata)

-- | The globally unique identifier for the KMS key.
keyMetadata_keyId :: Lens.Lens' KeyMetadata Prelude.Text
keyMetadata_keyId :: Lens' KeyMetadata Text
keyMetadata_keyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\KeyMetadata' {Text
keyId :: Text
$sel:keyId:KeyMetadata' :: KeyMetadata -> Text
keyId} -> Text
keyId) (\s :: KeyMetadata
s@KeyMetadata' {} Text
a -> KeyMetadata
s {$sel:keyId:KeyMetadata' :: Text
keyId = Text
a} :: KeyMetadata)

instance Data.FromJSON KeyMetadata where
  parseJSON :: Value -> Parser KeyMetadata
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"KeyMetadata"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe CustomerMasterKeySpec
-> Maybe POSIX
-> Maybe Text
-> Maybe Bool
-> Maybe [EncryptionAlgorithmSpec]
-> Maybe ExpirationModelType
-> Maybe KeyManagerType
-> Maybe KeySpec
-> Maybe KeyState
-> Maybe KeyUsageType
-> Maybe [MacAlgorithmSpec]
-> Maybe Bool
-> Maybe MultiRegionConfiguration
-> Maybe OriginType
-> Maybe Natural
-> Maybe [SigningAlgorithmSpec]
-> Maybe POSIX
-> Maybe XksKeyConfigurationType
-> Text
-> KeyMetadata
KeyMetadata'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AWSAccountId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CloudHsmClusterId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreationDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CustomKeyStoreId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CustomerMasterKeySpec")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeletionDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Description")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Enabled")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EncryptionAlgorithms"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ExpirationModel")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"KeyManager")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"KeySpec")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"KeyState")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"KeyUsage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MacAlgorithms" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MultiRegion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MultiRegionConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Origin")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PendingDeletionWindowInDays")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SigningAlgorithms"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ValidTo")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"XksKeyConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"KeyId")
      )

instance Prelude.Hashable KeyMetadata where
  hashWithSalt :: Int -> KeyMetadata -> Int
hashWithSalt Int
_salt KeyMetadata' {Maybe Bool
Maybe Natural
Maybe [EncryptionAlgorithmSpec]
Maybe [MacAlgorithmSpec]
Maybe [SigningAlgorithmSpec]
Maybe Text
Maybe POSIX
Maybe CustomerMasterKeySpec
Maybe ExpirationModelType
Maybe KeyManagerType
Maybe KeySpec
Maybe KeyState
Maybe KeyUsageType
Maybe MultiRegionConfiguration
Maybe OriginType
Maybe XksKeyConfigurationType
Text
keyId :: Text
xksKeyConfiguration :: Maybe XksKeyConfigurationType
validTo :: Maybe POSIX
signingAlgorithms :: Maybe [SigningAlgorithmSpec]
pendingDeletionWindowInDays :: Maybe Natural
origin :: Maybe OriginType
multiRegionConfiguration :: Maybe MultiRegionConfiguration
multiRegion :: Maybe Bool
macAlgorithms :: Maybe [MacAlgorithmSpec]
keyUsage :: Maybe KeyUsageType
keyState :: Maybe KeyState
keySpec :: Maybe KeySpec
keyManager :: Maybe KeyManagerType
expirationModel :: Maybe ExpirationModelType
encryptionAlgorithms :: Maybe [EncryptionAlgorithmSpec]
enabled :: Maybe Bool
description :: Maybe Text
deletionDate :: Maybe POSIX
customerMasterKeySpec :: Maybe CustomerMasterKeySpec
customKeyStoreId :: Maybe Text
creationDate :: Maybe POSIX
cloudHsmClusterId :: Maybe Text
arn :: Maybe Text
aWSAccountId :: Maybe Text
$sel:keyId:KeyMetadata' :: KeyMetadata -> Text
$sel:xksKeyConfiguration:KeyMetadata' :: KeyMetadata -> Maybe XksKeyConfigurationType
$sel:validTo:KeyMetadata' :: KeyMetadata -> Maybe POSIX
$sel:signingAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [SigningAlgorithmSpec]
$sel:pendingDeletionWindowInDays:KeyMetadata' :: KeyMetadata -> Maybe Natural
$sel:origin:KeyMetadata' :: KeyMetadata -> Maybe OriginType
$sel:multiRegionConfiguration:KeyMetadata' :: KeyMetadata -> Maybe MultiRegionConfiguration
$sel:multiRegion:KeyMetadata' :: KeyMetadata -> Maybe Bool
$sel:macAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [MacAlgorithmSpec]
$sel:keyUsage:KeyMetadata' :: KeyMetadata -> Maybe KeyUsageType
$sel:keyState:KeyMetadata' :: KeyMetadata -> Maybe KeyState
$sel:keySpec:KeyMetadata' :: KeyMetadata -> Maybe KeySpec
$sel:keyManager:KeyMetadata' :: KeyMetadata -> Maybe KeyManagerType
$sel:expirationModel:KeyMetadata' :: KeyMetadata -> Maybe ExpirationModelType
$sel:encryptionAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [EncryptionAlgorithmSpec]
$sel:enabled:KeyMetadata' :: KeyMetadata -> Maybe Bool
$sel:description:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:deletionDate:KeyMetadata' :: KeyMetadata -> Maybe POSIX
$sel:customerMasterKeySpec:KeyMetadata' :: KeyMetadata -> Maybe CustomerMasterKeySpec
$sel:customKeyStoreId:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:creationDate:KeyMetadata' :: KeyMetadata -> Maybe POSIX
$sel:cloudHsmClusterId:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:arn:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:aWSAccountId:KeyMetadata' :: KeyMetadata -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
aWSAccountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cloudHsmClusterId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
customKeyStoreId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CustomerMasterKeySpec
customerMasterKeySpec
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
deletionDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExpirationModelType
expirationModel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KeyManagerType
keyManager
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KeySpec
keySpec
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KeyState
keyState
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KeyUsageType
keyUsage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [MacAlgorithmSpec]
macAlgorithms
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
multiRegion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MultiRegionConfiguration
multiRegionConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OriginType
origin
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
pendingDeletionWindowInDays
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SigningAlgorithmSpec]
signingAlgorithms
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
validTo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe XksKeyConfigurationType
xksKeyConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
keyId

instance Prelude.NFData KeyMetadata where
  rnf :: KeyMetadata -> ()
rnf KeyMetadata' {Maybe Bool
Maybe Natural
Maybe [EncryptionAlgorithmSpec]
Maybe [MacAlgorithmSpec]
Maybe [SigningAlgorithmSpec]
Maybe Text
Maybe POSIX
Maybe CustomerMasterKeySpec
Maybe ExpirationModelType
Maybe KeyManagerType
Maybe KeySpec
Maybe KeyState
Maybe KeyUsageType
Maybe MultiRegionConfiguration
Maybe OriginType
Maybe XksKeyConfigurationType
Text
keyId :: Text
xksKeyConfiguration :: Maybe XksKeyConfigurationType
validTo :: Maybe POSIX
signingAlgorithms :: Maybe [SigningAlgorithmSpec]
pendingDeletionWindowInDays :: Maybe Natural
origin :: Maybe OriginType
multiRegionConfiguration :: Maybe MultiRegionConfiguration
multiRegion :: Maybe Bool
macAlgorithms :: Maybe [MacAlgorithmSpec]
keyUsage :: Maybe KeyUsageType
keyState :: Maybe KeyState
keySpec :: Maybe KeySpec
keyManager :: Maybe KeyManagerType
expirationModel :: Maybe ExpirationModelType
encryptionAlgorithms :: Maybe [EncryptionAlgorithmSpec]
enabled :: Maybe Bool
description :: Maybe Text
deletionDate :: Maybe POSIX
customerMasterKeySpec :: Maybe CustomerMasterKeySpec
customKeyStoreId :: Maybe Text
creationDate :: Maybe POSIX
cloudHsmClusterId :: Maybe Text
arn :: Maybe Text
aWSAccountId :: Maybe Text
$sel:keyId:KeyMetadata' :: KeyMetadata -> Text
$sel:xksKeyConfiguration:KeyMetadata' :: KeyMetadata -> Maybe XksKeyConfigurationType
$sel:validTo:KeyMetadata' :: KeyMetadata -> Maybe POSIX
$sel:signingAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [SigningAlgorithmSpec]
$sel:pendingDeletionWindowInDays:KeyMetadata' :: KeyMetadata -> Maybe Natural
$sel:origin:KeyMetadata' :: KeyMetadata -> Maybe OriginType
$sel:multiRegionConfiguration:KeyMetadata' :: KeyMetadata -> Maybe MultiRegionConfiguration
$sel:multiRegion:KeyMetadata' :: KeyMetadata -> Maybe Bool
$sel:macAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [MacAlgorithmSpec]
$sel:keyUsage:KeyMetadata' :: KeyMetadata -> Maybe KeyUsageType
$sel:keyState:KeyMetadata' :: KeyMetadata -> Maybe KeyState
$sel:keySpec:KeyMetadata' :: KeyMetadata -> Maybe KeySpec
$sel:keyManager:KeyMetadata' :: KeyMetadata -> Maybe KeyManagerType
$sel:expirationModel:KeyMetadata' :: KeyMetadata -> Maybe ExpirationModelType
$sel:encryptionAlgorithms:KeyMetadata' :: KeyMetadata -> Maybe [EncryptionAlgorithmSpec]
$sel:enabled:KeyMetadata' :: KeyMetadata -> Maybe Bool
$sel:description:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:deletionDate:KeyMetadata' :: KeyMetadata -> Maybe POSIX
$sel:customerMasterKeySpec:KeyMetadata' :: KeyMetadata -> Maybe CustomerMasterKeySpec
$sel:customKeyStoreId:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:creationDate:KeyMetadata' :: KeyMetadata -> Maybe POSIX
$sel:cloudHsmClusterId:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:arn:KeyMetadata' :: KeyMetadata -> Maybe Text
$sel:aWSAccountId:KeyMetadata' :: KeyMetadata -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
aWSAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
cloudHsmClusterId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
customKeyStoreId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CustomerMasterKeySpec
customerMasterKeySpec
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
deletionDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [EncryptionAlgorithmSpec]
encryptionAlgorithms
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ExpirationModelType
expirationModel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KeyManagerType
keyManager
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KeySpec
keySpec
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KeyState
keyState
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KeyUsageType
keyUsage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [MacAlgorithmSpec]
macAlgorithms
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
multiRegion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe MultiRegionConfiguration
multiRegionConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OriginType
origin
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
pendingDeletionWindowInDays
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [SigningAlgorithmSpec]
signingAlgorithms
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
validTo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe XksKeyConfigurationType
xksKeyConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
keyId