aws-sdk-kms 1.54.0 → 1.57.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,
@@ -629,16 +642,19 @@ module Aws::KMS
629
642
  # }
630
643
  #
631
644
  # @!attribute [rw] policy
632
- # The key policy to attach to the KMS key.
645
+ # The key policy to attach to the KMS key. If you do not specify a key
646
+ # policy, KMS attaches a default key policy to the KMS key. For more
647
+ # information, see [Default key policy][1] in the *Key Management
648
+ # Service Developer Guide*.
633
649
  #
634
650
  # If you provide a key policy, it must meet the following criteria:
635
651
  #
636
- # * If you don't set `BypassPolicyLockoutSafetyCheck` to true, the
652
+ # * If you don't set `BypassPolicyLockoutSafetyCheck` to `True`, the
637
653
  # key policy must allow the principal that is making the `CreateKey`
638
654
  # request to make a subsequent PutKeyPolicy request on the KMS key.
639
655
  # This reduces the risk that the KMS key becomes unmanageable. For
640
656
  # more information, refer to the scenario in the [Default Key
641
- # Policy][1] section of the <i> <i>Key Management Service Developer
657
+ # Policy][2] section of the <i> <i>Key Management Service Developer
642
658
  # Guide</i> </i>.
643
659
  #
644
660
  # * Each statement in the key policy must contain one or more
@@ -648,14 +664,23 @@ module Aws::KMS
648
664
  # enforce a delay before including the new principal in a key policy
649
665
  # because the new principal might not be immediately visible to KMS.
650
666
  # For more information, see [Changes that I make are not always
651
- # immediately visible][2] in the *Amazon Web Services Identity and
667
+ # immediately visible][3] in the *Amazon Web Services Identity and
652
668
  # Access Management User Guide*.
653
669
  #
654
- # If you do not provide a key policy, KMS attaches a default key
655
- # policy to the KMS key. For more information, see [Default Key
656
- # Policy][3] in the *Key Management Service Developer Guide*.
670
+ # A key policy document must conform to the following rules.
671
+ #
672
+ # * Up to 32 kilobytes (32768 bytes)
657
673
  #
658
- # The key policy size quota is 32 kilobytes (32768 bytes).
674
+ # * Must be UTF-8 encoded
675
+ #
676
+ # * The only Unicode characters that are permitted in a key policy
677
+ # document are the horizontal tab (U+0009), linefeed (U+000A),
678
+ # carriage return (U+000D), and characters in the range U+0020 to
679
+ # U+00FF.
680
+ #
681
+ # * The `Sid` element in a key policy statement can include spaces.
682
+ # (Spaces are prohibited in the `Sid` element of an IAM policy
683
+ # document.)
659
684
  #
660
685
  # For help writing and formatting a JSON policy document, see the [IAM
661
686
  # JSON Policy Reference][4] in the <i> <i>Identity and Access
@@ -663,9 +688,9 @@ module Aws::KMS
663
688
  #
664
689
  #
665
690
  #
666
- # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
667
- # [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency
668
- # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default
691
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default
692
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
693
+ # [3]: https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency
669
694
  # [4]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html
670
695
  # @return [String]
671
696
  #
@@ -683,14 +708,17 @@ module Aws::KMS
683
708
  # @!attribute [rw] key_usage
684
709
  # Determines the [cryptographic operations][1] for which you can use
685
710
  # 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.
711
+ # is optional when you are creating a symmetric encryption KMS key;
712
+ # otherwise, it is required. You can't change the `KeyUsage` value
713
+ # after the KMS key is created.
688
714
  #
689
715
  # Select only one valid value.
690
716
  #
691
- # * For symmetric KMS keys, omit the parameter or specify
717
+ # * For symmetric encryption KMS keys, omit the parameter or specify
692
718
  # `ENCRYPT_DECRYPT`.
693
719
  #
720
+ # * For HMAC KMS keys (symmetric), specify `GENERATE_VERIFY_MAC`.
721
+ #
694
722
  # * For asymmetric KMS keys with RSA key material, specify
695
723
  # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
696
724
  #
@@ -715,33 +743,41 @@ module Aws::KMS
715
743
  # Specifies the type of KMS key to create. The default value,
716
744
  # `SYMMETRIC_DEFAULT`, creates a KMS key with a 256-bit symmetric key
717
745
  # 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>.
746
+ # KMS key, see [Choosing a KMS key type][1] in the <i> <i>Key
747
+ # Management Service Developer Guide</i> </i>.
720
748
  #
721
749
  # 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*.
750
+ # key or an asymmetric key pair. It also determines the cryptographic
751
+ # algorithms that the KMS key supports. You can't change the
752
+ # `KeySpec` after the KMS key is created. To further restrict the
753
+ # algorithms that can be used with the KMS key, use a condition key in
754
+ # its key policy or IAM policy. For more information, see
755
+ # [kms:EncryptionAlgorithm][2], [kms:MacAlgorithm][3] or [kms:Signing
756
+ # Algorithm][4] in the <i> <i>Key Management Service Developer
757
+ # Guide</i> </i>.
758
+ #
759
+ # [Amazon Web Services services that are integrated with KMS][5] use
760
+ # symmetric encryption KMS keys to protect your data. These services
761
+ # do not support asymmetric KMS keys or HMAC KMS keys.
736
762
  #
737
763
  # KMS supports the following key specs for KMS keys:
738
764
  #
739
- # * Symmetric key (default)
765
+ # * Symmetric encryption key (default)
740
766
  #
741
767
  # * `SYMMETRIC_DEFAULT` (AES-256-GCM)
742
768
  #
743
769
  # ^
744
770
  #
771
+ # * HMAC keys (symmetric)
772
+ #
773
+ # * `HMAC_224`
774
+ #
775
+ # * `HMAC_256`
776
+ #
777
+ # * `HMAC_384`
778
+ #
779
+ # * `HMAC_512`
780
+ #
745
781
  # * Asymmetric RSA key pairs
746
782
  #
747
783
  # * `RSA_2048`
@@ -767,11 +803,11 @@ module Aws::KMS
767
803
  #
768
804
  #
769
805
  #
770
- # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html
806
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-types.html#symm-asymm-choose
771
807
  # [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
808
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-mac-algorithm
809
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-signing-algorithm
810
+ # [5]: http://aws.amazon.com/kms/features/#AWS_Service_Integration
775
811
  # @return [String]
776
812
  #
777
813
  # @!attribute [rw] origin
@@ -783,13 +819,13 @@ module Aws::KMS
783
819
  # material), set the value to `EXTERNAL`. For more information about
784
820
  # importing key material into KMS, see [Importing Key Material][1] in
785
821
  # the *Key Management Service Developer Guide*. This value is valid
786
- # only for symmetric KMS keys.
822
+ # only for symmetric encryption KMS keys.
787
823
  #
788
824
  # To create a KMS key in an KMS [custom key store][2] and create its
789
825
  # key material in the associated CloudHSM cluster, set this value to
790
826
  # `AWS_CLOUDHSM`. You must also use the `CustomKeyStoreId` parameter
791
827
  # to identify the custom key store. This value is valid only for
792
- # symmetric KMS keys.
828
+ # symmetric encryption KMS keys.
793
829
  #
794
830
  #
795
831
  #
@@ -805,9 +841,9 @@ module Aws::KMS
805
841
  # associated with the custom key store must have at least two active
806
842
  # HSMs, each in a different Availability Zone in the Region.
807
843
  #
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.
844
+ # This parameter is valid only for symmetric encryption KMS keys in a
845
+ # single Region. You cannot create any other type of KMS key in a
846
+ # custom key store.
811
847
  #
812
848
  # To find the ID of a custom key store, use the
813
849
  # DescribeCustomKeyStores operation.
@@ -853,8 +889,8 @@ module Aws::KMS
853
889
  # TagResource operation.
854
890
  #
855
891
  # <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*.
892
+ # KMS key. For details, see [ABAC in KMS][1] in the *Key Management
893
+ # Service Developer Guide*.
858
894
  #
859
895
  # </note>
860
896
  #
@@ -895,15 +931,16 @@ module Aws::KMS
895
931
  # to encrypt data in one Amazon Web Services Region and decrypt it in
896
932
  # a different Amazon Web Services Region without re-encrypting the
897
933
  # data or making a cross-Region call. For more information about
898
- # multi-Region keys, see [Using multi-Region keys][1] in the *Key
934
+ # multi-Region keys, see [Multi-Region keys in KMS][1] in the *Key
899
935
  # Management Service Developer Guide*.
900
936
  #
901
937
  # This value creates a *primary key*, not a replica. To create a
902
938
  # *replica key*, use the ReplicateKey operation.
903
939
  #
904
- # You can create a symmetric or asymmetric multi-Region key, and you
905
- # can create a multi-Region key with imported key material. However,
906
- # you cannot create a multi-Region key in a custom key store.
940
+ # You can create a multi-Region version of a symmetric encryption KMS
941
+ # key, an HMAC KMS key, an asymmetric KMS key, or a KMS key with
942
+ # imported key material. However, you cannot create a multi-Region key
943
+ # in a custom key store.
907
944
  #
908
945
  #
909
946
  #
@@ -1170,17 +1207,20 @@ module Aws::KMS
1170
1207
  # @!attribute [rw] encryption_context
1171
1208
  # Specifies the encryption context to use when decrypting the data. An
1172
1209
  # 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.
1210
+ # with a symmetric encryption KMS key. The standard asymmetric
1211
+ # encryption algorithms and HMAC algorithms that KMS uses do not
1212
+ # support an encryption context.
1175
1213
  #
1176
1214
  # An *encryption context* is a collection of non-secret key-value
1177
- # pairs that represents additional authenticated data. When you use an
1215
+ # pairs that represent additional authenticated data. When you use an
1178
1216
  # encryption context to encrypt data, you must specify the same (an
1179
1217
  # 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.
1218
+ # An encryption context is supported only on operations with symmetric
1219
+ # encryption KMS keys. On operations with symmetric encryption KMS
1220
+ # keys, an encryption context is optional, but it is strongly
1221
+ # recommended.
1182
1222
  #
1183
- # For more information, see [Encryption Context][2] in the *Key
1223
+ # For more information, see [Encryption context][2] in the *Key
1184
1224
  # Management Service Developer Guide*.
1185
1225
  #
1186
1226
  #
@@ -1204,15 +1244,18 @@ module Aws::KMS
1204
1244
  # @return [Array<String>]
1205
1245
  #
1206
1246
  # @!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.
1247
+ # Specifies the KMS key that KMS uses to decrypt the ciphertext.
1248
+ #
1249
+ # Enter a key ID of the KMS key that was used to encrypt the
1250
+ # ciphertext. If you identify a different KMS key, the `Decrypt`
1251
+ # operation throws an `IncorrectKeyException`.
1209
1252
  #
1210
1253
  # 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.
1254
+ # under an asymmetric KMS key. If you used a symmetric encryption KMS
1255
+ # key, KMS can get the KMS key from metadata that it adds to the
1256
+ # symmetric ciphertext blob. However, it is always recommended as a
1257
+ # best practice. This practice ensures that you use the KMS key that
1258
+ # you intend.
1216
1259
  #
1217
1260
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
1218
1261
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -1243,7 +1286,7 @@ module Aws::KMS
1243
1286
  # This parameter is required only when the ciphertext was encrypted
1244
1287
  # under an asymmetric KMS key. The default value, `SYMMETRIC_DEFAULT`,
1245
1288
  # represents the only supported algorithm that is valid for symmetric
1246
- # KMS keys.
1289
+ # encryption KMS keys.
1247
1290
  # @return [String]
1248
1291
  #
1249
1292
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DecryptRequest AWS API Documentation
@@ -1570,9 +1613,10 @@ module Aws::KMS
1570
1613
  # }
1571
1614
  #
1572
1615
  # @!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].
1616
+ # Identifies a symmetric encryption KMS key. You cannot enable or
1617
+ # disable automatic rotation of [asymmetric KMS keys][1], [HMAC KMS
1618
+ # keys][2], KMS keys with [imported key material][3], or KMS keys in a
1619
+ # [custom key store][4].
1576
1620
  #
1577
1621
  # Specify the key ID or key ARN of the KMS key.
1578
1622
  #
@@ -1589,8 +1633,9 @@ module Aws::KMS
1589
1633
  #
1590
1634
  #
1591
1635
  # [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
1636
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
1637
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1638
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1594
1639
  # @return [String]
1595
1640
  #
1596
1641
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotationRequest AWS API Documentation
@@ -1678,11 +1723,12 @@ module Aws::KMS
1678
1723
  # }
1679
1724
  #
1680
1725
  # @!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.
1726
+ # Identifies a symmetric encryption KMS key. You cannot enable or
1727
+ # disable automatic rotation of [asymmetric KMS keys][1], [HMAC KMS
1728
+ # keys][2], KMS keys with [imported key material][3], or KMS keys in a
1729
+ # [custom key store][4]. The key rotation status of these KMS keys is
1730
+ # always `false`. To enable or disable automatic rotation of a set of
1731
+ # related [multi-Region keys][5], set the property on the primary key.
1686
1732
  #
1687
1733
  # Specify the key ID or key ARN of the KMS key.
1688
1734
  #
@@ -1698,10 +1744,11 @@ module Aws::KMS
1698
1744
  #
1699
1745
  #
1700
1746
  #
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
1747
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
1748
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
1749
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1750
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1751
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
1705
1752
  # @return [String]
1706
1753
  #
1707
1754
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotationRequest AWS API Documentation
@@ -1726,7 +1773,9 @@ module Aws::KMS
1726
1773
  # }
1727
1774
  #
1728
1775
  # @!attribute [rw] key_id
1729
- # Identifies the KMS key to use in the encryption operation.
1776
+ # Identifies the KMS key to use in the encryption operation. The KMS
1777
+ # key must have a `KeyUsage` of `ENCRYPT_DECRYPT`. To find the
1778
+ # `KeyUsage` of a KMS key, use the DescribeKey operation.
1730
1779
  #
1731
1780
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
1732
1781
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -1755,18 +1804,20 @@ module Aws::KMS
1755
1804
  # @!attribute [rw] encryption_context
1756
1805
  # Specifies the encryption context that will be used to encrypt the
1757
1806
  # 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.
1807
+ # operations][1] with a symmetric encryption KMS key. The standard
1808
+ # asymmetric encryption algorithms and HMAC algorithms that KMS uses
1809
+ # do not support an encryption context.
1761
1810
  #
1762
1811
  # An *encryption context* is a collection of non-secret key-value
1763
- # pairs that represents additional authenticated data. When you use an
1812
+ # pairs that represent additional authenticated data. When you use an
1764
1813
  # encryption context to encrypt data, you must specify the same (an
1765
1814
  # 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.
1815
+ # An encryption context is supported only on operations with symmetric
1816
+ # encryption KMS keys. On operations with symmetric encryption KMS
1817
+ # keys, an encryption context is optional, but it is strongly
1818
+ # recommended.
1768
1819
  #
1769
- # For more information, see [Encryption Context][2] in the *Key
1820
+ # For more information, see [Encryption context][2] in the *Key
1770
1821
  # Management Service Developer Guide*.
1771
1822
  #
1772
1823
  #
@@ -1795,9 +1846,9 @@ module Aws::KMS
1795
1846
  # that you specify.
1796
1847
  #
1797
1848
  # 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.
1849
+ # value, `SYMMETRIC_DEFAULT`, is the algorithm used for symmetric
1850
+ # encryption KMS keys. If you are using an asymmetric KMS key, we
1851
+ # recommend RSAES\_OAEP\_SHA\_256.
1801
1852
  # @return [String]
1802
1853
  #
1803
1854
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EncryptRequest AWS API Documentation
@@ -1874,13 +1925,15 @@ module Aws::KMS
1874
1925
  # the private key in the data key pair.
1875
1926
  #
1876
1927
  # An *encryption context* is a collection of non-secret key-value
1877
- # pairs that represents additional authenticated data. When you use an
1928
+ # pairs that represent additional authenticated data. When you use an
1878
1929
  # encryption context to encrypt data, you must specify the same (an
1879
1930
  # 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.
1931
+ # An encryption context is supported only on operations with symmetric
1932
+ # encryption KMS keys. On operations with symmetric encryption KMS
1933
+ # keys, an encryption context is optional, but it is strongly
1934
+ # recommended.
1882
1935
  #
1883
- # For more information, see [Encryption Context][1] in the *Key
1936
+ # For more information, see [Encryption context][1] in the *Key
1884
1937
  # Management Service Developer Guide*.
1885
1938
  #
1886
1939
  #
@@ -1889,10 +1942,10 @@ module Aws::KMS
1889
1942
  # @return [Hash<String,String>]
1890
1943
  #
1891
1944
  # @!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.
1945
+ # Specifies the symmetric encryption KMS key that encrypts the private
1946
+ # key in the data key pair. You cannot specify an asymmetric KMS key
1947
+ # or a KMS key in a custom key store. To get the type and origin of
1948
+ # your KMS key, use the DescribeKey operation.
1896
1949
  #
1897
1950
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
1898
1951
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -1961,7 +2014,9 @@ module Aws::KMS
1961
2014
  # @return [String]
1962
2015
  #
1963
2016
  # @!attribute [rw] public_key
1964
- # The public key (in plaintext).
2017
+ # The public key (in plaintext). When you use the HTTP API or the
2018
+ # Amazon Web Services CLI, the value is Base64-encoded. Otherwise, it
2019
+ # is not Base64-encoded.
1965
2020
  # @return [String]
1966
2021
  #
1967
2022
  # @!attribute [rw] key_id
@@ -2006,13 +2061,15 @@ module Aws::KMS
2006
2061
  # the private key in the data key pair.
2007
2062
  #
2008
2063
  # An *encryption context* is a collection of non-secret key-value
2009
- # pairs that represents additional authenticated data. When you use an
2064
+ # pairs that represent additional authenticated data. When you use an
2010
2065
  # encryption context to encrypt data, you must specify the same (an
2011
2066
  # 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.
2067
+ # An encryption context is supported only on operations with symmetric
2068
+ # encryption KMS keys. On operations with symmetric encryption KMS
2069
+ # keys, an encryption context is optional, but it is strongly
2070
+ # recommended.
2014
2071
  #
2015
- # For more information, see [Encryption Context][1] in the *Key
2072
+ # For more information, see [Encryption context][1] in the *Key
2016
2073
  # Management Service Developer Guide*.
2017
2074
  #
2018
2075
  #
@@ -2021,10 +2078,10 @@ module Aws::KMS
2021
2078
  # @return [Hash<String,String>]
2022
2079
  #
2023
2080
  # @!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.
2081
+ # Specifies the symmetric encryption KMS key that encrypts the private
2082
+ # key in the data key pair. You cannot specify an asymmetric KMS key
2083
+ # or a KMS key in a custom key store. To get the type and origin of
2084
+ # your KMS key, use the DescribeKey operation.
2028
2085
  #
2029
2086
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
2030
2087
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -2087,7 +2144,9 @@ module Aws::KMS
2087
2144
  # @return [String]
2088
2145
  #
2089
2146
  # @!attribute [rw] public_key
2090
- # The public key (in plaintext).
2147
+ # The public key (in plaintext). When you use the HTTP API or the
2148
+ # Amazon Web Services CLI, the value is Base64-encoded. Otherwise, it
2149
+ # is not Base64-encoded.
2091
2150
  # @return [String]
2092
2151
  #
2093
2152
  # @!attribute [rw] key_id
@@ -2128,7 +2187,10 @@ module Aws::KMS
2128
2187
  # }
2129
2188
  #
2130
2189
  # @!attribute [rw] key_id
2131
- # Identifies the symmetric KMS key that encrypts the data key.
2190
+ # Specifies the symmetric encryption KMS key that encrypts the data
2191
+ # key. You cannot specify an asymmetric KMS key or a KMS key in a
2192
+ # custom key store. To get the type and origin of your KMS key, use
2193
+ # the DescribeKey operation.
2132
2194
  #
2133
2195
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
2134
2196
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -2155,13 +2217,15 @@ module Aws::KMS
2155
2217
  # the data key.
2156
2218
  #
2157
2219
  # An *encryption context* is a collection of non-secret key-value
2158
- # pairs that represents additional authenticated data. When you use an
2220
+ # pairs that represent additional authenticated data. When you use an
2159
2221
  # encryption context to encrypt data, you must specify the same (an
2160
2222
  # 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.
2223
+ # An encryption context is supported only on operations with symmetric
2224
+ # encryption KMS keys. On operations with symmetric encryption KMS
2225
+ # keys, an encryption context is optional, but it is strongly
2226
+ # recommended.
2163
2227
  #
2164
- # For more information, see [Encryption Context][1] in the *Key
2228
+ # For more information, see [Encryption context][1] in the *Key
2165
2229
  # Management Service Developer Guide*.
2166
2230
  #
2167
2231
  #
@@ -2260,7 +2324,10 @@ module Aws::KMS
2260
2324
  # }
2261
2325
  #
2262
2326
  # @!attribute [rw] key_id
2263
- # The identifier of the symmetric KMS key that encrypts the data key.
2327
+ # Specifies the symmetric encryption KMS key that encrypts the data
2328
+ # key. You cannot specify an asymmetric KMS key or a KMS key in a
2329
+ # custom key store. To get the type and origin of your KMS key, use
2330
+ # the DescribeKey operation.
2264
2331
  #
2265
2332
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
2266
2333
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -2287,13 +2354,15 @@ module Aws::KMS
2287
2354
  # the data key.
2288
2355
  #
2289
2356
  # An *encryption context* is a collection of non-secret key-value
2290
- # pairs that represents additional authenticated data. When you use an
2357
+ # pairs that represent additional authenticated data. When you use an
2291
2358
  # encryption context to encrypt data, you must specify the same (an
2292
2359
  # 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.
2360
+ # An encryption context is supported only on operations with symmetric
2361
+ # encryption KMS keys. On operations with symmetric encryption KMS
2362
+ # keys, an encryption context is optional, but it is strongly
2363
+ # recommended.
2295
2364
  #
2296
- # For more information, see [Encryption Context][1] in the *Key
2365
+ # For more information, see [Encryption context][1] in the *Key
2297
2366
  # Management Service Developer Guide*.
2298
2367
  #
2299
2368
  #
@@ -2363,6 +2432,93 @@ module Aws::KMS
2363
2432
  include Aws::Structure
2364
2433
  end
2365
2434
 
2435
+ # @note When making an API call, you may pass GenerateMacRequest
2436
+ # data as a hash:
2437
+ #
2438
+ # {
2439
+ # message: "data", # required
2440
+ # key_id: "KeyIdType", # required
2441
+ # mac_algorithm: "HMAC_SHA_224", # required, accepts HMAC_SHA_224, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA_512
2442
+ # grant_tokens: ["GrantTokenType"],
2443
+ # }
2444
+ #
2445
+ # @!attribute [rw] message
2446
+ # The message to be hashed. Specify a message of up to 4,096 bytes.
2447
+ #
2448
+ # `GenerateMac` and VerifyMac do not provide special handling for
2449
+ # message digests. If you generate an HMAC for a hash digest of a
2450
+ # message, you must verify the HMAC of the same hash digest.
2451
+ # @return [String]
2452
+ #
2453
+ # @!attribute [rw] key_id
2454
+ # The HMAC KMS key to use in the operation. The MAC algorithm computes
2455
+ # the HMAC for the message and the key as described in [RFC 2104][1].
2456
+ #
2457
+ # To identify an HMAC KMS key, use the DescribeKey operation and see
2458
+ # the `KeySpec` field in the response.
2459
+ #
2460
+ #
2461
+ #
2462
+ # [1]: https://datatracker.ietf.org/doc/html/rfc2104
2463
+ # @return [String]
2464
+ #
2465
+ # @!attribute [rw] mac_algorithm
2466
+ # The MAC algorithm used in the operation.
2467
+ #
2468
+ # The algorithm must be compatible with the HMAC KMS key that you
2469
+ # specify. To find the MAC algorithms that your HMAC KMS key supports,
2470
+ # use the DescribeKey operation and see the `MacAlgorithms` field in
2471
+ # the `DescribeKey` response.
2472
+ # @return [String]
2473
+ #
2474
+ # @!attribute [rw] grant_tokens
2475
+ # A list of grant tokens.
2476
+ #
2477
+ # Use a grant token when your permission to call this operation comes
2478
+ # from a new grant that has not yet achieved *eventual consistency*.
2479
+ # For more information, see [Grant token][1] and [Using a grant
2480
+ # token][2] in the *Key Management Service Developer Guide*.
2481
+ #
2482
+ #
2483
+ #
2484
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
2485
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
2486
+ # @return [Array<String>]
2487
+ #
2488
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateMacRequest AWS API Documentation
2489
+ #
2490
+ class GenerateMacRequest < Struct.new(
2491
+ :message,
2492
+ :key_id,
2493
+ :mac_algorithm,
2494
+ :grant_tokens)
2495
+ SENSITIVE = [:message]
2496
+ include Aws::Structure
2497
+ end
2498
+
2499
+ # @!attribute [rw] mac
2500
+ # The hash-based message authentication code (HMAC) for the given
2501
+ # message, key, and MAC algorithm.
2502
+ # @return [String]
2503
+ #
2504
+ # @!attribute [rw] mac_algorithm
2505
+ # The MAC algorithm that was used to generate the HMAC.
2506
+ # @return [String]
2507
+ #
2508
+ # @!attribute [rw] key_id
2509
+ # The HMAC KMS key used in the operation.
2510
+ # @return [String]
2511
+ #
2512
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateMacResponse AWS API Documentation
2513
+ #
2514
+ class GenerateMacResponse < Struct.new(
2515
+ :mac,
2516
+ :mac_algorithm,
2517
+ :key_id)
2518
+ SENSITIVE = []
2519
+ include Aws::Structure
2520
+ end
2521
+
2366
2522
  # @note When making an API call, you may pass GenerateRandomRequest
2367
2523
  # data as a hash:
2368
2524
  #
@@ -2513,8 +2669,9 @@ module Aws::KMS
2513
2669
  # }
2514
2670
  #
2515
2671
  # @!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`.
2672
+ # The identifier of the symmetric encryption KMS key into which you
2673
+ # will import key material. The `Origin` of the KMS key must be
2674
+ # `EXTERNAL`.
2518
2675
  #
2519
2676
  # Specify the key ID or key ARN of the KMS key.
2520
2677
  #
@@ -2729,10 +2886,11 @@ module Aws::KMS
2729
2886
  #
2730
2887
  # KMS applies the grant constraints only to cryptographic operations
2731
2888
  # 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.
2889
+ # operations with a [symmetric encryption KMS key][3]. Grant constraints
2890
+ # are not applied to operations that do not support an encryption
2891
+ # context, such as cryptographic operations with HMAC KMS keys or
2892
+ # asymmetric KMS keys, and management operations, such as DescribeKey or
2893
+ # RetireGrant.
2736
2894
  #
2737
2895
  # In a cryptographic operation, the encryption context in the decryption
2738
2896
  # operation must be an exact, case-sensitive match for the keys and
@@ -2880,10 +3038,13 @@ module Aws::KMS
2880
3038
  # }
2881
3039
  #
2882
3040
  # @!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.
3041
+ # The identifier of the symmetric encryption KMS key that receives the
3042
+ # imported key material. This must be the same KMS key specified in
3043
+ # the `KeyID` parameter of the corresponding GetParametersForImport
3044
+ # request. The `Origin` of the KMS key must be `EXTERNAL`. You cannot
3045
+ # perform this operation on an asymmetric KMS key, an HMAC KMS key, a
3046
+ # KMS key in a custom key store, or on a KMS key in a different Amazon
3047
+ # Web Services account
2887
3048
  #
2888
3049
  # Specify the key ID or key ARN of the KMS key.
2889
3050
  #
@@ -3095,9 +3256,11 @@ module Aws::KMS
3095
3256
  # key `(KeySpec`).
3096
3257
  #
3097
3258
  # 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.
3259
+ # the `KeyUsage` must be `ENCRYPT_DECRYPT`. For signing and verifying
3260
+ # messages, the `KeyUsage` must be `SIGN_VERIFY`. For generating and
3261
+ # verifying message authentication codes (MACs), the `KeyUsage` must be
3262
+ # `GENERATE_VERIFY_MAC`. To find the `KeyUsage` of a KMS key, use the
3263
+ # DescribeKey operation.
3101
3264
  #
3102
3265
  # To find the encryption or signing algorithms supported for a
3103
3266
  # particular KMS key, use the DescribeKey operation.
@@ -3141,6 +3304,22 @@ module Aws::KMS
3141
3304
  include Aws::Structure
3142
3305
  end
3143
3306
 
3307
+ # The request was rejected because the HMAC verification failed. HMAC
3308
+ # verification fails when the HMAC computed by using the specified
3309
+ # message, HMAC KMS key, and MAC algorithm does not match the HMAC
3310
+ # specified in the request.
3311
+ #
3312
+ # @!attribute [rw] message
3313
+ # @return [String]
3314
+ #
3315
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KMSInvalidMacException AWS API Documentation
3316
+ #
3317
+ class KMSInvalidMacException < Struct.new(
3318
+ :message)
3319
+ SENSITIVE = []
3320
+ include Aws::Structure
3321
+ end
3322
+
3144
3323
  # The request was rejected because the signature verification failed.
3145
3324
  # Signature verification fails when it cannot confirm that signature was
3146
3325
  # produced by signing the specified message with the specified KMS key
@@ -3161,8 +3340,8 @@ module Aws::KMS
3161
3340
  # is not valid for this request.
3162
3341
  #
3163
3342
  # 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>.
3343
+ # see [Key states of KMS keys][1] in the <i> <i>Key Management Service
3344
+ # Developer Guide</i> </i>.
3166
3345
  #
3167
3346
  #
3168
3347
  #
@@ -3247,8 +3426,8 @@ module Aws::KMS
3247
3426
  # The current status of the KMS key.
3248
3427
  #
3249
3428
  # 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*.
3429
+ # key, see [Key states of KMS keys][1] in the *Key Management Service
3430
+ # Developer Guide*.
3252
3431
  #
3253
3432
  #
3254
3433
  #
@@ -3355,9 +3534,8 @@ module Aws::KMS
3355
3534
  # (`False`) key. This value is `True` for multi-Region primary and
3356
3535
  # replica keys and `False` for regional KMS keys.
3357
3536
  #
3358
- # For more information about multi-Region keys, see [Using
3359
- # multi-Region keys][1] in the *Key Management Service Developer
3360
- # Guide*.
3537
+ # For more information about multi-Region keys, see [Multi-Region keys
3538
+ # in KMS][1] in the *Key Management Service Developer Guide*.
3361
3539
  #
3362
3540
  #
3363
3541
  #
@@ -3402,6 +3580,14 @@ module Aws::KMS
3402
3580
  # the deletion date appears in the `DeletionDate` field.
3403
3581
  # @return [Integer]
3404
3582
  #
3583
+ # @!attribute [rw] mac_algorithms
3584
+ # The message authentication code (MAC) algorithm that the HMAC KMS
3585
+ # key supports.
3586
+ #
3587
+ # This value is present only when the `KeyUsage` of the KMS key is
3588
+ # `GENERATE_VERIFY_MAC`.
3589
+ # @return [Array<String>]
3590
+ #
3405
3591
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KeyMetadata AWS API Documentation
3406
3592
  #
3407
3593
  class KeyMetadata < Struct.new(
@@ -3426,7 +3612,8 @@ module Aws::KMS
3426
3612
  :signing_algorithms,
3427
3613
  :multi_region,
3428
3614
  :multi_region_configuration,
3429
- :pending_deletion_window_in_days)
3615
+ :pending_deletion_window_in_days,
3616
+ :mac_algorithms)
3430
3617
  SENSITIVE = []
3431
3618
  include Aws::Structure
3432
3619
  end
@@ -3834,8 +4021,8 @@ module Aws::KMS
3834
4021
  # A list of tags. Each tag consists of a tag key and a tag value.
3835
4022
  #
3836
4023
  # <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*.
4024
+ # KMS key. For details, see [ABAC in KMS][1] in the *Key Management
4025
+ # Service Developer Guide*.
3839
4026
  #
3840
4027
  # </note>
3841
4028
  #
@@ -4054,15 +4241,25 @@ module Aws::KMS
4054
4241
  # immediately visible][2] in the *Amazon Web Services Identity and
4055
4242
  # Access Management User Guide*.
4056
4243
  #
4057
- # The key policy cannot exceed 32 kilobytes (32768 bytes). For more
4058
- # information, see [Resource Quotas][3] in the *Key Management Service
4059
- # Developer Guide*.
4244
+ # A key policy document must conform to the following rules.
4245
+ #
4246
+ # * Up to 32 kilobytes (32768 bytes)
4247
+ #
4248
+ # * Must be UTF-8 encoded
4249
+ #
4250
+ # * The only Unicode characters that are permitted in a key policy
4251
+ # document are the horizontal tab (U+0009), linefeed (U+000A),
4252
+ # carriage return (U+000D), and characters in the range U+0020 to
4253
+ # U+00FF.
4254
+ #
4255
+ # * The `Sid` element in a key policy statement can include spaces.
4256
+ # (Spaces are prohibited in the `Sid` element of an IAM policy
4257
+ # document.)
4060
4258
  #
4061
4259
  #
4062
4260
  #
4063
4261
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
4064
4262
  # [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency
4065
- # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/resource-limits.html
4066
4263
  # @return [String]
4067
4264
  #
4068
4265
  # @!attribute [rw] bypass_policy_lockout_safety_check
@@ -4126,13 +4323,15 @@ module Aws::KMS
4126
4323
  # ciphertext.
4127
4324
  #
4128
4325
  # An *encryption context* is a collection of non-secret key-value
4129
- # pairs that represents additional authenticated data. When you use an
4326
+ # pairs that represent additional authenticated data. When you use an
4130
4327
  # encryption context to encrypt data, you must specify the same (an
4131
4328
  # 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.
4329
+ # An encryption context is supported only on operations with symmetric
4330
+ # encryption KMS keys. On operations with symmetric encryption KMS
4331
+ # keys, an encryption context is optional, but it is strongly
4332
+ # recommended.
4134
4333
  #
4135
- # For more information, see [Encryption Context][1] in the *Key
4334
+ # For more information, see [Encryption context][1] in the *Key
4136
4335
  # Management Service Developer Guide*.
4137
4336
  #
4138
4337
  #
@@ -4142,15 +4341,18 @@ module Aws::KMS
4142
4341
  #
4143
4342
  # @!attribute [rw] source_key_id
4144
4343
  # 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.
4344
+ # before it is re-encrypted.
4345
+ #
4346
+ # Enter a key ID of the KMS key that was used to encrypt the
4347
+ # ciphertext. If you identify a different KMS key, the `ReEncrypt`
4348
+ # operation throws an `IncorrectKeyException`.
4147
4349
  #
4148
4350
  # 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.
4351
+ # under an asymmetric KMS key. If you used a symmetric encryption KMS
4352
+ # key, KMS can get the KMS key from metadata that it adds to the
4353
+ # symmetric ciphertext blob. However, it is always recommended as a
4354
+ # best practice. This practice ensures that you use the KMS key that
4355
+ # you intend.
4154
4356
  #
4155
4357
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
4156
4358
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -4174,9 +4376,9 @@ module Aws::KMS
4174
4376
  #
4175
4377
  # @!attribute [rw] destination_key_id
4176
4378
  # 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.
4379
+ # data. Specify a symmetric encryption KMS key or an asymmetric KMS
4380
+ # key with a `KeyUsage` value of `ENCRYPT_DECRYPT`. To find the
4381
+ # `KeyUsage` value of a KMS key, use the DescribeKey operation.
4180
4382
  #
4181
4383
  # To specify a KMS key, use its key ID, key ARN, alias name, or alias
4182
4384
  # ARN. When using an alias name, prefix it with `"alias/"`. To specify
@@ -4203,17 +4405,19 @@ module Aws::KMS
4203
4405
  # data.
4204
4406
  #
4205
4407
  # 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.
4408
+ # KMS key is a symmetric encryption KMS key. The standard ciphertext
4409
+ # format for asymmetric KMS keys does not include fields for metadata.
4208
4410
  #
4209
4411
  # An *encryption context* is a collection of non-secret key-value
4210
- # pairs that represents additional authenticated data. When you use an
4412
+ # pairs that represent additional authenticated data. When you use an
4211
4413
  # encryption context to encrypt data, you must specify the same (an
4212
4414
  # 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.
4415
+ # An encryption context is supported only on operations with symmetric
4416
+ # encryption KMS keys. On operations with symmetric encryption KMS
4417
+ # keys, an encryption context is optional, but it is strongly
4418
+ # recommended.
4215
4419
  #
4216
- # For more information, see [Encryption Context][1] in the *Key
4420
+ # For more information, see [Encryption context][1] in the *Key
4217
4421
  # Management Service Developer Guide*.
4218
4422
  #
4219
4423
  #
@@ -4224,8 +4428,8 @@ module Aws::KMS
4224
4428
  # @!attribute [rw] source_encryption_algorithm
4225
4429
  # Specifies the encryption algorithm that KMS will use to decrypt the
4226
4430
  # ciphertext before it is reencrypted. The default value,
4227
- # `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric KMS
4228
- # keys.
4431
+ # `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric
4432
+ # encryption KMS keys.
4229
4433
  #
4230
4434
  # Specify the same algorithm that was used to encrypt the ciphertext.
4231
4435
  # If you specify a different algorithm, the decrypt attempt fails.
@@ -4238,7 +4442,7 @@ module Aws::KMS
4238
4442
  # Specifies the encryption algorithm that KMS will use to reecrypt the
4239
4443
  # data after it has decrypted it. The default value,
4240
4444
  # `SYMMETRIC_DEFAULT`, represents the encryption algorithm used for
4241
- # symmetric KMS keys.
4445
+ # symmetric encryption KMS keys.
4242
4446
  #
4243
4447
  # This parameter is required only when the destination KMS key is an
4244
4448
  # asymmetric KMS key.
@@ -4359,24 +4563,33 @@ module Aws::KMS
4359
4563
  # [KMS service endpoints][1] in the *Amazon Web Services General
4360
4564
  # Reference*.
4361
4565
  #
4566
+ # <note markdown="1"> HMAC KMS keys are not supported in all Amazon Web Services Regions.
4567
+ # If you try to replicate an HMAC KMS key in an Amazon Web Services
4568
+ # Region in which HMAC keys are not supported, the `ReplicateKey`
4569
+ # operation returns an `UnsupportedOperationException`. For a list of
4570
+ # Regions in which HMAC KMS keys are supported, see [HMAC keys in
4571
+ # KMS][2] in the *Key Management Service Developer Guide*.
4572
+ #
4573
+ # </note>
4574
+ #
4362
4575
  # The replica must be in a different Amazon Web Services Region than
4363
4576
  # its primary key and other replicas of that primary key, but in the
4364
4577
  # same Amazon Web Services partition. KMS must be available in the
4365
4578
  # 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*.
4579
+ # Web Services account must be enabled in the Region. For information
4580
+ # about Amazon Web Services partitions, see [Amazon Resource Names
4581
+ # (ARNs)][3] in the *Amazon Web Services General Reference*. For
4582
+ # information about enabling and disabling Regions, see [Enabling a
4583
+ # Region][4] and [Disabling a Region][5] in the *Amazon Web Services
4584
+ # General Reference*.
4373
4585
  #
4374
4586
  #
4375
4587
  #
4376
4588
  # [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
4589
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
4590
+ # [3]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
4591
+ # [4]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable
4592
+ # [5]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-disable
4380
4593
  # @return [String]
4381
4594
  #
4382
4595
  # @!attribute [rw] policy
@@ -4408,7 +4621,20 @@ module Aws::KMS
4408
4621
  # immediately visible][3] in the <i> <i>Identity and Access
4409
4622
  # Management User Guide</i> </i>.
4410
4623
  #
4411
- # * The key policy size quota is 32 kilobytes (32768 bytes).
4624
+ # A key policy document must conform to the following rules.
4625
+ #
4626
+ # * Up to 32 kilobytes (32768 bytes)
4627
+ #
4628
+ # * Must be UTF-8 encoded
4629
+ #
4630
+ # * The only Unicode characters that are permitted in a key policy
4631
+ # document are the horizontal tab (U+0009), linefeed (U+000A),
4632
+ # carriage return (U+000D), and characters in the range U+0020 to
4633
+ # U+00FF.
4634
+ #
4635
+ # * The `Sid` element in a key policy statement can include spaces.
4636
+ # (Spaces are prohibited in the `Sid` element of an IAM policy
4637
+ # document.)
4412
4638
  #
4413
4639
  #
4414
4640
  #
@@ -4455,8 +4681,8 @@ module Aws::KMS
4455
4681
  # the TagResource operation.
4456
4682
  #
4457
4683
  # <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*.
4684
+ # KMS key. For details, see [ABAC in KMS][1] in the *Key Management
4685
+ # Service Developer Guide*.
4460
4686
  #
4461
4687
  # </note>
4462
4688
  #
@@ -4500,9 +4726,9 @@ module Aws::KMS
4500
4726
 
4501
4727
  # @!attribute [rw] replica_key_metadata
4502
4728
  # 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.
4729
+ # Resource Name ([key ARN][1]) and [Key states of KMS keys][2]. It
4730
+ # also includes the ARN and Amazon Web Services Region of its primary
4731
+ # key and other replica keys.
4506
4732
  #
4507
4733
  #
4508
4734
  #
@@ -4652,7 +4878,7 @@ module Aws::KMS
4652
4878
  # The waiting period, specified in number of days. After the waiting
4653
4879
  # period ends, KMS deletes the KMS key.
4654
4880
  #
4655
- # If the KMS key is a multi-Region primary key with replicas, the
4881
+ # If the KMS key is a multi-Region primary key with replica keys, the
4656
4882
  # waiting period begins when the last of its replica keys is deleted.
4657
4883
  # Otherwise, the waiting period begins immediately.
4658
4884
  #
@@ -4690,8 +4916,8 @@ module Aws::KMS
4690
4916
  # The current status of the KMS key.
4691
4917
  #
4692
4918
  # 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*.
4919
+ # key, see [Key states of KMS keys][1] in the *Key Management Service
4920
+ # Developer Guide*.
4695
4921
  #
4696
4922
  #
4697
4923
  #
@@ -5194,6 +5420,100 @@ module Aws::KMS
5194
5420
  include Aws::Structure
5195
5421
  end
5196
5422
 
5423
+ # @note When making an API call, you may pass VerifyMacRequest
5424
+ # data as a hash:
5425
+ #
5426
+ # {
5427
+ # message: "data", # required
5428
+ # key_id: "KeyIdType", # required
5429
+ # mac_algorithm: "HMAC_SHA_224", # required, accepts HMAC_SHA_224, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA_512
5430
+ # mac: "data", # required
5431
+ # grant_tokens: ["GrantTokenType"],
5432
+ # }
5433
+ #
5434
+ # @!attribute [rw] message
5435
+ # The message that will be used in the verification. Enter the same
5436
+ # message that was used to generate the HMAC.
5437
+ #
5438
+ # GenerateMac and `VerifyMac` do not provide special handling for
5439
+ # message digests. If you generated an HMAC for a hash digest of a
5440
+ # message, you must verify the HMAC for the same hash digest.
5441
+ # @return [String]
5442
+ #
5443
+ # @!attribute [rw] key_id
5444
+ # The KMS key that will be used in the verification.
5445
+ #
5446
+ # Enter a key ID of the KMS key that was used to generate the HMAC. If
5447
+ # you identify a different KMS key, the `VerifyMac` operation fails.
5448
+ # @return [String]
5449
+ #
5450
+ # @!attribute [rw] mac_algorithm
5451
+ # The MAC algorithm that will be used in the verification. Enter the
5452
+ # same MAC algorithm that was used to compute the HMAC. This algorithm
5453
+ # must be supported by the HMAC KMS key identified by the `KeyId`
5454
+ # parameter.
5455
+ # @return [String]
5456
+ #
5457
+ # @!attribute [rw] mac
5458
+ # The HMAC to verify. Enter the HMAC that was generated by the
5459
+ # GenerateMac operation when you specified the same message, HMAC KMS
5460
+ # key, and MAC algorithm as the values specified in this request.
5461
+ # @return [String]
5462
+ #
5463
+ # @!attribute [rw] grant_tokens
5464
+ # A list of grant tokens.
5465
+ #
5466
+ # Use a grant token when your permission to call this operation comes
5467
+ # from a new grant that has not yet achieved *eventual consistency*.
5468
+ # For more information, see [Grant token][1] and [Using a grant
5469
+ # token][2] in the *Key Management Service Developer Guide*.
5470
+ #
5471
+ #
5472
+ #
5473
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
5474
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
5475
+ # @return [Array<String>]
5476
+ #
5477
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/VerifyMacRequest AWS API Documentation
5478
+ #
5479
+ class VerifyMacRequest < Struct.new(
5480
+ :message,
5481
+ :key_id,
5482
+ :mac_algorithm,
5483
+ :mac,
5484
+ :grant_tokens)
5485
+ SENSITIVE = [:message]
5486
+ include Aws::Structure
5487
+ end
5488
+
5489
+ # @!attribute [rw] key_id
5490
+ # The HMAC KMS key used in the verification.
5491
+ # @return [String]
5492
+ #
5493
+ # @!attribute [rw] mac_valid
5494
+ # A Boolean value that indicates whether the HMAC was verified. A
5495
+ # value of `True` indicates that the HMAC (`Mac`) was generated with
5496
+ # the specified `Message`, HMAC KMS key (`KeyID`) and `MacAlgorithm.`.
5497
+ #
5498
+ # If the HMAC is not verified, the `VerifyMac` operation fails with a
5499
+ # `KMSInvalidMacException` exception. This exception indicates that
5500
+ # one or more of the inputs changed since the HMAC was computed.
5501
+ # @return [Boolean]
5502
+ #
5503
+ # @!attribute [rw] mac_algorithm
5504
+ # The MAC algorithm used in the verification.
5505
+ # @return [String]
5506
+ #
5507
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/VerifyMacResponse AWS API Documentation
5508
+ #
5509
+ class VerifyMacResponse < Struct.new(
5510
+ :key_id,
5511
+ :mac_valid,
5512
+ :mac_algorithm)
5513
+ SENSITIVE = []
5514
+ include Aws::Structure
5515
+ end
5516
+
5197
5517
  # @note When making an API call, you may pass VerifyRequest
5198
5518
  # data as a hash:
5199
5519
  #