aws-sdk-kms 1.55.0 → 1.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -415,7 +415,7 @@ module Aws::KMS
415
415
  # key_id: "KeyIdType", # required
416
416
  # grantee_principal: "PrincipalIdType", # required
417
417
  # retiring_principal: "PrincipalIdType",
418
- # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext
418
+ # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext, GenerateMac, VerifyMac
419
419
  # constraints: {
420
420
  # encryption_context_subset: {
421
421
  # "EncryptionContextKey" => "EncryptionContextValue",
@@ -491,12 +491,13 @@ module Aws::KMS
491
491
  # @!attribute [rw] operations
492
492
  # A list of operations that the grant permits.
493
493
  #
494
- # The operation must be supported on the KMS key. For example, you
495
- # cannot create a grant for a symmetric KMS key that allows the Sign
496
- # operation, or a grant for an asymmetric KMS key that allows the
497
- # GenerateDataKey operation. If you try, KMS returns a
498
- # `ValidationError` exception. For details, see [Grant operations][1]
499
- # in the *Key Management Service Developer Guide*.
494
+ # This list must include only operations that are permitted in a
495
+ # grant. Also, the operation must be supported on the KMS key. For
496
+ # example, you cannot create a grant for a symmetric encryption KMS
497
+ # key that allows the Sign operation, or a grant for an asymmetric KMS
498
+ # key that allows the GenerateDataKey operation. If you try, KMS
499
+ # returns a `ValidationError` exception. For details, see [Grant
500
+ # operations][1] in the *Key Management Service Developer Guide*.
500
501
  #
501
502
  #
502
503
  #
@@ -509,27 +510,39 @@ module Aws::KMS
509
510
  # KMS supports the `EncryptionContextEquals` and
510
511
  # `EncryptionContextSubset` grant constraints. Each constraint value
511
512
  # can include up to 8 encryption context pairs. The encryption context
512
- # value in each constraint cannot exceed 384 characters.
513
+ # value in each constraint cannot exceed 384 characters. For
514
+ # information about grant constraints, see [Using grant
515
+ # constraints][1] in the *Key Management Service Developer Guide*. For
516
+ # more information about encryption context, see [Encryption
517
+ # context][2] in the <i> <i>Key Management Service Developer Guide</i>
518
+ # </i>.
513
519
  #
514
- # These grant constraints allow the permissions in the grant only when
515
- # the encryption context in the request matches
520
+ # The encryption context grant constraints allow the permissions in
521
+ # the grant only when the encryption context in the request matches
516
522
  # (`EncryptionContextEquals`) or includes (`EncryptionContextSubset`)
517
- # the encryption context specified in this structure. For information
518
- # about grant constraints, see [Using grant constraints][1] in the
519
- # *Key Management Service Developer Guide*. For more information about
520
- # encryption context, see [Encryption Context][2] in the <i> <i>Key
521
- # Management Service Developer Guide</i> </i>.
523
+ # the encryption context specified in this structure.
522
524
  #
523
525
  # The encryption context grant constraints are supported only on
524
- # operations that include an encryption context. You cannot use an
525
- # encryption context grant constraint for cryptographic operations
526
- # with asymmetric KMS keys or for management operations, such as
527
- # DescribeKey or RetireGrant.
526
+ # [grant operations][3] that include an `EncryptionContext` parameter,
527
+ # such as cryptographic operations on symmetric encryption KMS keys.
528
+ # Grants with grant constraints can include the DescribeKey and
529
+ # RetireGrant operations, but the constraint doesn't apply to these
530
+ # operations. If a grant with a grant constraint includes the
531
+ # `CreateGrant` operation, the constraint requires that any grants
532
+ # created with the `CreateGrant` permission have an equally strict or
533
+ # stricter encryption context constraint.
534
+ #
535
+ # You cannot use an encryption context grant constraint for
536
+ # cryptographic operations with asymmetric KMS keys or HMAC KMS keys.
537
+ # These keys don't support an encryption context.
538
+ #
539
+ #
528
540
  #
529
541
  #
530
542
  #
531
543
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/create-grant-overview.html#grant-constraints
532
544
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
545
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations
533
546
  # @return [Types::GrantConstraints]
534
547
  #
535
548
  # @!attribute [rw] grant_tokens
@@ -613,9 +626,9 @@ module Aws::KMS
613
626
  # {
614
627
  # policy: "PolicyType",
615
628
  # description: "DescriptionType",
616
- # key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT
617
- # customer_master_key_spec: "RSA_2048", # accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1, SYMMETRIC_DEFAULT
618
- # key_spec: "RSA_2048", # accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1, SYMMETRIC_DEFAULT
629
+ # key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT, GENERATE_VERIFY_MAC
630
+ # customer_master_key_spec: "RSA_2048", # accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1, SYMMETRIC_DEFAULT, HMAC_224, HMAC_256, HMAC_384, HMAC_512
631
+ # key_spec: "RSA_2048", # accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1, SYMMETRIC_DEFAULT, HMAC_224, HMAC_256, HMAC_384, HMAC_512
619
632
  # origin: "AWS_KMS", # accepts AWS_KMS, EXTERNAL, AWS_CLOUDHSM
620
633
  # custom_key_store_id: "CustomKeyStoreIdType",
621
634
  # bypass_policy_lockout_safety_check: false,
@@ -683,14 +696,17 @@ module Aws::KMS
683
696
  # @!attribute [rw] key_usage
684
697
  # Determines the [cryptographic operations][1] for which you can use
685
698
  # the KMS key. The default value is `ENCRYPT_DECRYPT`. This parameter
686
- # is required only for asymmetric KMS keys. You can't change the
687
- # `KeyUsage` value after the KMS key is created.
699
+ # is optional when you are creating a symmetric encryption KMS key;
700
+ # otherwise, it is required. You can't change the `KeyUsage` value
701
+ # after the KMS key is created.
688
702
  #
689
703
  # Select only one valid value.
690
704
  #
691
- # * For symmetric KMS keys, omit the parameter or specify
705
+ # * For symmetric encryption KMS keys, omit the parameter or specify
692
706
  # `ENCRYPT_DECRYPT`.
693
707
  #
708
+ # * For HMAC KMS keys (symmetric), specify `GENERATE_VERIFY_MAC`.
709
+ #
694
710
  # * For asymmetric KMS keys with RSA key material, specify
695
711
  # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
696
712
  #
@@ -715,33 +731,40 @@ module Aws::KMS
715
731
  # Specifies the type of KMS key to create. The default value,
716
732
  # `SYMMETRIC_DEFAULT`, creates a KMS key with a 256-bit symmetric key
717
733
  # for encryption and decryption. For help choosing a key spec for your
718
- # KMS key, see [How to Choose Your KMS key Configuration][1] in the
719
- # <i> <i>Key Management Service Developer Guide</i> </i>.
734
+ # KMS key, see [Choosing a KMS key type][1] in the <i> <i>Key
735
+ # Management Service Developer Guide</i> </i>.
720
736
  #
721
737
  # The `KeySpec` determines whether the KMS key contains a symmetric
722
- # key or an asymmetric key pair. It also determines the encryption
723
- # algorithms or signing algorithms that the KMS key supports. You
724
- # can't change the `KeySpec` after the KMS key is created. To further
725
- # restrict the algorithms that can be used with the KMS key, use a
726
- # condition key in its key policy or IAM policy. For more information,
727
- # see [kms:EncryptionAlgorithm][2] or [kms:Signing Algorithm][3] in
728
- # the <i> <i>Key Management Service Developer Guide</i> </i>.
729
- #
730
- # [Amazon Web Services services that are integrated with KMS][4] use
731
- # symmetric KMS keys to protect your data. These services do not
732
- # support asymmetric KMS keys. For help determining whether a KMS key
733
- # is symmetric or asymmetric, see [Identifying Symmetric and
734
- # Asymmetric KMS keys][5] in the *Key Management Service Developer
735
- # Guide*.
738
+ # key or an asymmetric key pair. It also determines the algorithms
739
+ # that the KMS key supports. You can't change the `KeySpec` after the
740
+ # KMS key is created. To further restrict the algorithms that can be
741
+ # used with the KMS key, use a condition key in its key policy or IAM
742
+ # policy. For more information, see [kms:EncryptionAlgorithm][2],
743
+ # [kms:MacAlgorithm][3] or [kms:Signing Algorithm][4] in the <i>
744
+ # <i>Key Management Service Developer Guide</i> </i>.
745
+ #
746
+ # [Amazon Web Services services that are integrated with KMS][5] use
747
+ # symmetric encryption KMS keys to protect your data. These services
748
+ # do not support asymmetric KMS keys or HMAC KMS keys.
736
749
  #
737
750
  # KMS supports the following key specs for KMS keys:
738
751
  #
739
- # * Symmetric key (default)
752
+ # * Symmetric encryption key (default)
740
753
  #
741
754
  # * `SYMMETRIC_DEFAULT` (AES-256-GCM)
742
755
  #
743
756
  # ^
744
757
  #
758
+ # * HMAC keys (symmetric)
759
+ #
760
+ # * `HMAC_224`
761
+ #
762
+ # * `HMAC_256`
763
+ #
764
+ # * `HMAC_384`
765
+ #
766
+ # * `HMAC_512`
767
+ #
745
768
  # * Asymmetric RSA key pairs
746
769
  #
747
770
  # * `RSA_2048`
@@ -767,11 +790,11 @@ module Aws::KMS
767
790
  #
768
791
  #
769
792
  #
770
- # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html
793
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-types.html#symm-asymm-choose
771
794
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-algorithm
772
- # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-signing-algorithm
773
- # [4]: http://aws.amazon.com/kms/features/#AWS_Service_Integration
774
- # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html
795
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-mac-algorithm
796
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-signing-algorithm
797
+ # [5]: http://aws.amazon.com/kms/features/#AWS_Service_Integration
775
798
  # @return [String]
776
799
  #
777
800
  # @!attribute [rw] origin
@@ -783,13 +806,13 @@ module Aws::KMS
783
806
  # material), set the value to `EXTERNAL`. For more information about
784
807
  # importing key material into KMS, see [Importing Key Material][1] in
785
808
  # the *Key Management Service Developer Guide*. This value is valid
786
- # only for symmetric KMS keys.
809
+ # only for symmetric encryption KMS keys.
787
810
  #
788
811
  # To create a KMS key in an KMS [custom key store][2] and create its
789
812
  # key material in the associated CloudHSM cluster, set this value to
790
813
  # `AWS_CLOUDHSM`. You must also use the `CustomKeyStoreId` parameter
791
814
  # to identify the custom key store. This value is valid only for
792
- # symmetric KMS keys.
815
+ # symmetric encryption KMS keys.
793
816
  #
794
817
  #
795
818
  #
@@ -805,9 +828,9 @@ module Aws::KMS
805
828
  # associated with the custom key store must have at least two active
806
829
  # HSMs, each in a different Availability Zone in the Region.
807
830
  #
808
- # This parameter is valid only for symmetric KMS keys and regional KMS
809
- # keys. You cannot create an asymmetric KMS key or a multi-Region key
810
- # in a custom key store.
831
+ # This parameter is valid only for symmetric encryption KMS keys in a
832
+ # single Region. You cannot create any other type of KMS key in a
833
+ # custom key store.
811
834
  #
812
835
  # To find the ID of a custom key store, use the
813
836
  # DescribeCustomKeyStores operation.
@@ -853,8 +876,8 @@ module Aws::KMS
853
876
  # TagResource operation.
854
877
  #
855
878
  # <note markdown="1"> Tagging or untagging a KMS key can allow or deny permission to the
856
- # KMS key. For details, see [Using ABAC in KMS][1] in the *Key
857
- # Management Service Developer Guide*.
879
+ # KMS key. For details, see [ABAC in KMS][1] in the *Key Management
880
+ # Service Developer Guide*.
858
881
  #
859
882
  # </note>
860
883
  #
@@ -895,7 +918,7 @@ module Aws::KMS
895
918
  # to encrypt data in one Amazon Web Services Region and decrypt it in
896
919
  # a different Amazon Web Services Region without re-encrypting the
897
920
  # data or making a cross-Region call. For more information about
898
- # multi-Region keys, see [Using multi-Region keys][1] in the *Key
921
+ # multi-Region keys, see [Multi-Region keys in KMS][1] in the *Key
899
922
  # Management Service Developer Guide*.
900
923
  #
901
924
  # This value creates a *primary key*, not a replica. To create a
@@ -1170,17 +1193,20 @@ module Aws::KMS
1170
1193
  # @!attribute [rw] encryption_context
1171
1194
  # Specifies the encryption context to use when decrypting the data. An
1172
1195
  # encryption context is valid only for [cryptographic operations][1]
1173
- # with a symmetric KMS key. The standard asymmetric encryption
1174
- # algorithms that KMS uses do not support an encryption context.
1196
+ # with a symmetric encryption KMS key. The standard asymmetric
1197
+ # encryption algorithms and HMAC algorithms that KMS uses do not
1198
+ # support an encryption context.
1175
1199
  #
1176
1200
  # An *encryption context* is a collection of non-secret key-value
1177
- # pairs that represents additional authenticated data. When you use an
1201
+ # pairs that represent additional authenticated data. When you use an
1178
1202
  # encryption context to encrypt data, you must specify the same (an
1179
1203
  # exact case-sensitive match) encryption context to decrypt the data.
1180
- # An encryption context is optional when encrypting with a symmetric
1181
- # KMS key, but it is highly recommended.
1204
+ # An encryption context is supported only on operations with symmetric
1205
+ # encryption KMS keys. On operations with symmetric encryption KMS
1206
+ # keys, an encryption context is optional, but it is strongly
1207
+ # recommended.
1182
1208
  #
1183
- # For more information, see [Encryption Context][2] in the *Key
1209
+ # For more information, see [Encryption context][2] in the *Key
1184
1210
  # Management Service Developer Guide*.
1185
1211
  #
1186
1212
  #
@@ -1204,15 +1230,18 @@ module Aws::KMS
1204
1230
  # @return [Array<String>]
1205
1231
  #
1206
1232
  # @!attribute [rw] key_id
1207
- # Specifies the KMS key that KMS uses to decrypt the ciphertext. Enter
1208
- # a key ID of the KMS key that was used to encrypt the ciphertext.
1233
+ # Specifies the KMS key that KMS uses to decrypt the ciphertext.
1234
+ #
1235
+ # Enter a key ID of the KMS key that was used to encrypt the
1236
+ # ciphertext. If you identify a different KMS key, the `Decrypt`
1237
+ # operation throws an `IncorrectKeyException`.
1209
1238
  #
1210
1239
  # This parameter is required only when the ciphertext was encrypted
1211
- # under an asymmetric KMS key. If you used a symmetric KMS key, KMS
1212
- # can get the KMS key from metadata that it adds to the symmetric
1213
- # ciphertext blob. However, it is always recommended as a best
1214
- # practice. This practice ensures that you use the KMS key that you
1215
- # intend.
1240
+ # under an asymmetric KMS key. If you used a symmetric encryption KMS
1241
+ # key, KMS can get the KMS key from metadata that it adds to the
1242
+ # symmetric ciphertext blob. However, it is always recommended as a
1243
+ # best practice. This practice ensures that you use the KMS key that
1244
+ # you intend.
1216
1245
  #
1217
1246
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
1218
1247
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -1243,7 +1272,7 @@ module Aws::KMS
1243
1272
  # This parameter is required only when the ciphertext was encrypted
1244
1273
  # under an asymmetric KMS key. The default value, `SYMMETRIC_DEFAULT`,
1245
1274
  # represents the only supported algorithm that is valid for symmetric
1246
- # KMS keys.
1275
+ # encryption KMS keys.
1247
1276
  # @return [String]
1248
1277
  #
1249
1278
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DecryptRequest AWS API Documentation
@@ -1570,9 +1599,10 @@ module Aws::KMS
1570
1599
  # }
1571
1600
  #
1572
1601
  # @!attribute [rw] key_id
1573
- # Identifies a symmetric KMS key. You cannot enable or disable
1574
- # automatic rotation of [asymmetric KMS keys][1], KMS keys with
1575
- # [imported key material][2], or KMS keys in a [custom key store][3].
1602
+ # Identifies a symmetric encryption KMS key. You cannot enable or
1603
+ # disable automatic rotation of [asymmetric KMS keys][1], [HMAC KMS
1604
+ # keys][2], KMS keys with [imported key material][3], or KMS keys in a
1605
+ # [custom key store][4].
1576
1606
  #
1577
1607
  # Specify the key ID or key ARN of the KMS key.
1578
1608
  #
@@ -1589,8 +1619,9 @@ module Aws::KMS
1589
1619
  #
1590
1620
  #
1591
1621
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks
1592
- # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1593
- # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1622
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
1623
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1624
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1594
1625
  # @return [String]
1595
1626
  #
1596
1627
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotationRequest AWS API Documentation
@@ -1678,11 +1709,11 @@ module Aws::KMS
1678
1709
  # }
1679
1710
  #
1680
1711
  # @!attribute [rw] key_id
1681
- # Identifies a symmetric KMS key. You cannot enable automatic rotation
1682
- # of [asymmetric KMS keys][1], KMS keys with [imported key
1683
- # material][2], or KMS keys in a [custom key store][3]. To enable or
1684
- # disable automatic rotation of a set of related [multi-Region
1685
- # keys][4], set the property on the primary key.
1712
+ # Identifies a symmetric encryption KMS key. You cannot enable
1713
+ # automatic rotation of [asymmetric KMS keys][1], [HMAC KMS keys][2],
1714
+ # KMS keys with [imported key material][3], or KMS keys in a [custom
1715
+ # key store][4]. To enable or disable automatic rotation of a set of
1716
+ # related [multi-Region keys][5], set the property on the primary key.
1686
1717
  #
1687
1718
  # Specify the key ID or key ARN of the KMS key.
1688
1719
  #
@@ -1698,10 +1729,11 @@ module Aws::KMS
1698
1729
  #
1699
1730
  #
1700
1731
  #
1701
- # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-concepts.html#asymmetric-cmks
1702
- # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1703
- # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1704
- # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-replica-key
1732
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
1733
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
1734
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1735
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1736
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
1705
1737
  # @return [String]
1706
1738
  #
1707
1739
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotationRequest AWS API Documentation
@@ -1726,7 +1758,9 @@ module Aws::KMS
1726
1758
  # }
1727
1759
  #
1728
1760
  # @!attribute [rw] key_id
1729
- # Identifies the KMS key to use in the encryption operation.
1761
+ # Identifies the KMS key to use in the encryption operation. The KMS
1762
+ # key must have a `KeyUsage` of `ENCRYPT_DECRYPT`. To find the
1763
+ # `KeyUsage` of a KMS key, use the DescribeKey operation.
1730
1764
  #
1731
1765
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
1732
1766
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -1755,18 +1789,20 @@ module Aws::KMS
1755
1789
  # @!attribute [rw] encryption_context
1756
1790
  # Specifies the encryption context that will be used to encrypt the
1757
1791
  # data. An encryption context is valid only for [cryptographic
1758
- # operations][1] with a symmetric KMS key. The standard asymmetric
1759
- # encryption algorithms that KMS uses do not support an encryption
1760
- # context.
1792
+ # operations][1] with a symmetric encryption KMS key. The standard
1793
+ # asymmetric encryption algorithms and HMAC algorithms that KMS uses
1794
+ # do not support an encryption context.
1761
1795
  #
1762
1796
  # An *encryption context* is a collection of non-secret key-value
1763
- # pairs that represents additional authenticated data. When you use an
1797
+ # pairs that represent additional authenticated data. When you use an
1764
1798
  # encryption context to encrypt data, you must specify the same (an
1765
1799
  # exact case-sensitive match) encryption context to decrypt the data.
1766
- # An encryption context is optional when encrypting with a symmetric
1767
- # KMS key, but it is highly recommended.
1800
+ # An encryption context is supported only on operations with symmetric
1801
+ # encryption KMS keys. On operations with symmetric encryption KMS
1802
+ # keys, an encryption context is optional, but it is strongly
1803
+ # recommended.
1768
1804
  #
1769
- # For more information, see [Encryption Context][2] in the *Key
1805
+ # For more information, see [Encryption context][2] in the *Key
1770
1806
  # Management Service Developer Guide*.
1771
1807
  #
1772
1808
  #
@@ -1795,9 +1831,9 @@ module Aws::KMS
1795
1831
  # that you specify.
1796
1832
  #
1797
1833
  # This parameter is required only for asymmetric KMS keys. The default
1798
- # value, `SYMMETRIC_DEFAULT`, is the algorithm used for symmetric KMS
1799
- # keys. If you are using an asymmetric KMS key, we recommend
1800
- # RSAES\_OAEP\_SHA\_256.
1834
+ # value, `SYMMETRIC_DEFAULT`, is the algorithm used for symmetric
1835
+ # encryption KMS keys. If you are using an asymmetric KMS key, we
1836
+ # recommend RSAES\_OAEP\_SHA\_256.
1801
1837
  # @return [String]
1802
1838
  #
1803
1839
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EncryptRequest AWS API Documentation
@@ -1874,13 +1910,15 @@ module Aws::KMS
1874
1910
  # the private key in the data key pair.
1875
1911
  #
1876
1912
  # An *encryption context* is a collection of non-secret key-value
1877
- # pairs that represents additional authenticated data. When you use an
1913
+ # pairs that represent additional authenticated data. When you use an
1878
1914
  # encryption context to encrypt data, you must specify the same (an
1879
1915
  # exact case-sensitive match) encryption context to decrypt the data.
1880
- # An encryption context is optional when encrypting with a symmetric
1881
- # KMS key, but it is highly recommended.
1916
+ # An encryption context is supported only on operations with symmetric
1917
+ # encryption KMS keys. On operations with symmetric encryption KMS
1918
+ # keys, an encryption context is optional, but it is strongly
1919
+ # recommended.
1882
1920
  #
1883
- # For more information, see [Encryption Context][1] in the *Key
1921
+ # For more information, see [Encryption context][1] in the *Key
1884
1922
  # Management Service Developer Guide*.
1885
1923
  #
1886
1924
  #
@@ -1889,10 +1927,10 @@ module Aws::KMS
1889
1927
  # @return [Hash<String,String>]
1890
1928
  #
1891
1929
  # @!attribute [rw] key_id
1892
- # Specifies the symmetric KMS key that encrypts the private key in the
1893
- # data key pair. You cannot specify an asymmetric KMS key or a KMS key
1894
- # in a custom key store. To get the type and origin of your KMS key,
1895
- # use the DescribeKey operation.
1930
+ # Specifies the symmetric encryption KMS key that encrypts the private
1931
+ # key in the data key pair. You cannot specify an asymmetric KMS key
1932
+ # or a KMS key in a custom key store. To get the type and origin of
1933
+ # your KMS key, use the DescribeKey operation.
1896
1934
  #
1897
1935
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
1898
1936
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -1961,7 +1999,9 @@ module Aws::KMS
1961
1999
  # @return [String]
1962
2000
  #
1963
2001
  # @!attribute [rw] public_key
1964
- # The public key (in plaintext).
2002
+ # The public key (in plaintext). When you use the HTTP API or the
2003
+ # Amazon Web Services CLI, the value is Base64-encoded. Otherwise, it
2004
+ # is not Base64-encoded.
1965
2005
  # @return [String]
1966
2006
  #
1967
2007
  # @!attribute [rw] key_id
@@ -2006,13 +2046,15 @@ module Aws::KMS
2006
2046
  # the private key in the data key pair.
2007
2047
  #
2008
2048
  # An *encryption context* is a collection of non-secret key-value
2009
- # pairs that represents additional authenticated data. When you use an
2049
+ # pairs that represent additional authenticated data. When you use an
2010
2050
  # encryption context to encrypt data, you must specify the same (an
2011
2051
  # exact case-sensitive match) encryption context to decrypt the data.
2012
- # An encryption context is optional when encrypting with a symmetric
2013
- # KMS key, but it is highly recommended.
2052
+ # An encryption context is supported only on operations with symmetric
2053
+ # encryption KMS keys. On operations with symmetric encryption KMS
2054
+ # keys, an encryption context is optional, but it is strongly
2055
+ # recommended.
2014
2056
  #
2015
- # For more information, see [Encryption Context][1] in the *Key
2057
+ # For more information, see [Encryption context][1] in the *Key
2016
2058
  # Management Service Developer Guide*.
2017
2059
  #
2018
2060
  #
@@ -2021,10 +2063,10 @@ module Aws::KMS
2021
2063
  # @return [Hash<String,String>]
2022
2064
  #
2023
2065
  # @!attribute [rw] key_id
2024
- # Specifies the KMS key that encrypts the private key in the data key
2025
- # pair. You must specify a symmetric KMS key. You cannot use an
2026
- # asymmetric KMS key or a KMS key in a custom key store. To get the
2027
- # type and origin of your KMS key, use the DescribeKey operation.
2066
+ # Specifies the symmetric encryption KMS key that encrypts the private
2067
+ # key in the data key pair. You cannot specify an asymmetric KMS key
2068
+ # or a KMS key in a custom key store. To get the type and origin of
2069
+ # your KMS key, use the DescribeKey operation.
2028
2070
  #
2029
2071
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
2030
2072
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -2087,7 +2129,9 @@ module Aws::KMS
2087
2129
  # @return [String]
2088
2130
  #
2089
2131
  # @!attribute [rw] public_key
2090
- # The public key (in plaintext).
2132
+ # The public key (in plaintext). When you use the HTTP API or the
2133
+ # Amazon Web Services CLI, the value is Base64-encoded. Otherwise, it
2134
+ # is not Base64-encoded.
2091
2135
  # @return [String]
2092
2136
  #
2093
2137
  # @!attribute [rw] key_id
@@ -2128,7 +2172,10 @@ module Aws::KMS
2128
2172
  # }
2129
2173
  #
2130
2174
  # @!attribute [rw] key_id
2131
- # Identifies the symmetric KMS key that encrypts the data key.
2175
+ # Specifies the symmetric encryption KMS key that encrypts the data
2176
+ # key. You cannot specify an asymmetric KMS key or a KMS key in a
2177
+ # custom key store. To get the type and origin of your KMS key, use
2178
+ # the DescribeKey operation.
2132
2179
  #
2133
2180
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
2134
2181
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -2155,13 +2202,15 @@ module Aws::KMS
2155
2202
  # the data key.
2156
2203
  #
2157
2204
  # An *encryption context* is a collection of non-secret key-value
2158
- # pairs that represents additional authenticated data. When you use an
2205
+ # pairs that represent additional authenticated data. When you use an
2159
2206
  # encryption context to encrypt data, you must specify the same (an
2160
2207
  # exact case-sensitive match) encryption context to decrypt the data.
2161
- # An encryption context is optional when encrypting with a symmetric
2162
- # KMS key, but it is highly recommended.
2208
+ # An encryption context is supported only on operations with symmetric
2209
+ # encryption KMS keys. On operations with symmetric encryption KMS
2210
+ # keys, an encryption context is optional, but it is strongly
2211
+ # recommended.
2163
2212
  #
2164
- # For more information, see [Encryption Context][1] in the *Key
2213
+ # For more information, see [Encryption context][1] in the *Key
2165
2214
  # Management Service Developer Guide*.
2166
2215
  #
2167
2216
  #
@@ -2260,7 +2309,10 @@ module Aws::KMS
2260
2309
  # }
2261
2310
  #
2262
2311
  # @!attribute [rw] key_id
2263
- # The identifier of the symmetric KMS key that encrypts the data key.
2312
+ # Specifies the symmetric encryption KMS key that encrypts the data
2313
+ # key. You cannot specify an asymmetric KMS key or a KMS key in a
2314
+ # custom key store. To get the type and origin of your KMS key, use
2315
+ # the DescribeKey operation.
2264
2316
  #
2265
2317
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
2266
2318
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -2287,13 +2339,15 @@ module Aws::KMS
2287
2339
  # the data key.
2288
2340
  #
2289
2341
  # An *encryption context* is a collection of non-secret key-value
2290
- # pairs that represents additional authenticated data. When you use an
2342
+ # pairs that represent additional authenticated data. When you use an
2291
2343
  # encryption context to encrypt data, you must specify the same (an
2292
2344
  # exact case-sensitive match) encryption context to decrypt the data.
2293
- # An encryption context is optional when encrypting with a symmetric
2294
- # KMS key, but it is highly recommended.
2345
+ # An encryption context is supported only on operations with symmetric
2346
+ # encryption KMS keys. On operations with symmetric encryption KMS
2347
+ # keys, an encryption context is optional, but it is strongly
2348
+ # recommended.
2295
2349
  #
2296
- # For more information, see [Encryption Context][1] in the *Key
2350
+ # For more information, see [Encryption context][1] in the *Key
2297
2351
  # Management Service Developer Guide*.
2298
2352
  #
2299
2353
  #
@@ -2363,6 +2417,93 @@ module Aws::KMS
2363
2417
  include Aws::Structure
2364
2418
  end
2365
2419
 
2420
+ # @note When making an API call, you may pass GenerateMacRequest
2421
+ # data as a hash:
2422
+ #
2423
+ # {
2424
+ # message: "data", # required
2425
+ # key_id: "KeyIdType", # required
2426
+ # mac_algorithm: "HMAC_SHA_224", # required, accepts HMAC_SHA_224, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA_512
2427
+ # grant_tokens: ["GrantTokenType"],
2428
+ # }
2429
+ #
2430
+ # @!attribute [rw] message
2431
+ # The message to be hashed. Specify a message of up to 4,096 bytes.
2432
+ #
2433
+ # `GenerateMac` and VerifyMac do not provide special handling for
2434
+ # message digests. If you generate an HMAC for a hash digest of a
2435
+ # message, you must verify the HMAC of the same hash digest.
2436
+ # @return [String]
2437
+ #
2438
+ # @!attribute [rw] key_id
2439
+ # The HMAC KMS key to use in the operation. The MAC algorithm computes
2440
+ # the HMAC for the message and the key as described in [RFC 2104][1].
2441
+ #
2442
+ # To identify an HMAC KMS key, use the DescribeKey operation and see
2443
+ # the `KeySpec` field in the response.
2444
+ #
2445
+ #
2446
+ #
2447
+ # [1]: https://datatracker.ietf.org/doc/html/rfc2104
2448
+ # @return [String]
2449
+ #
2450
+ # @!attribute [rw] mac_algorithm
2451
+ # The MAC algorithm used in the operation.
2452
+ #
2453
+ # The algorithm must be compatible with the HMAC KMS key that you
2454
+ # specify. To find the MAC algorithms that your HMAC KMS key supports,
2455
+ # use the DescribeKey operation and see the `MacAlgorithms` field in
2456
+ # the `DescribeKey` response.
2457
+ # @return [String]
2458
+ #
2459
+ # @!attribute [rw] grant_tokens
2460
+ # A list of grant tokens.
2461
+ #
2462
+ # Use a grant token when your permission to call this operation comes
2463
+ # from a new grant that has not yet achieved *eventual consistency*.
2464
+ # For more information, see [Grant token][1] and [Using a grant
2465
+ # token][2] in the *Key Management Service Developer Guide*.
2466
+ #
2467
+ #
2468
+ #
2469
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
2470
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
2471
+ # @return [Array<String>]
2472
+ #
2473
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateMacRequest AWS API Documentation
2474
+ #
2475
+ class GenerateMacRequest < Struct.new(
2476
+ :message,
2477
+ :key_id,
2478
+ :mac_algorithm,
2479
+ :grant_tokens)
2480
+ SENSITIVE = [:message]
2481
+ include Aws::Structure
2482
+ end
2483
+
2484
+ # @!attribute [rw] mac
2485
+ # The hash-based message authentication code (HMAC) for the given
2486
+ # message, key, and MAC algorithm.
2487
+ # @return [String]
2488
+ #
2489
+ # @!attribute [rw] mac_algorithm
2490
+ # The MAC algorithm that was used to generate the HMAC.
2491
+ # @return [String]
2492
+ #
2493
+ # @!attribute [rw] key_id
2494
+ # The HMAC KMS key used in the operation.
2495
+ # @return [String]
2496
+ #
2497
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateMacResponse AWS API Documentation
2498
+ #
2499
+ class GenerateMacResponse < Struct.new(
2500
+ :mac,
2501
+ :mac_algorithm,
2502
+ :key_id)
2503
+ SENSITIVE = []
2504
+ include Aws::Structure
2505
+ end
2506
+
2366
2507
  # @note When making an API call, you may pass GenerateRandomRequest
2367
2508
  # data as a hash:
2368
2509
  #
@@ -2513,8 +2654,9 @@ module Aws::KMS
2513
2654
  # }
2514
2655
  #
2515
2656
  # @!attribute [rw] key_id
2516
- # The identifier of the symmetric KMS key into which you will import
2517
- # key material. The `Origin` of the KMS key must be `EXTERNAL`.
2657
+ # The identifier of the symmetric encryption KMS key into which you
2658
+ # will import key material. The `Origin` of the KMS key must be
2659
+ # `EXTERNAL`.
2518
2660
  #
2519
2661
  # Specify the key ID or key ARN of the KMS key.
2520
2662
  #
@@ -2729,10 +2871,11 @@ module Aws::KMS
2729
2871
  #
2730
2872
  # KMS applies the grant constraints only to cryptographic operations
2731
2873
  # that support an encryption context, that is, all cryptographic
2732
- # operations with a [symmetric KMS key][3]. Grant constraints are not
2733
- # applied to operations that do not support an encryption context, such
2734
- # as cryptographic operations with asymmetric KMS keys and management
2735
- # operations, such as DescribeKey or RetireGrant.
2874
+ # operations with a [symmetric encryption KMS key][3]. Grant constraints
2875
+ # are not applied to operations that do not support an encryption
2876
+ # context, such as cryptographic operations with HMAC KMS keys or
2877
+ # asymmetric KMS keys, and management operations, such as DescribeKey or
2878
+ # RetireGrant.
2736
2879
  #
2737
2880
  # In a cryptographic operation, the encryption context in the decryption
2738
2881
  # operation must be an exact, case-sensitive match for the keys and
@@ -2880,10 +3023,13 @@ module Aws::KMS
2880
3023
  # }
2881
3024
  #
2882
3025
  # @!attribute [rw] key_id
2883
- # The identifier of the symmetric KMS key that receives the imported
2884
- # key material. The KMS key's `Origin` must be `EXTERNAL`. This must
2885
- # be the same KMS key specified in the `KeyID` parameter of the
2886
- # corresponding GetParametersForImport request.
3026
+ # The identifier of the symmetric encryption KMS key that receives the
3027
+ # imported key material. This must be the same KMS key specified in
3028
+ # the `KeyID` parameter of the corresponding GetParametersForImport
3029
+ # request. The `Origin` of the KMS key must be `EXTERNAL`. You cannot
3030
+ # perform this operation on an asymmetric KMS key, an HMAC KMS key, a
3031
+ # KMS key in a custom key store, or on a KMS key in a different Amazon
3032
+ # Web Services account
2887
3033
  #
2888
3034
  # Specify the key ID or key ARN of the KMS key.
2889
3035
  #
@@ -2945,8 +3091,8 @@ module Aws::KMS
2945
3091
  class ImportKeyMaterialResponse < Aws::EmptyStructure; end
2946
3092
 
2947
3093
  # The request was rejected because the specified KMS key cannot decrypt
2948
- # the data. The `KeyId` in a Decrypt request and the `SourceKeyId` in a
2949
- # ReEncrypt request must identify the same KMS key that was used to
3094
+ # the data. The `KeyId` in a `Decrypt` request and the `SourceKeyId` in
3095
+ # a `ReEncrypt` request must identify the same KMS key that was used to
2950
3096
  # encrypt the ciphertext.
2951
3097
  #
2952
3098
  # @!attribute [rw] message
@@ -3095,9 +3241,11 @@ module Aws::KMS
3095
3241
  # key `(KeySpec`).
3096
3242
  #
3097
3243
  # For encrypting, decrypting, re-encrypting, and generating data keys,
3098
- # the `KeyUsage` must be `ENCRYPT_DECRYPT`. For signing and verifying,
3099
- # the `KeyUsage` must be `SIGN_VERIFY`. To find the `KeyUsage` of a KMS
3100
- # key, use the DescribeKey operation.
3244
+ # the `KeyUsage` must be `ENCRYPT_DECRYPT`. For signing and verifying
3245
+ # messages, the `KeyUsage` must be `SIGN_VERIFY`. For generating and
3246
+ # verifying message authentication codes (MACs), the `KeyUsage` must be
3247
+ # `GENERATE_VERIFY_MAC`. To find the `KeyUsage` of a KMS key, use the
3248
+ # DescribeKey operation.
3101
3249
  #
3102
3250
  # To find the encryption or signing algorithms supported for a
3103
3251
  # particular KMS key, use the DescribeKey operation.
@@ -3141,6 +3289,22 @@ module Aws::KMS
3141
3289
  include Aws::Structure
3142
3290
  end
3143
3291
 
3292
+ # The request was rejected because the HMAC verification failed. HMAC
3293
+ # verification fails when the HMAC computed by using the specified
3294
+ # message, HMAC KMS key, and MAC algorithm does not match the HMAC
3295
+ # specified in the request.
3296
+ #
3297
+ # @!attribute [rw] message
3298
+ # @return [String]
3299
+ #
3300
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KMSInvalidMacException AWS API Documentation
3301
+ #
3302
+ class KMSInvalidMacException < Struct.new(
3303
+ :message)
3304
+ SENSITIVE = []
3305
+ include Aws::Structure
3306
+ end
3307
+
3144
3308
  # The request was rejected because the signature verification failed.
3145
3309
  # Signature verification fails when it cannot confirm that signature was
3146
3310
  # produced by signing the specified message with the specified KMS key
@@ -3161,8 +3325,8 @@ module Aws::KMS
3161
3325
  # is not valid for this request.
3162
3326
  #
3163
3327
  # For more information about how key state affects the use of a KMS key,
3164
- # see [Key state: Effect on your KMS key][1] in the <i> <i>Key
3165
- # Management Service Developer Guide</i> </i>.
3328
+ # see [Key states of KMS keys][1] in the <i> <i>Key Management Service
3329
+ # Developer Guide</i> </i>.
3166
3330
  #
3167
3331
  #
3168
3332
  #
@@ -3247,8 +3411,8 @@ module Aws::KMS
3247
3411
  # The current status of the KMS key.
3248
3412
  #
3249
3413
  # For more information about how key state affects the use of a KMS
3250
- # key, see [Key state: Effect on your KMS key][1] in the *Key
3251
- # Management Service Developer Guide*.
3414
+ # key, see [Key states of KMS keys][1] in the *Key Management Service
3415
+ # Developer Guide*.
3252
3416
  #
3253
3417
  #
3254
3418
  #
@@ -3355,9 +3519,8 @@ module Aws::KMS
3355
3519
  # (`False`) key. This value is `True` for multi-Region primary and
3356
3520
  # replica keys and `False` for regional KMS keys.
3357
3521
  #
3358
- # For more information about multi-Region keys, see [Using
3359
- # multi-Region keys][1] in the *Key Management Service Developer
3360
- # Guide*.
3522
+ # For more information about multi-Region keys, see [Multi-Region keys
3523
+ # in KMS][1] in the *Key Management Service Developer Guide*.
3361
3524
  #
3362
3525
  #
3363
3526
  #
@@ -3402,6 +3565,14 @@ module Aws::KMS
3402
3565
  # the deletion date appears in the `DeletionDate` field.
3403
3566
  # @return [Integer]
3404
3567
  #
3568
+ # @!attribute [rw] mac_algorithms
3569
+ # The message authentication code (MAC) algorithm that the HMAC KMS
3570
+ # key supports.
3571
+ #
3572
+ # This value is present only when the `KeyUsage` of the KMS key is
3573
+ # `GENERATE_VERIFY_MAC`.
3574
+ # @return [Array<String>]
3575
+ #
3405
3576
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KeyMetadata AWS API Documentation
3406
3577
  #
3407
3578
  class KeyMetadata < Struct.new(
@@ -3426,7 +3597,8 @@ module Aws::KMS
3426
3597
  :signing_algorithms,
3427
3598
  :multi_region,
3428
3599
  :multi_region_configuration,
3429
- :pending_deletion_window_in_days)
3600
+ :pending_deletion_window_in_days,
3601
+ :mac_algorithms)
3430
3602
  SENSITIVE = []
3431
3603
  include Aws::Structure
3432
3604
  end
@@ -3834,8 +4006,8 @@ module Aws::KMS
3834
4006
  # A list of tags. Each tag consists of a tag key and a tag value.
3835
4007
  #
3836
4008
  # <note markdown="1"> Tagging or untagging a KMS key can allow or deny permission to the
3837
- # KMS key. For details, see [Using ABAC in KMS][1] in the *Key
3838
- # Management Service Developer Guide*.
4009
+ # KMS key. For details, see [ABAC in KMS][1] in the *Key Management
4010
+ # Service Developer Guide*.
3839
4011
  #
3840
4012
  # </note>
3841
4013
  #
@@ -4126,13 +4298,15 @@ module Aws::KMS
4126
4298
  # ciphertext.
4127
4299
  #
4128
4300
  # An *encryption context* is a collection of non-secret key-value
4129
- # pairs that represents additional authenticated data. When you use an
4301
+ # pairs that represent additional authenticated data. When you use an
4130
4302
  # encryption context to encrypt data, you must specify the same (an
4131
4303
  # exact case-sensitive match) encryption context to decrypt the data.
4132
- # An encryption context is optional when encrypting with a symmetric
4133
- # KMS key, but it is highly recommended.
4304
+ # An encryption context is supported only on operations with symmetric
4305
+ # encryption KMS keys. On operations with symmetric encryption KMS
4306
+ # keys, an encryption context is optional, but it is strongly
4307
+ # recommended.
4134
4308
  #
4135
- # For more information, see [Encryption Context][1] in the *Key
4309
+ # For more information, see [Encryption context][1] in the *Key
4136
4310
  # Management Service Developer Guide*.
4137
4311
  #
4138
4312
  #
@@ -4142,15 +4316,18 @@ module Aws::KMS
4142
4316
  #
4143
4317
  # @!attribute [rw] source_key_id
4144
4318
  # Specifies the KMS key that KMS will use to decrypt the ciphertext
4145
- # before it is re-encrypted. Enter a key ID of the KMS key that was
4146
- # used to encrypt the ciphertext.
4319
+ # before it is re-encrypted.
4320
+ #
4321
+ # Enter a key ID of the KMS key that was used to encrypt the
4322
+ # ciphertext. If you identify a different KMS key, the `ReEncrypt`
4323
+ # operation throws an `IncorrectKeyException`.
4147
4324
  #
4148
4325
  # This parameter is required only when the ciphertext was encrypted
4149
- # under an asymmetric KMS key. If you used a symmetric KMS key, KMS
4150
- # can get the KMS key from metadata that it adds to the symmetric
4151
- # ciphertext blob. However, it is always recommended as a best
4152
- # practice. This practice ensures that you use the KMS key that you
4153
- # intend.
4326
+ # under an asymmetric KMS key. If you used a symmetric encryption KMS
4327
+ # key, KMS can get the KMS key from metadata that it adds to the
4328
+ # symmetric ciphertext blob. However, it is always recommended as a
4329
+ # best practice. This practice ensures that you use the KMS key that
4330
+ # you intend.
4154
4331
  #
4155
4332
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
4156
4333
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -4174,9 +4351,9 @@ module Aws::KMS
4174
4351
  #
4175
4352
  # @!attribute [rw] destination_key_id
4176
4353
  # A unique identifier for the KMS key that is used to reencrypt the
4177
- # data. Specify a symmetric or asymmetric KMS key with a `KeyUsage`
4178
- # value of `ENCRYPT_DECRYPT`. To find the `KeyUsage` value of a KMS
4179
- # key, use the DescribeKey operation.
4354
+ # data. Specify a symmetric encryption KMS key or an asymmetric KMS
4355
+ # key with a `KeyUsage` value of `ENCRYPT_DECRYPT`. To find the
4356
+ # `KeyUsage` value of a KMS key, use the DescribeKey operation.
4180
4357
  #
4181
4358
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
4182
4359
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -4203,17 +4380,19 @@ module Aws::KMS
4203
4380
  # data.
4204
4381
  #
4205
4382
  # A destination encryption context is valid only when the destination
4206
- # KMS key is a symmetric KMS key. The standard ciphertext format for
4207
- # asymmetric KMS keys does not include fields for metadata.
4383
+ # KMS key is a symmetric encryption KMS key. The standard ciphertext
4384
+ # format for asymmetric KMS keys does not include fields for metadata.
4208
4385
  #
4209
4386
  # An *encryption context* is a collection of non-secret key-value
4210
- # pairs that represents additional authenticated data. When you use an
4387
+ # pairs that represent additional authenticated data. When you use an
4211
4388
  # encryption context to encrypt data, you must specify the same (an
4212
4389
  # exact case-sensitive match) encryption context to decrypt the data.
4213
- # An encryption context is optional when encrypting with a symmetric
4214
- # KMS key, but it is highly recommended.
4390
+ # An encryption context is supported only on operations with symmetric
4391
+ # encryption KMS keys. On operations with symmetric encryption KMS
4392
+ # keys, an encryption context is optional, but it is strongly
4393
+ # recommended.
4215
4394
  #
4216
- # For more information, see [Encryption Context][1] in the *Key
4395
+ # For more information, see [Encryption context][1] in the *Key
4217
4396
  # Management Service Developer Guide*.
4218
4397
  #
4219
4398
  #
@@ -4224,8 +4403,8 @@ module Aws::KMS
4224
4403
  # @!attribute [rw] source_encryption_algorithm
4225
4404
  # Specifies the encryption algorithm that KMS will use to decrypt the
4226
4405
  # ciphertext before it is reencrypted. The default value,
4227
- # `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric KMS
4228
- # keys.
4406
+ # `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric
4407
+ # encryption KMS keys.
4229
4408
  #
4230
4409
  # Specify the same algorithm that was used to encrypt the ciphertext.
4231
4410
  # If you specify a different algorithm, the decrypt attempt fails.
@@ -4238,7 +4417,7 @@ module Aws::KMS
4238
4417
  # Specifies the encryption algorithm that KMS will use to reecrypt the
4239
4418
  # data after it has decrypted it. The default value,
4240
4419
  # `SYMMETRIC_DEFAULT`, represents the encryption algorithm used for
4241
- # symmetric KMS keys.
4420
+ # symmetric encryption KMS keys.
4242
4421
  #
4243
4422
  # This parameter is required only when the destination KMS key is an
4244
4423
  # asymmetric KMS key.
@@ -4359,24 +4538,33 @@ module Aws::KMS
4359
4538
  # [KMS service endpoints][1] in the *Amazon Web Services General
4360
4539
  # Reference*.
4361
4540
  #
4541
+ # <note markdown="1"> HMAC KMS keys are not supported in all Amazon Web Services Regions.
4542
+ # If you try to replicate an HMAC KMS key in an Amazon Web Services
4543
+ # Region in which HMAC keys are not supported, the `ReplicateKey`
4544
+ # operation returns an `UnsupportedOperationException`. For a list of
4545
+ # Regions in which HMAC KMS keys are supported, see [HMAC keys in
4546
+ # KMS][2] in the *Key Management Service Developer Guide*.
4547
+ #
4548
+ # </note>
4549
+ #
4362
4550
  # The replica must be in a different Amazon Web Services Region than
4363
4551
  # its primary key and other replicas of that primary key, but in the
4364
4552
  # same Amazon Web Services partition. KMS must be available in the
4365
4553
  # replica Region. If the Region is not enabled by default, the Amazon
4366
- # Web Services account must be enabled in the Region.
4367
- #
4368
- # For information about Amazon Web Services partitions, see [Amazon
4369
- # Resource Names (ARNs) in the *Amazon Web Services General
4370
- # Reference*.][2] For information about enabling and disabling
4371
- # Regions, see [Enabling a Region][3] and [Disabling a Region][4] in
4372
- # the *Amazon Web Services General Reference*.
4554
+ # Web Services account must be enabled in the Region. For information
4555
+ # about Amazon Web Services partitions, see [Amazon Resource Names
4556
+ # (ARNs)][3] in the *Amazon Web Services General Reference*. For
4557
+ # information about enabling and disabling Regions, see [Enabling a
4558
+ # Region][4] and [Disabling a Region][5] in the *Amazon Web Services
4559
+ # General Reference*.
4373
4560
  #
4374
4561
  #
4375
4562
  #
4376
4563
  # [1]: https://docs.aws.amazon.com/general/latest/gr/kms.html#kms_region
4377
- # [2]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
4378
- # [3]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable
4379
- # [4]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-disable
4564
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
4565
+ # [3]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
4566
+ # [4]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable
4567
+ # [5]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-disable
4380
4568
  # @return [String]
4381
4569
  #
4382
4570
  # @!attribute [rw] policy
@@ -4455,8 +4643,8 @@ module Aws::KMS
4455
4643
  # the TagResource operation.
4456
4644
  #
4457
4645
  # <note markdown="1"> Tagging or untagging a KMS key can allow or deny permission to the
4458
- # KMS key. For details, see [Using ABAC in KMS][1] in the *Key
4459
- # Management Service Developer Guide*.
4646
+ # KMS key. For details, see [ABAC in KMS][1] in the *Key Management
4647
+ # Service Developer Guide*.
4460
4648
  #
4461
4649
  # </note>
4462
4650
  #
@@ -4500,9 +4688,9 @@ module Aws::KMS
4500
4688
 
4501
4689
  # @!attribute [rw] replica_key_metadata
4502
4690
  # Displays details about the new replica key, including its Amazon
4503
- # Resource Name ([key ARN][1]) and [key state][2]. It also includes
4504
- # the ARN and Amazon Web Services Region of its primary key and other
4505
- # replica keys.
4691
+ # Resource Name ([key ARN][1]) and [Key states of KMS keys][2]. It
4692
+ # also includes the ARN and Amazon Web Services Region of its primary
4693
+ # key and other replica keys.
4506
4694
  #
4507
4695
  #
4508
4696
  #
@@ -4690,8 +4878,8 @@ module Aws::KMS
4690
4878
  # The current status of the KMS key.
4691
4879
  #
4692
4880
  # For more information about how key state affects the use of a KMS
4693
- # key, see [Key state: Effect on your KMS key][1] in the *Key
4694
- # Management Service Developer Guide*.
4881
+ # key, see [Key states of KMS keys][1] in the *Key Management Service
4882
+ # Developer Guide*.
4695
4883
  #
4696
4884
  #
4697
4885
  #
@@ -5194,6 +5382,100 @@ module Aws::KMS
5194
5382
  include Aws::Structure
5195
5383
  end
5196
5384
 
5385
+ # @note When making an API call, you may pass VerifyMacRequest
5386
+ # data as a hash:
5387
+ #
5388
+ # {
5389
+ # message: "data", # required
5390
+ # key_id: "KeyIdType", # required
5391
+ # mac_algorithm: "HMAC_SHA_224", # required, accepts HMAC_SHA_224, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA_512
5392
+ # mac: "data", # required
5393
+ # grant_tokens: ["GrantTokenType"],
5394
+ # }
5395
+ #
5396
+ # @!attribute [rw] message
5397
+ # The message that will be used in the verification. Enter the same
5398
+ # message that was used to generate the HMAC.
5399
+ #
5400
+ # GenerateMac and `VerifyMac` do not provide special handling for
5401
+ # message digests. If you generated an HMAC for a hash digest of a
5402
+ # message, you must verify the HMAC for the same hash digest.
5403
+ # @return [String]
5404
+ #
5405
+ # @!attribute [rw] key_id
5406
+ # The KMS key that will be used in the verification.
5407
+ #
5408
+ # Enter a key ID of the KMS key that was used to generate the HMAC. If
5409
+ # you identify a different KMS key, the `VerifyMac` operation fails.
5410
+ # @return [String]
5411
+ #
5412
+ # @!attribute [rw] mac_algorithm
5413
+ # The MAC algorithm that will be used in the verification. Enter the
5414
+ # same MAC algorithm that was used to compute the HMAC. This algorithm
5415
+ # must be supported by the HMAC KMS key identified by the `KeyId`
5416
+ # parameter.
5417
+ # @return [String]
5418
+ #
5419
+ # @!attribute [rw] mac
5420
+ # The HMAC to verify. Enter the HMAC that was generated by the
5421
+ # GenerateMac operation when you specified the same message, HMAC KMS
5422
+ # key, and MAC algorithm as the values specified in this request.
5423
+ # @return [String]
5424
+ #
5425
+ # @!attribute [rw] grant_tokens
5426
+ # A list of grant tokens.
5427
+ #
5428
+ # Use a grant token when your permission to call this operation comes
5429
+ # from a new grant that has not yet achieved *eventual consistency*.
5430
+ # For more information, see [Grant token][1] and [Using a grant
5431
+ # token][2] in the *Key Management Service Developer Guide*.
5432
+ #
5433
+ #
5434
+ #
5435
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
5436
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
5437
+ # @return [Array<String>]
5438
+ #
5439
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/VerifyMacRequest AWS API Documentation
5440
+ #
5441
+ class VerifyMacRequest < Struct.new(
5442
+ :message,
5443
+ :key_id,
5444
+ :mac_algorithm,
5445
+ :mac,
5446
+ :grant_tokens)
5447
+ SENSITIVE = [:message]
5448
+ include Aws::Structure
5449
+ end
5450
+
5451
+ # @!attribute [rw] key_id
5452
+ # The HMAC KMS key used in the verification.
5453
+ # @return [String]
5454
+ #
5455
+ # @!attribute [rw] mac_valid
5456
+ # A Boolean value that indicates whether the HMAC was verified. A
5457
+ # value of `True` indicates that the HMAC (`Mac`) was generated with
5458
+ # the specified `Message`, HMAC KMS key (`KeyID`) and `MacAlgorithm.`.
5459
+ #
5460
+ # If the HMAC is not verified, the `VerifyMac` operation fails with a
5461
+ # `KMSInvalidMacException` exception. This exception indicates that
5462
+ # one or more of the inputs changed since the HMAC was computed.
5463
+ # @return [Boolean]
5464
+ #
5465
+ # @!attribute [rw] mac_algorithm
5466
+ # The MAC algorithm used in the verification.
5467
+ # @return [String]
5468
+ #
5469
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/VerifyMacResponse AWS API Documentation
5470
+ #
5471
+ class VerifyMacResponse < Struct.new(
5472
+ :key_id,
5473
+ :mac_valid,
5474
+ :mac_algorithm)
5475
+ SENSITIVE = []
5476
+ include Aws::Structure
5477
+ end
5478
+
5197
5479
  # @note When making an API call, you may pass VerifyRequest
5198
5480
  # data as a hash:
5199
5481
  #