aws-sdk-kms 1.53.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-kms/client.rb +1032 -541
- data/lib/aws-sdk-kms/client_api.rb +67 -0
- data/lib/aws-sdk-kms/errors.rb +16 -0
- data/lib/aws-sdk-kms/types.rb +468 -186
- data/lib/aws-sdk-kms.rb +1 -1
- metadata +4 -4
    
        data/lib/aws-sdk-kms/client.rb
    CHANGED
    
    | @@ -27,7 +27,9 @@ require 'aws-sdk-core/plugins/client_metrics_plugin.rb' | |
| 27 27 | 
             
            require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb'
         | 
| 28 28 | 
             
            require 'aws-sdk-core/plugins/transfer_encoding.rb'
         | 
| 29 29 | 
             
            require 'aws-sdk-core/plugins/http_checksum.rb'
         | 
| 30 | 
            +
            require 'aws-sdk-core/plugins/checksum_algorithm.rb'
         | 
| 30 31 | 
             
            require 'aws-sdk-core/plugins/defaults_mode.rb'
         | 
| 32 | 
            +
            require 'aws-sdk-core/plugins/recursion_detection.rb'
         | 
| 31 33 | 
             
            require 'aws-sdk-core/plugins/signature_v4.rb'
         | 
| 32 34 | 
             
            require 'aws-sdk-core/plugins/protocols/json_rpc.rb'
         | 
| 33 35 |  | 
| @@ -74,7 +76,9 @@ module Aws::KMS | |
| 74 76 | 
             
                add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
         | 
| 75 77 | 
             
                add_plugin(Aws::Plugins::TransferEncoding)
         | 
| 76 78 | 
             
                add_plugin(Aws::Plugins::HttpChecksum)
         | 
| 79 | 
            +
                add_plugin(Aws::Plugins::ChecksumAlgorithm)
         | 
| 77 80 | 
             
                add_plugin(Aws::Plugins::DefaultsMode)
         | 
| 81 | 
            +
                add_plugin(Aws::Plugins::RecursionDetection)
         | 
| 78 82 | 
             
                add_plugin(Aws::Plugins::SignatureV4)
         | 
| 79 83 | 
             
                add_plugin(Aws::Plugins::Protocols::JsonRpc)
         | 
| 80 84 |  | 
| @@ -366,8 +370,8 @@ module Aws::KMS | |
| 366 370 | 
             
                # Developer Guide*.
         | 
| 367 371 | 
             
                #
         | 
| 368 372 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 369 | 
            -
                # key state. For details, see [Key  | 
| 370 | 
            -
                #  | 
| 373 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 374 | 
            +
                # Management Service Developer Guide*.
         | 
| 371 375 | 
             
                #
         | 
| 372 376 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 373 377 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -540,8 +544,8 @@ module Aws::KMS | |
| 540 544 | 
             
                # Creates a friendly name for a KMS key.
         | 
| 541 545 | 
             
                #
         | 
| 542 546 | 
             
                # <note markdown="1"> Adding, deleting, or updating an alias can allow or deny permission to
         | 
| 543 | 
            -
                # the KMS key. For details, see [ | 
| 544 | 
            -
                #  | 
| 547 | 
            +
                # the KMS key. For details, see [ABAC in KMS][1] in the *Key Management
         | 
| 548 | 
            +
                # Service Developer Guide*.
         | 
| 545 549 | 
             
                #
         | 
| 546 550 | 
             
                #  </note>
         | 
| 547 551 | 
             
                #
         | 
| @@ -566,8 +570,8 @@ module Aws::KMS | |
| 566 570 | 
             
                # created, use the ListAliases operation.
         | 
| 567 571 | 
             
                #
         | 
| 568 572 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 569 | 
            -
                # key state. For details, see [Key  | 
| 570 | 
            -
                #  | 
| 573 | 
            +
                # key state. For details, see [Key states of KMS keys][4] in the *Key
         | 
| 574 | 
            +
                # Management Service Developer Guide*.
         | 
| 571 575 | 
             
                #
         | 
| 572 576 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on an
         | 
| 573 577 | 
             
                # alias in a different Amazon Web Services account.
         | 
| @@ -808,7 +812,7 @@ module Aws::KMS | |
| 808 812 | 
             
                # and delete it without changing your key policies or IAM policies.
         | 
| 809 813 | 
             
                #
         | 
| 810 814 | 
             
                # For detailed information about grants, including grant terminology,
         | 
| 811 | 
            -
                # see [ | 
| 815 | 
            +
                # see [Grants in KMS][1] in the <i> <i>Key Management Service Developer
         | 
| 812 816 | 
             
                # Guide</i> </i>. For examples of working with grants in several
         | 
| 813 817 | 
             
                # programming languages, see [Programming grants][2].
         | 
| 814 818 | 
             
                #
         | 
| @@ -831,8 +835,8 @@ module Aws::KMS | |
| 831 835 | 
             
                #   the ListGrants or ListRetirableGrants operations.
         | 
| 832 836 | 
             
                #
         | 
| 833 837 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 834 | 
            -
                # key state. For details, see [Key  | 
| 835 | 
            -
                #  | 
| 838 | 
            +
                # key state. For details, see [Key states of KMS keys][4] in the *Key
         | 
| 839 | 
            +
                # Management Service Developer Guide*.
         | 
| 836 840 | 
             
                #
         | 
| 837 841 | 
             
                # **Cross-account use**\: Yes. To perform this operation on a KMS key in
         | 
| 838 842 | 
             
                # a different Amazon Web Services account, specify the key ARN in the
         | 
| @@ -917,12 +921,13 @@ module Aws::KMS | |
| 917 921 | 
             
                # @option params [required, Array<String>] :operations
         | 
| 918 922 | 
             
                #   A list of operations that the grant permits.
         | 
| 919 923 | 
             
                #
         | 
| 920 | 
            -
                #    | 
| 921 | 
            -
                #    | 
| 922 | 
            -
                #    | 
| 923 | 
            -
                #    | 
| 924 | 
            -
                #    | 
| 925 | 
            -
                #    | 
| 924 | 
            +
                #   This list must include only operations that are permitted in a grant.
         | 
| 925 | 
            +
                #   Also, the operation must be supported on the KMS key. For example, you
         | 
| 926 | 
            +
                #   cannot create a grant for a symmetric encryption KMS key that allows
         | 
| 927 | 
            +
                #   the Sign operation, or a grant for an asymmetric KMS key that allows
         | 
| 928 | 
            +
                #   the GenerateDataKey operation. If you try, KMS returns a
         | 
| 929 | 
            +
                #   `ValidationError` exception. For details, see [Grant operations][1] in
         | 
| 930 | 
            +
                #   the *Key Management Service Developer Guide*.
         | 
| 926 931 | 
             
                #
         | 
| 927 932 | 
             
                #
         | 
| 928 933 | 
             
                #
         | 
| @@ -934,27 +939,38 @@ module Aws::KMS | |
| 934 939 | 
             
                #   KMS supports the `EncryptionContextEquals` and
         | 
| 935 940 | 
             
                #   `EncryptionContextSubset` grant constraints. Each constraint value can
         | 
| 936 941 | 
             
                #   include up to 8 encryption context pairs. The encryption context value
         | 
| 937 | 
            -
                #   in each constraint cannot exceed 384 characters.
         | 
| 938 | 
            -
                #
         | 
| 939 | 
            -
                #   These grant constraints allow the permissions in the grant only when
         | 
| 940 | 
            -
                #   the encryption context in the request matches
         | 
| 941 | 
            -
                #   (`EncryptionContextEquals`) or includes (`EncryptionContextSubset`)
         | 
| 942 | 
            -
                #   the encryption context specified in this structure. For information
         | 
| 943 | 
            -
                #   about grant constraints, see [Using grant constraints][1] in the *Key
         | 
| 942 | 
            +
                #   in each constraint cannot exceed 384 characters. For information about
         | 
| 943 | 
            +
                #   grant constraints, see [Using grant constraints][1] in the *Key
         | 
| 944 944 | 
             
                #   Management Service Developer Guide*. For more information about
         | 
| 945 | 
            -
                #   encryption context, see [Encryption  | 
| 945 | 
            +
                #   encryption context, see [Encryption context][2] in the <i> <i>Key
         | 
| 946 946 | 
             
                #   Management Service Developer Guide</i> </i>.
         | 
| 947 947 | 
             
                #
         | 
| 948 | 
            -
                #   The encryption context grant constraints  | 
| 949 | 
            -
                #    | 
| 950 | 
            -
                #    | 
| 951 | 
            -
                #    | 
| 952 | 
            -
                # | 
| 948 | 
            +
                #   The encryption context grant constraints allow the permissions in the
         | 
| 949 | 
            +
                #   grant only when the encryption context in the request matches
         | 
| 950 | 
            +
                #   (`EncryptionContextEquals`) or includes (`EncryptionContextSubset`)
         | 
| 951 | 
            +
                #   the encryption context specified in this structure.
         | 
| 952 | 
            +
                #
         | 
| 953 | 
            +
                #   The encryption context grant constraints are supported only on [grant
         | 
| 954 | 
            +
                #   operations][3] that include an `EncryptionContext` parameter, such as
         | 
| 955 | 
            +
                #   cryptographic operations on symmetric encryption KMS keys. Grants with
         | 
| 956 | 
            +
                #   grant constraints can include the DescribeKey and RetireGrant
         | 
| 957 | 
            +
                #   operations, but the constraint doesn't apply to these operations. If
         | 
| 958 | 
            +
                #   a grant with a grant constraint includes the `CreateGrant` operation,
         | 
| 959 | 
            +
                #   the constraint requires that any grants created with the `CreateGrant`
         | 
| 960 | 
            +
                #   permission have an equally strict or stricter encryption context
         | 
| 961 | 
            +
                #   constraint.
         | 
| 962 | 
            +
                #
         | 
| 963 | 
            +
                #   You cannot use an encryption context grant constraint for
         | 
| 964 | 
            +
                #   cryptographic operations with asymmetric KMS keys or HMAC KMS keys.
         | 
| 965 | 
            +
                #   These keys don't support an encryption context.
         | 
| 966 | 
            +
                #
         | 
| 967 | 
            +
                #
         | 
| 953 968 | 
             
                #
         | 
| 954 969 | 
             
                #
         | 
| 955 970 | 
             
                #
         | 
| 956 971 | 
             
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/create-grant-overview.html#grant-constraints
         | 
| 957 972 | 
             
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
         | 
| 973 | 
            +
                #   [3]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations
         | 
| 958 974 | 
             
                #
         | 
| 959 975 | 
             
                # @option params [Array<String>] :grant_tokens
         | 
| 960 976 | 
             
                #   A list of grant tokens.
         | 
| @@ -1016,7 +1032,7 @@ module Aws::KMS | |
| 1016 1032 | 
             
                #     key_id: "KeyIdType", # required
         | 
| 1017 1033 | 
             
                #     grantee_principal: "PrincipalIdType", # required
         | 
| 1018 1034 | 
             
                #     retiring_principal: "PrincipalIdType",
         | 
| 1019 | 
            -
                #     operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext
         | 
| 1035 | 
            +
                #     operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext, GenerateMac, VerifyMac
         | 
| 1020 1036 | 
             
                #     constraints: {
         | 
| 1021 1037 | 
             
                #       encryption_context_subset: {
         | 
| 1022 1038 | 
             
                #         "EncryptionContextKey" => "EncryptionContextValue",
         | 
| @@ -1046,35 +1062,35 @@ module Aws::KMS | |
| 1046 1062 | 
             
                # Creates a unique customer managed [KMS key][1] in your Amazon Web
         | 
| 1047 1063 | 
             
                # Services account and Region.
         | 
| 1048 1064 | 
             
                #
         | 
| 1065 | 
            +
                # In addition to the required parameters, you can use the optional
         | 
| 1066 | 
            +
                # parameters to specify a key policy, description, tags, and other
         | 
| 1067 | 
            +
                # useful elements for any key type.
         | 
| 1068 | 
            +
                #
         | 
| 1049 1069 | 
             
                # <note markdown="1"> KMS is replacing the term *customer master key (CMK)* with *KMS key*
         | 
| 1050 1070 | 
             
                # and *KMS key*. The concept has not changed. To prevent breaking
         | 
| 1051 1071 | 
             
                # changes, KMS is keeping some variations of this term.
         | 
| 1052 1072 | 
             
                #
         | 
| 1053 1073 | 
             
                #  </note>
         | 
| 1054 1074 | 
             
                #
         | 
| 1055 | 
            -
                #  | 
| 1056 | 
            -
                # | 
| 1075 | 
            +
                # To create different types of KMS keys, use the following guidance:
         | 
| 1076 | 
            +
                #
         | 
| 1077 | 
            +
                # Symmetric encryption KMS key
         | 
| 1057 1078 | 
             
                #
         | 
| 1058 | 
            -
                #  | 
| 1059 | 
            -
                #    | 
| 1060 | 
            -
                #    | 
| 1061 | 
            -
                #    | 
| 1062 | 
            -
                # | 
| 1079 | 
            +
                # : To create a symmetric encryption KMS key, you aren't required to
         | 
| 1080 | 
            +
                #   specify any parameters. The default value for `KeySpec`,
         | 
| 1081 | 
            +
                #   `SYMMETRIC_DEFAULT`, and the default value for `KeyUsage`,
         | 
| 1082 | 
            +
                #   `ENCRYPT_DECRYPT`, create a symmetric encryption KMS key.
         | 
| 1083 | 
            +
                #
         | 
| 1084 | 
            +
                #   If you need a key for basic encryption and decryption or you are
         | 
| 1085 | 
            +
                #   creating a KMS key to protect your resources in an Amazon Web
         | 
| 1086 | 
            +
                #   Services service, create a symmetric encryption KMS key. The key
         | 
| 1087 | 
            +
                #   material in a symmetric encryption key never leaves KMS unencrypted.
         | 
| 1088 | 
            +
                #   You can use a symmetric encryption KMS key to encrypt and decrypt
         | 
| 1089 | 
            +
                #   data up to 4,096 bytes, but they are typically used to generate data
         | 
| 1090 | 
            +
                #   keys and data keys pairs. For details, see GenerateDataKey and
         | 
| 1063 1091 | 
             
                #   GenerateDataKeyPair.
         | 
| 1064 1092 | 
             
                #
         | 
| 1065 | 
            -
                # * **Asymmetric KMS keys** can contain an RSA key pair or an Elliptic
         | 
| 1066 | 
            -
                #   Curve (ECC) key pair. The private key in an asymmetric KMS key never
         | 
| 1067 | 
            -
                #   leaves KMS unencrypted. However, you can use the GetPublicKey
         | 
| 1068 | 
            -
                #   operation to download the public key so it can be used outside of
         | 
| 1069 | 
            -
                #   KMS. KMS keys with RSA key pairs can be used to encrypt or decrypt
         | 
| 1070 | 
            -
                #   data or sign and verify messages (but not both). KMS keys with ECC
         | 
| 1071 | 
            -
                #   key pairs can be used only to sign and verify messages.
         | 
| 1072 | 
            -
                #
         | 
| 1073 | 
            -
                # For information about symmetric and asymmetric KMS keys, see [Using
         | 
| 1074 | 
            -
                # Symmetric and Asymmetric KMS keys][4] in the *Key Management Service
         | 
| 1075 | 
            -
                # Developer Guide*.
         | 
| 1076 1093 | 
             
                #
         | 
| 1077 | 
            -
                # To create different types of KMS keys, use the following guidance:
         | 
| 1078 1094 | 
             
                #
         | 
| 1079 1095 | 
             
                # Asymmetric KMS keys
         | 
| 1080 1096 | 
             
                #
         | 
| @@ -1084,14 +1100,37 @@ module Aws::KMS | |
| 1084 1100 | 
             
                #   to encrypt and decrypt or sign and verify. You can't change these
         | 
| 1085 1101 | 
             
                #   properties after the KMS key is created.
         | 
| 1086 1102 | 
             
                #
         | 
| 1103 | 
            +
                #   Asymmetric KMS keys contain an RSA key pair or an Elliptic Curve
         | 
| 1104 | 
            +
                #   (ECC) key pair. The private key in an asymmetric KMS key never
         | 
| 1105 | 
            +
                #   leaves AWS KMS unencrypted. However, you can use the GetPublicKey
         | 
| 1106 | 
            +
                #   operation to download the public key so it can be used outside of
         | 
| 1107 | 
            +
                #   AWS KMS. KMS keys with RSA key pairs can be used to encrypt or
         | 
| 1108 | 
            +
                #   decrypt data or sign and verify messages (but not both). KMS keys
         | 
| 1109 | 
            +
                #   with ECC key pairs can be used only to sign and verify messages. For
         | 
| 1110 | 
            +
                #   information about asymmetric KMS keys, see [Asymmetric KMS keys][2]
         | 
| 1111 | 
            +
                #   in the *Key Management Service Developer Guide*.
         | 
| 1087 1112 | 
             
                #
         | 
| 1088 1113 | 
             
                #
         | 
| 1089 | 
            -
                # Symmetric KMS keys
         | 
| 1090 1114 | 
             
                #
         | 
| 1091 | 
            -
                #  | 
| 1092 | 
            -
                # | 
| 1093 | 
            -
                # | 
| 1094 | 
            -
                #    | 
| 1115 | 
            +
                # HMAC KMS key
         | 
| 1116 | 
            +
                #
         | 
| 1117 | 
            +
                # : To create an HMAC KMS key, set the `KeySpec` parameter to a key spec
         | 
| 1118 | 
            +
                #   value for HMAC KMS keys. Then set the `KeyUsage` parameter to
         | 
| 1119 | 
            +
                #   `GENERATE_VERIFY_MAC`. You must set the key usage even though
         | 
| 1120 | 
            +
                #   `GENERATE_VERIFY_MAC` is the only valid key usage value for HMAC KMS
         | 
| 1121 | 
            +
                #   keys. You can't change these properties after the KMS key is
         | 
| 1122 | 
            +
                #   created.
         | 
| 1123 | 
            +
                #
         | 
| 1124 | 
            +
                #   HMAC KMS keys are symmetric keys that never leave KMS unencrypted.
         | 
| 1125 | 
            +
                #   You can use HMAC keys to generate (GenerateMac) and verify
         | 
| 1126 | 
            +
                #   (VerifyMac) HMAC codes for messages up to 4096 bytes.
         | 
| 1127 | 
            +
                #
         | 
| 1128 | 
            +
                #   HMAC KMS keys are not supported in all Amazon Web Services Regions.
         | 
| 1129 | 
            +
                #   If you try to create an HMAC KMS key in an Amazon Web Services
         | 
| 1130 | 
            +
                #   Region in which HMAC keys are not supported, the `CreateKey`
         | 
| 1131 | 
            +
                #   operation returns an `UnsupportedOperationException`. For a list of
         | 
| 1132 | 
            +
                #   Regions in which HMAC KMS keys are supported, see [HMAC keys in
         | 
| 1133 | 
            +
                #   KMS][3] in the *Key Management Service Developer Guide*.
         | 
| 1095 1134 | 
             
                #
         | 
| 1096 1135 | 
             
                #
         | 
| 1097 1136 | 
             
                #
         | 
| @@ -1106,6 +1145,12 @@ module Aws::KMS | |
| 1106 1145 | 
             
                #   operation. To change a replica key to a primary key, and its primary
         | 
| 1107 1146 | 
             
                #   key to a replica key, use the UpdatePrimaryRegion operation.
         | 
| 1108 1147 | 
             
                #
         | 
| 1148 | 
            +
                #   You can create multi-Region KMS keys for all supported KMS key
         | 
| 1149 | 
            +
                #   types: symmetric encryption KMS keys, HMAC KMS keys, asymmetric
         | 
| 1150 | 
            +
                #   encryption KMS keys, and asymmetric signing KMS keys. You can also
         | 
| 1151 | 
            +
                #   create multi-Region keys with imported key material. However, you
         | 
| 1152 | 
            +
                #   can't create multi-Region keys in a custom key store.
         | 
| 1153 | 
            +
                #
         | 
| 1109 1154 | 
             
                #   This operation supports *multi-Region keys*, an KMS feature that
         | 
| 1110 1155 | 
             
                #   lets you create multiple interoperable KMS keys in different Amazon
         | 
| 1111 1156 | 
             
                #   Web Services Regions. Because these KMS keys have the same key ID,
         | 
| @@ -1113,57 +1158,57 @@ module Aws::KMS | |
| 1113 1158 | 
             
                #   to encrypt data in one Amazon Web Services Region and decrypt it in
         | 
| 1114 1159 | 
             
                #   a different Amazon Web Services Region without re-encrypting the
         | 
| 1115 1160 | 
             
                #   data or making a cross-Region call. For more information about
         | 
| 1116 | 
            -
                #   multi-Region keys, see [ | 
| 1161 | 
            +
                #   multi-Region keys, see [Multi-Region keys in KMS][4] in the *Key
         | 
| 1117 1162 | 
             
                #   Management Service Developer Guide*.
         | 
| 1118 1163 | 
             
                #
         | 
| 1119 | 
            -
                #   You can create symmetric and asymmetric multi-Region keys and
         | 
| 1120 | 
            -
                #   multi-Region keys with imported key material. You cannot create
         | 
| 1121 | 
            -
                #   multi-Region keys in a custom key store.
         | 
| 1122 1164 | 
             
                #
         | 
| 1123 1165 | 
             
                #
         | 
| 1124 | 
            -
                #
         | 
| 1125 | 
            -
                #  | 
| 1126 | 
            -
                #    | 
| 1127 | 
            -
                #    | 
| 1128 | 
            -
                #   GetParametersForImport operation to get a public key and import
         | 
| 1166 | 
            +
                # : To import your own key material, begin by creating a symmetric
         | 
| 1167 | 
            +
                #   encryption KMS key with no key material. To do this, use the
         | 
| 1168 | 
            +
                #   `Origin` parameter of `CreateKey` with a value of `EXTERNAL`. Next,
         | 
| 1169 | 
            +
                #   use GetParametersForImport operation to get a public key and import
         | 
| 1129 1170 | 
             
                #   token, and use the public key to encrypt your key material. Then,
         | 
| 1130 1171 | 
             
                #   use ImportKeyMaterial with your import token to import the key
         | 
| 1131 1172 | 
             
                #   material. For step-by-step instructions, see [Importing Key
         | 
| 1132 | 
            -
                #   Material][ | 
| 1133 | 
            -
                #   Guide</i> </i>. | 
| 1134 | 
            -
                # | 
| 1173 | 
            +
                #   Material][5] in the <i> <i>Key Management Service Developer
         | 
| 1174 | 
            +
                #   Guide</i> </i>.
         | 
| 1175 | 
            +
                #
         | 
| 1176 | 
            +
                #   This feature supports only symmetric encryption KMS keys, including
         | 
| 1177 | 
            +
                #   multi-Region symmetric encryption KMS keys. You cannot import key
         | 
| 1178 | 
            +
                #   material into any other type of KMS key.
         | 
| 1135 1179 | 
             
                #
         | 
| 1136 1180 | 
             
                #   To create a multi-Region primary key with imported key material, use
         | 
| 1137 1181 | 
             
                #   the `Origin` parameter of `CreateKey` with a value of `EXTERNAL` and
         | 
| 1138 1182 | 
             
                #   the `MultiRegion` parameter with a value of `True`. To create
         | 
| 1139 1183 | 
             
                #   replicas of the multi-Region primary key, use the ReplicateKey
         | 
| 1140 | 
            -
                #   operation. For more information about multi-Region keys, see | 
| 1141 | 
            -
                #    | 
| 1142 | 
            -
                #   Guide*.
         | 
| 1184 | 
            +
                #   operation. For more information about multi-Region keys, see
         | 
| 1185 | 
            +
                #   [Multi-Region keys in KMS][4] in the *Key Management Service
         | 
| 1186 | 
            +
                #   Developer Guide*.
         | 
| 1143 1187 | 
             
                #
         | 
| 1144 1188 | 
             
                #
         | 
| 1145 1189 | 
             
                #
         | 
| 1146 1190 | 
             
                # Custom key store
         | 
| 1147 1191 | 
             
                #
         | 
| 1148 | 
            -
                # : To create a symmetric KMS key in a [custom key store][ | 
| 1149 | 
            -
                #   `CustomKeyStoreId` parameter to specify the custom key | 
| 1150 | 
            -
                #   must also use the `Origin` parameter with a value of | 
| 1151 | 
            -
                #   The CloudHSM cluster that is associated with the | 
| 1152 | 
            -
                #   must have at least two active HSMs in different | 
| 1153 | 
            -
                #   in the Amazon Web Services Region.
         | 
| 1192 | 
            +
                # : To create a symmetric encryption KMS key in a [custom key store][6],
         | 
| 1193 | 
            +
                #   use the `CustomKeyStoreId` parameter to specify the custom key
         | 
| 1194 | 
            +
                #   store. You must also use the `Origin` parameter with a value of
         | 
| 1195 | 
            +
                #   `AWS_CLOUDHSM`. The CloudHSM cluster that is associated with the
         | 
| 1196 | 
            +
                #   custom key store must have at least two active HSMs in different
         | 
| 1197 | 
            +
                #   Availability Zones in the Amazon Web Services Region.
         | 
| 1154 1198 | 
             
                #
         | 
| 1155 | 
            -
                #    | 
| 1156 | 
            -
                #    | 
| 1157 | 
            -
                #    | 
| 1158 | 
            -
                #    | 
| 1199 | 
            +
                #   Custom key stores support only symmetric encryption KMS keys. You
         | 
| 1200 | 
            +
                #   cannot create an HMAC KMS key or an asymmetric KMS key in a custom
         | 
| 1201 | 
            +
                #   key store. For information about custom key stores in KMS see
         | 
| 1202 | 
            +
                #   [Custom key stores in KMS][6] in the <i> <i>Key Management Service
         | 
| 1203 | 
            +
                #   Developer Guide</i> </i>.
         | 
| 1159 1204 | 
             
                #
         | 
| 1160 1205 | 
             
                # **Cross-account use**\: No. You cannot use this operation to create a
         | 
| 1161 1206 | 
             
                # KMS key in a different Amazon Web Services account.
         | 
| 1162 1207 | 
             
                #
         | 
| 1163 | 
            -
                # **Required permissions**\: [kms:CreateKey][ | 
| 1164 | 
            -
                # `Tags` parameter, [kms:TagResource][ | 
| 1208 | 
            +
                # **Required permissions**\: [kms:CreateKey][7] (IAM policy). To use the
         | 
| 1209 | 
            +
                # `Tags` parameter, [kms:TagResource][7] (IAM policy). For examples and
         | 
| 1165 1210 | 
             
                # information about related permissions, see [Allow a user to create KMS
         | 
| 1166 | 
            -
                # keys][ | 
| 1211 | 
            +
                # keys][8] in the *Key Management Service Developer Guide*.
         | 
| 1167 1212 | 
             
                #
         | 
| 1168 1213 | 
             
                # **Related operations:**
         | 
| 1169 1214 | 
             
                #
         | 
| @@ -1176,14 +1221,13 @@ module Aws::KMS | |
| 1176 1221 | 
             
                #
         | 
| 1177 1222 | 
             
                #
         | 
| 1178 1223 | 
             
                # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms-keys
         | 
| 1179 | 
            -
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 1180 | 
            -
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 1181 | 
            -
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 1182 | 
            -
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 1183 | 
            -
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 1184 | 
            -
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 1185 | 
            -
                # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 1186 | 
            -
                # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policy-example-create-key
         | 
| 1224 | 
            +
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
         | 
| 1225 | 
            +
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 1226 | 
            +
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html
         | 
| 1227 | 
            +
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
         | 
| 1228 | 
            +
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
         | 
| 1229 | 
            +
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 1230 | 
            +
                # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policy-example-create-key
         | 
| 1187 1231 | 
             
                #
         | 
| 1188 1232 | 
             
                # @option params [String] :policy
         | 
| 1189 1233 | 
             
                #   The key policy to attach to the KMS key.
         | 
| @@ -1238,14 +1282,17 @@ module Aws::KMS | |
| 1238 1282 | 
             
                # @option params [String] :key_usage
         | 
| 1239 1283 | 
             
                #   Determines the [cryptographic operations][1] for which you can use the
         | 
| 1240 1284 | 
             
                #   KMS key. The default value is `ENCRYPT_DECRYPT`. This parameter is
         | 
| 1241 | 
            -
                #    | 
| 1242 | 
            -
                #    | 
| 1285 | 
            +
                #   optional when you are creating a symmetric encryption KMS key;
         | 
| 1286 | 
            +
                #   otherwise, it is required. You can't change the `KeyUsage` value
         | 
| 1287 | 
            +
                #   after the KMS key is created.
         | 
| 1243 1288 | 
             
                #
         | 
| 1244 1289 | 
             
                #   Select only one valid value.
         | 
| 1245 1290 | 
             
                #
         | 
| 1246 | 
            -
                #   * For symmetric KMS keys, omit the parameter or specify
         | 
| 1291 | 
            +
                #   * For symmetric encryption KMS keys, omit the parameter or specify
         | 
| 1247 1292 | 
             
                #     `ENCRYPT_DECRYPT`.
         | 
| 1248 1293 | 
             
                #
         | 
| 1294 | 
            +
                #   * For HMAC KMS keys (symmetric), specify `GENERATE_VERIFY_MAC`.
         | 
| 1295 | 
            +
                #
         | 
| 1249 1296 | 
             
                #   * For asymmetric KMS keys with RSA key material, specify
         | 
| 1250 1297 | 
             
                #     `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
         | 
| 1251 1298 | 
             
                #
         | 
| @@ -1268,32 +1315,40 @@ module Aws::KMS | |
| 1268 1315 | 
             
                #   Specifies the type of KMS key to create. The default value,
         | 
| 1269 1316 | 
             
                #   `SYMMETRIC_DEFAULT`, creates a KMS key with a 256-bit symmetric key
         | 
| 1270 1317 | 
             
                #   for encryption and decryption. For help choosing a key spec for your
         | 
| 1271 | 
            -
                #   KMS key, see [ | 
| 1272 | 
            -
                #    | 
| 1318 | 
            +
                #   KMS key, see [Choosing a KMS key type][1] in the <i> <i>Key Management
         | 
| 1319 | 
            +
                #   Service Developer Guide</i> </i>.
         | 
| 1273 1320 | 
             
                #
         | 
| 1274 1321 | 
             
                #   The `KeySpec` determines whether the KMS key contains a symmetric key
         | 
| 1275 | 
            -
                #   or an asymmetric key pair. It also determines the  | 
| 1276 | 
            -
                #    | 
| 1277 | 
            -
                #    | 
| 1278 | 
            -
                #    | 
| 1279 | 
            -
                #    | 
| 1280 | 
            -
                #    | 
| 1281 | 
            -
                #    | 
| 1282 | 
            -
                #
         | 
| 1283 | 
            -
                #   [Amazon Web Services services that are integrated with KMS][ | 
| 1284 | 
            -
                #   symmetric KMS keys to protect your data. These services do | 
| 1285 | 
            -
                #   asymmetric KMS keys | 
| 1286 | 
            -
                #   symmetric or asymmetric, see [Identifying Symmetric and Asymmetric KMS
         | 
| 1287 | 
            -
                #   keys][5] in the *Key Management Service Developer Guide*.
         | 
| 1322 | 
            +
                #   or an asymmetric key pair. It also determines the algorithms that the
         | 
| 1323 | 
            +
                #   KMS key supports. You can't change the `KeySpec` after the KMS key is
         | 
| 1324 | 
            +
                #   created. To further restrict the algorithms that can be used with the
         | 
| 1325 | 
            +
                #   KMS key, use a condition key in its key policy or IAM policy. For more
         | 
| 1326 | 
            +
                #   information, see [kms:EncryptionAlgorithm][2], [kms:MacAlgorithm][3]
         | 
| 1327 | 
            +
                #   or [kms:Signing Algorithm][4] in the <i> <i>Key Management Service
         | 
| 1328 | 
            +
                #   Developer Guide</i> </i>.
         | 
| 1329 | 
            +
                #
         | 
| 1330 | 
            +
                #   [Amazon Web Services services that are integrated with KMS][5] use
         | 
| 1331 | 
            +
                #   symmetric encryption KMS keys to protect your data. These services do
         | 
| 1332 | 
            +
                #   not support asymmetric KMS keys or HMAC KMS keys.
         | 
| 1288 1333 | 
             
                #
         | 
| 1289 1334 | 
             
                #   KMS supports the following key specs for KMS keys:
         | 
| 1290 1335 | 
             
                #
         | 
| 1291 | 
            -
                #   * Symmetric key (default)
         | 
| 1336 | 
            +
                #   * Symmetric encryption key (default)
         | 
| 1292 1337 | 
             
                #
         | 
| 1293 1338 | 
             
                #     * `SYMMETRIC_DEFAULT` (AES-256-GCM)
         | 
| 1294 1339 | 
             
                #
         | 
| 1295 1340 | 
             
                #     ^
         | 
| 1296 1341 | 
             
                #
         | 
| 1342 | 
            +
                #   * HMAC keys (symmetric)
         | 
| 1343 | 
            +
                #
         | 
| 1344 | 
            +
                #     * `HMAC_224`
         | 
| 1345 | 
            +
                #
         | 
| 1346 | 
            +
                #     * `HMAC_256`
         | 
| 1347 | 
            +
                #
         | 
| 1348 | 
            +
                #     * `HMAC_384`
         | 
| 1349 | 
            +
                #
         | 
| 1350 | 
            +
                #     * `HMAC_512`
         | 
| 1351 | 
            +
                #
         | 
| 1297 1352 | 
             
                #   * Asymmetric RSA key pairs
         | 
| 1298 1353 | 
             
                #
         | 
| 1299 1354 | 
             
                #     * `RSA_2048`
         | 
| @@ -1318,11 +1373,11 @@ module Aws::KMS | |
| 1318 1373 | 
             
                #
         | 
| 1319 1374 | 
             
                #
         | 
| 1320 1375 | 
             
                #
         | 
| 1321 | 
            -
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose | 
| 1376 | 
            +
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-types.html#symm-asymm-choose
         | 
| 1322 1377 | 
             
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-algorithm
         | 
| 1323 | 
            -
                #   [3]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms- | 
| 1324 | 
            -
                #   [4]:  | 
| 1325 | 
            -
                #   [5]:  | 
| 1378 | 
            +
                #   [3]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-mac-algorithm
         | 
| 1379 | 
            +
                #   [4]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-signing-algorithm
         | 
| 1380 | 
            +
                #   [5]: http://aws.amazon.com/kms/features/#AWS_Service_Integration
         | 
| 1326 1381 | 
             
                #
         | 
| 1327 1382 | 
             
                # @option params [String] :origin
         | 
| 1328 1383 | 
             
                #   The source of the key material for the KMS key. You cannot change the
         | 
| @@ -1333,13 +1388,13 @@ module Aws::KMS | |
| 1333 1388 | 
             
                #   set the value to `EXTERNAL`. For more information about importing key
         | 
| 1334 1389 | 
             
                #   material into KMS, see [Importing Key Material][1] in the *Key
         | 
| 1335 1390 | 
             
                #   Management Service Developer Guide*. This value is valid only for
         | 
| 1336 | 
            -
                #   symmetric KMS keys.
         | 
| 1391 | 
            +
                #   symmetric encryption KMS keys.
         | 
| 1337 1392 | 
             
                #
         | 
| 1338 1393 | 
             
                #   To create a KMS key in an KMS [custom key store][2] and create its key
         | 
| 1339 1394 | 
             
                #   material in the associated CloudHSM cluster, set this value to
         | 
| 1340 1395 | 
             
                #   `AWS_CLOUDHSM`. You must also use the `CustomKeyStoreId` parameter to
         | 
| 1341 1396 | 
             
                #   identify the custom key store. This value is valid only for symmetric
         | 
| 1342 | 
            -
                #   KMS keys.
         | 
| 1397 | 
            +
                #   encryption KMS keys.
         | 
| 1343 1398 | 
             
                #
         | 
| 1344 1399 | 
             
                #
         | 
| 1345 1400 | 
             
                #
         | 
| @@ -1354,9 +1409,9 @@ module Aws::KMS | |
| 1354 1409 | 
             
                #   the custom key store must have at least two active HSMs, each in a
         | 
| 1355 1410 | 
             
                #   different Availability Zone in the Region.
         | 
| 1356 1411 | 
             
                #
         | 
| 1357 | 
            -
                #   This parameter is valid only for symmetric KMS keys  | 
| 1358 | 
            -
                #    | 
| 1359 | 
            -
                #    | 
| 1412 | 
            +
                #   This parameter is valid only for symmetric encryption KMS keys in a
         | 
| 1413 | 
            +
                #   single Region. You cannot create any other type of KMS key in a custom
         | 
| 1414 | 
            +
                #   key store.
         | 
| 1360 1415 | 
             
                #
         | 
| 1361 1416 | 
             
                #   To find the ID of a custom key store, use the DescribeCustomKeyStores
         | 
| 1362 1417 | 
             
                #   operation.
         | 
| @@ -1399,8 +1454,8 @@ module Aws::KMS | |
| 1399 1454 | 
             
                #   TagResource operation.
         | 
| 1400 1455 | 
             
                #
         | 
| 1401 1456 | 
             
                #   <note markdown="1"> Tagging or untagging a KMS key can allow or deny permission to the KMS
         | 
| 1402 | 
            -
                #   key. For details, see [ | 
| 1403 | 
            -
                #    | 
| 1457 | 
            +
                #   key. For details, see [ABAC in KMS][1] in the *Key Management Service
         | 
| 1458 | 
            +
                #   Developer Guide*.
         | 
| 1404 1459 | 
             
                #
         | 
| 1405 1460 | 
             
                #    </note>
         | 
| 1406 1461 | 
             
                #
         | 
| @@ -1440,7 +1495,7 @@ module Aws::KMS | |
| 1440 1495 | 
             
                #   encrypt data in one Amazon Web Services Region and decrypt it in a
         | 
| 1441 1496 | 
             
                #   different Amazon Web Services Region without re-encrypting the data or
         | 
| 1442 1497 | 
             
                #   making a cross-Region call. For more information about multi-Region
         | 
| 1443 | 
            -
                #   keys, see [ | 
| 1498 | 
            +
                #   keys, see [Multi-Region keys in KMS][1] in the *Key Management Service
         | 
| 1444 1499 | 
             
                #   Developer Guide*.
         | 
| 1445 1500 | 
             
                #
         | 
| 1446 1501 | 
             
                #   This value creates a *primary key*, not a replica. To create a
         | 
| @@ -1661,14 +1716,46 @@ module Aws::KMS | |
| 1661 1716 | 
             
                #     }, # Detailed information about the KMS key that this operation creates.
         | 
| 1662 1717 | 
             
                #   }
         | 
| 1663 1718 | 
             
                #
         | 
| 1719 | 
            +
                # @example Example: To create an HMAC KMS key
         | 
| 1720 | 
            +
                #
         | 
| 1721 | 
            +
                #   # This example creates a 384-bit symmetric HMAC KMS key. The GENERATE_VERIFY_MAC key usage value is required even though
         | 
| 1722 | 
            +
                #   # it's the only valid value for HMAC KMS keys. The key spec and key usage can't be changed after the key is created. 
         | 
| 1723 | 
            +
                #
         | 
| 1724 | 
            +
                #   resp = client.create_key({
         | 
| 1725 | 
            +
                #     key_spec: "HMAC_384", # Describes the type of key material in the KMS key.
         | 
| 1726 | 
            +
                #     key_usage: "GENERATE_VERIFY_MAC", # The cryptographic operations for which you can use the KMS key.
         | 
| 1727 | 
            +
                #   })
         | 
| 1728 | 
            +
                #
         | 
| 1729 | 
            +
                #   resp.to_h outputs the following:
         | 
| 1730 | 
            +
                #   {
         | 
| 1731 | 
            +
                #     key_metadata: {
         | 
| 1732 | 
            +
                #       aws_account_id: "111122223333", 
         | 
| 1733 | 
            +
                #       arn: "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", 
         | 
| 1734 | 
            +
                #       creation_date: Time.parse("2022-04-05T14:04:55-07:00"), 
         | 
| 1735 | 
            +
                #       customer_master_key_spec: "HMAC_384", 
         | 
| 1736 | 
            +
                #       description: "", 
         | 
| 1737 | 
            +
                #       enabled: true, 
         | 
| 1738 | 
            +
                #       key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", 
         | 
| 1739 | 
            +
                #       key_manager: "CUSTOMER", 
         | 
| 1740 | 
            +
                #       key_spec: "HMAC_384", 
         | 
| 1741 | 
            +
                #       key_state: "Enabled", 
         | 
| 1742 | 
            +
                #       key_usage: "GENERATE_VERIFY_MAC", 
         | 
| 1743 | 
            +
                #       mac_algorithms: [
         | 
| 1744 | 
            +
                #         "HMAC_SHA_384", 
         | 
| 1745 | 
            +
                #       ], 
         | 
| 1746 | 
            +
                #       multi_region: false, 
         | 
| 1747 | 
            +
                #       origin: "AWS_KMS", 
         | 
| 1748 | 
            +
                #     }, # Detailed information about the KMS key that this operation creates.
         | 
| 1749 | 
            +
                #   }
         | 
| 1750 | 
            +
                #
         | 
| 1664 1751 | 
             
                # @example Request syntax with placeholder values
         | 
| 1665 1752 | 
             
                #
         | 
| 1666 1753 | 
             
                #   resp = client.create_key({
         | 
| 1667 1754 | 
             
                #     policy: "PolicyType",
         | 
| 1668 1755 | 
             
                #     description: "DescriptionType",
         | 
| 1669 | 
            -
                #     key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT
         | 
| 1670 | 
            -
                #     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
         | 
| 1671 | 
            -
                #     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
         | 
| 1756 | 
            +
                #     key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT, GENERATE_VERIFY_MAC
         | 
| 1757 | 
            +
                #     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
         | 
| 1758 | 
            +
                #     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
         | 
| 1672 1759 | 
             
                #     origin: "AWS_KMS", # accepts AWS_KMS, EXTERNAL, AWS_CLOUDHSM
         | 
| 1673 1760 | 
             
                #     custom_key_store_id: "CustomKeyStoreIdType",
         | 
| 1674 1761 | 
             
                #     bypass_policy_lockout_safety_check: false,
         | 
| @@ -1689,7 +1776,7 @@ module Aws::KMS | |
| 1689 1776 | 
             
                #   resp.key_metadata.creation_date #=> Time
         | 
| 1690 1777 | 
             
                #   resp.key_metadata.enabled #=> Boolean
         | 
| 1691 1778 | 
             
                #   resp.key_metadata.description #=> String
         | 
| 1692 | 
            -
                #   resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT"
         | 
| 1779 | 
            +
                #   resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
         | 
| 1693 1780 | 
             
                #   resp.key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
         | 
| 1694 1781 | 
             
                #   resp.key_metadata.deletion_date #=> Time
         | 
| 1695 1782 | 
             
                #   resp.key_metadata.valid_to #=> Time
         | 
| @@ -1698,8 +1785,8 @@ module Aws::KMS | |
| 1698 1785 | 
             
                #   resp.key_metadata.cloud_hsm_cluster_id #=> String
         | 
| 1699 1786 | 
             
                #   resp.key_metadata.expiration_model #=> String, one of "KEY_MATERIAL_EXPIRES", "KEY_MATERIAL_DOES_NOT_EXPIRE"
         | 
| 1700 1787 | 
             
                #   resp.key_metadata.key_manager #=> String, one of "AWS", "CUSTOMER"
         | 
| 1701 | 
            -
                #   resp.key_metadata.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 1702 | 
            -
                #   resp.key_metadata.key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 1788 | 
            +
                #   resp.key_metadata.customer_master_key_spec #=> String, one of "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"
         | 
| 1789 | 
            +
                #   resp.key_metadata.key_spec #=> String, one of "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"
         | 
| 1703 1790 | 
             
                #   resp.key_metadata.encryption_algorithms #=> Array
         | 
| 1704 1791 | 
             
                #   resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
         | 
| 1705 1792 | 
             
                #   resp.key_metadata.signing_algorithms #=> Array
         | 
| @@ -1712,6 +1799,8 @@ module Aws::KMS | |
| 1712 1799 | 
             
                #   resp.key_metadata.multi_region_configuration.replica_keys[0].arn #=> String
         | 
| 1713 1800 | 
             
                #   resp.key_metadata.multi_region_configuration.replica_keys[0].region #=> String
         | 
| 1714 1801 | 
             
                #   resp.key_metadata.pending_deletion_window_in_days #=> Integer
         | 
| 1802 | 
            +
                #   resp.key_metadata.mac_algorithms #=> Array
         | 
| 1803 | 
            +
                #   resp.key_metadata.mac_algorithms[0] #=> String, one of "HMAC_SHA_224", "HMAC_SHA_256", "HMAC_SHA_384", "HMAC_SHA_512"
         | 
| 1715 1804 | 
             
                #
         | 
| 1716 1805 | 
             
                # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKey AWS API Documentation
         | 
| 1717 1806 | 
             
                #
         | 
| @@ -1736,29 +1825,30 @@ module Aws::KMS | |
| 1736 1825 | 
             
                # * GenerateDataKeyPairWithoutPlaintext
         | 
| 1737 1826 | 
             
                #
         | 
| 1738 1827 | 
             
                # You can use this operation to decrypt ciphertext that was encrypted
         | 
| 1739 | 
            -
                # under a symmetric  | 
| 1740 | 
            -
                # asymmetric, you must specify the KMS key and | 
| 1741 | 
            -
                # that was used to encrypt the ciphertext. For | 
| 1742 | 
            -
                #  | 
| 1743 | 
            -
                #  | 
| 1828 | 
            +
                # under a symmetric encryption KMS key or an asymmetric encryption KMS
         | 
| 1829 | 
            +
                # key. When the KMS key is asymmetric, you must specify the KMS key and
         | 
| 1830 | 
            +
                # the encryption algorithm that was used to encrypt the ciphertext. For
         | 
| 1831 | 
            +
                # information about asymmetric KMS keys, see [Asymmetric KMS keys][1] in
         | 
| 1832 | 
            +
                # the *Key Management Service Developer Guide*.
         | 
| 1744 1833 | 
             
                #
         | 
| 1745 | 
            -
                # The Decrypt operation also decrypts ciphertext that was encrypted
         | 
| 1834 | 
            +
                # The `Decrypt` operation also decrypts ciphertext that was encrypted
         | 
| 1746 1835 | 
             
                # outside of KMS by the public key in an KMS asymmetric KMS key.
         | 
| 1747 | 
            -
                # However, it cannot decrypt ciphertext produced by other | 
| 1748 | 
            -
                # such as the [Amazon Web Services Encryption SDK][2] or | 
| 1749 | 
            -
                # client-side encryption][3]. These libraries return a | 
| 1750 | 
            -
                # that is incompatible with KMS.
         | 
| 1751 | 
            -
                #
         | 
| 1752 | 
            -
                # If the ciphertext was encrypted under a symmetric KMS key, | 
| 1753 | 
            -
                # parameter is optional. KMS can get this information from | 
| 1754 | 
            -
                # it adds to the symmetric ciphertext blob. This feature | 
| 1755 | 
            -
                # to your implementation by ensuring that authorized | 
| 1756 | 
            -
                # ciphertext decades after it was encrypted, even if | 
| 1757 | 
            -
                # of the key ID. However, specifying the KMS key is | 
| 1758 | 
            -
                # as a best practice. When you use the `KeyId` | 
| 1759 | 
            -
                # KMS key, KMS only uses the KMS key you specify. | 
| 1760 | 
            -
                # encrypted under a different KMS key, the | 
| 1761 | 
            -
                # This practice ensures that you use the KMS | 
| 1836 | 
            +
                # However, it cannot decrypt symmetric ciphertext produced by other
         | 
| 1837 | 
            +
                # libraries, such as the [Amazon Web Services Encryption SDK][2] or
         | 
| 1838 | 
            +
                # [Amazon S3 client-side encryption][3]. These libraries return a
         | 
| 1839 | 
            +
                # ciphertext format that is incompatible with KMS.
         | 
| 1840 | 
            +
                #
         | 
| 1841 | 
            +
                # If the ciphertext was encrypted under a symmetric encryption KMS key,
         | 
| 1842 | 
            +
                # the `KeyId` parameter is optional. KMS can get this information from
         | 
| 1843 | 
            +
                # metadata that it adds to the symmetric ciphertext blob. This feature
         | 
| 1844 | 
            +
                # adds durability to your implementation by ensuring that authorized
         | 
| 1845 | 
            +
                # users can decrypt ciphertext decades after it was encrypted, even if
         | 
| 1846 | 
            +
                # they've lost track of the key ID. However, specifying the KMS key is
         | 
| 1847 | 
            +
                # always recommended as a best practice. When you use the `KeyId`
         | 
| 1848 | 
            +
                # parameter to specify a KMS key, KMS only uses the KMS key you specify.
         | 
| 1849 | 
            +
                # If the ciphertext was encrypted under a different KMS key, the
         | 
| 1850 | 
            +
                # `Decrypt` operation fails. This practice ensures that you use the KMS
         | 
| 1851 | 
            +
                # key that you intend.
         | 
| 1762 1852 | 
             
                #
         | 
| 1763 1853 | 
             
                # Whenever possible, use key policies to give users permission to call
         | 
| 1764 1854 | 
             
                # the `Decrypt` operation on a particular KMS key, instead of using IAM
         | 
| @@ -1777,8 +1867,8 @@ module Aws::KMS | |
| 1777 1867 | 
             
                # Service Developer Guide*.
         | 
| 1778 1868 | 
             
                #
         | 
| 1779 1869 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 1780 | 
            -
                # key state. For details, see [Key  | 
| 1781 | 
            -
                #  | 
| 1870 | 
            +
                # key state. For details, see [Key states of KMS keys][7] in the *Key
         | 
| 1871 | 
            +
                # Management Service Developer Guide*.
         | 
| 1782 1872 | 
             
                #
         | 
| 1783 1873 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 1784 1874 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -1813,17 +1903,19 @@ module Aws::KMS | |
| 1813 1903 | 
             
                # @option params [Hash<String,String>] :encryption_context
         | 
| 1814 1904 | 
             
                #   Specifies the encryption context to use when decrypting the data. An
         | 
| 1815 1905 | 
             
                #   encryption context is valid only for [cryptographic operations][1]
         | 
| 1816 | 
            -
                #   with a symmetric KMS key. The standard asymmetric | 
| 1817 | 
            -
                #   algorithms that KMS uses do not support | 
| 1906 | 
            +
                #   with a symmetric encryption KMS key. The standard asymmetric
         | 
| 1907 | 
            +
                #   encryption algorithms and HMAC algorithms that KMS uses do not support
         | 
| 1908 | 
            +
                #   an encryption context.
         | 
| 1818 1909 | 
             
                #
         | 
| 1819 1910 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 1820 | 
            -
                #   that  | 
| 1911 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 1821 1912 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 1822 1913 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 1823 | 
            -
                #   encryption context is  | 
| 1824 | 
            -
                #    | 
| 1914 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 1915 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 1916 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 1825 1917 | 
             
                #
         | 
| 1826 | 
            -
                #   For more information, see [Encryption  | 
| 1918 | 
            +
                #   For more information, see [Encryption context][2] in the *Key
         | 
| 1827 1919 | 
             
                #   Management Service Developer Guide*.
         | 
| 1828 1920 | 
             
                #
         | 
| 1829 1921 | 
             
                #
         | 
| @@ -1845,14 +1937,18 @@ module Aws::KMS | |
| 1845 1937 | 
             
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
         | 
| 1846 1938 | 
             
                #
         | 
| 1847 1939 | 
             
                # @option params [String] :key_id
         | 
| 1848 | 
            -
                #   Specifies the KMS key that KMS uses to decrypt the ciphertext. | 
| 1849 | 
            -
                # | 
| 1940 | 
            +
                #   Specifies the KMS key that KMS uses to decrypt the ciphertext.
         | 
| 1941 | 
            +
                #
         | 
| 1942 | 
            +
                #   Enter a key ID of the KMS key that was used to encrypt the ciphertext.
         | 
| 1943 | 
            +
                #   If you identify a different KMS key, the `Decrypt` operation throws an
         | 
| 1944 | 
            +
                #   `IncorrectKeyException`.
         | 
| 1850 1945 | 
             
                #
         | 
| 1851 1946 | 
             
                #   This parameter is required only when the ciphertext was encrypted
         | 
| 1852 | 
            -
                #   under an asymmetric KMS key. If you used a symmetric  | 
| 1853 | 
            -
                #   get the KMS key from metadata that it adds to the | 
| 1854 | 
            -
                #   blob. However, it is always recommended as a best | 
| 1855 | 
            -
                #   practice ensures that you use the KMS key that you | 
| 1947 | 
            +
                #   under an asymmetric KMS key. If you used a symmetric encryption KMS
         | 
| 1948 | 
            +
                #   key, KMS can get the KMS key from metadata that it adds to the
         | 
| 1949 | 
            +
                #   symmetric ciphertext blob. However, it is always recommended as a best
         | 
| 1950 | 
            +
                #   practice. This practice ensures that you use the KMS key that you
         | 
| 1951 | 
            +
                #   intend.
         | 
| 1856 1952 | 
             
                #
         | 
| 1857 1953 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 1858 1954 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -1882,7 +1978,7 @@ module Aws::KMS | |
| 1882 1978 | 
             
                #   This parameter is required only when the ciphertext was encrypted
         | 
| 1883 1979 | 
             
                #   under an asymmetric KMS key. The default value, `SYMMETRIC_DEFAULT`,
         | 
| 1884 1980 | 
             
                #   represents the only supported algorithm that is valid for symmetric
         | 
| 1885 | 
            -
                #   KMS keys.
         | 
| 1981 | 
            +
                #   encryption KMS keys.
         | 
| 1886 1982 | 
             
                #
         | 
| 1887 1983 | 
             
                # @return [Types::DecryptResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
         | 
| 1888 1984 | 
             
                #
         | 
| @@ -1936,8 +2032,8 @@ module Aws::KMS | |
| 1936 2032 | 
             
                # Deletes the specified alias.
         | 
| 1937 2033 | 
             
                #
         | 
| 1938 2034 | 
             
                # <note markdown="1"> Adding, deleting, or updating an alias can allow or deny permission to
         | 
| 1939 | 
            -
                # the KMS key. For details, see [ | 
| 1940 | 
            -
                #  | 
| 2035 | 
            +
                # the KMS key. For details, see [ABAC in KMS][1] in the *Key Management
         | 
| 2036 | 
            +
                # Service Developer Guide*.
         | 
| 1941 2037 | 
             
                #
         | 
| 1942 2038 | 
             
                #  </note>
         | 
| 1943 2039 | 
             
                #
         | 
| @@ -2112,8 +2208,8 @@ module Aws::KMS | |
| 2112 2208 | 
             
                # reimport the same key material into the KMS key.
         | 
| 2113 2209 | 
             
                #
         | 
| 2114 2210 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 2115 | 
            -
                # key state. For details, see [Key  | 
| 2116 | 
            -
                #  | 
| 2211 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 2212 | 
            +
                # Management Service Developer Guide*.
         | 
| 2117 2213 | 
             
                #
         | 
| 2118 2214 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 2119 2215 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -2339,14 +2435,13 @@ module Aws::KMS | |
| 2339 2435 | 
             
                # This detailed information includes the key ARN, creation date (and
         | 
| 2340 2436 | 
             
                # deletion date, if applicable), the key state, and the origin and
         | 
| 2341 2437 | 
             
                # expiration date (if any) of the key material. It includes fields, like
         | 
| 2342 | 
            -
                # `KeySpec`, that help you distinguish  | 
| 2343 | 
            -
                #  | 
| 2344 | 
            -
                #  | 
| 2345 | 
            -
                #  | 
| 2346 | 
            -
                #  | 
| 2347 | 
            -
                #  | 
| 2348 | 
            -
                #  | 
| 2349 | 
            -
                # replica keys.
         | 
| 2438 | 
            +
                # `KeySpec`, that help you distinguish different types of KMS keys. It
         | 
| 2439 | 
            +
                # also displays the key usage (encryption, signing, or generating and
         | 
| 2440 | 
            +
                # verifying MACs) and the algorithms that the KMS key supports. For KMS
         | 
| 2441 | 
            +
                # keys in custom key stores, it includes information about the custom
         | 
| 2442 | 
            +
                # key store, such as the key store ID and the CloudHSM cluster ID. For
         | 
| 2443 | 
            +
                # multi-Region keys, it displays the primary key and all related replica
         | 
| 2444 | 
            +
                # keys.
         | 
| 2350 2445 | 
             
                #
         | 
| 2351 2446 | 
             
                # `DescribeKey` does not return the following information:
         | 
| 2352 2447 | 
             
                #
         | 
| @@ -2364,11 +2459,10 @@ module Aws::KMS | |
| 2364 2459 | 
             
                # * Key policies and grants on the KMS key. To get this information, use
         | 
| 2365 2460 | 
             
                #   GetKeyPolicy and ListGrants.
         | 
| 2366 2461 | 
             
                #
         | 
| 2367 | 
            -
                #  | 
| 2368 | 
            -
                #  | 
| 2369 | 
            -
                #  | 
| 2370 | 
            -
                #  | 
| 2371 | 
            -
                # `Arn` of the new KMS key in the response.
         | 
| 2462 | 
            +
                # In general, `DescribeKey` is a non-mutating operation. It returns data
         | 
| 2463 | 
            +
                # about KMS keys, but doesn't change them. However, Amazon Web Services
         | 
| 2464 | 
            +
                # services use `DescribeKey` to create [Amazon Web Services managed
         | 
| 2465 | 
            +
                # keys][2] from a *predefined Amazon Web Services alias* with no key ID.
         | 
| 2372 2466 | 
             
                #
         | 
| 2373 2467 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 2374 2468 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -2450,10 +2544,10 @@ module Aws::KMS | |
| 2450 2544 | 
             
                #
         | 
| 2451 2545 | 
             
                # @example Example: To get details about a KMS key
         | 
| 2452 2546 | 
             
                #
         | 
| 2453 | 
            -
                #   # The following example gets metadata  | 
| 2547 | 
            +
                #   # The following example gets metadata for a symmetric encryption KMS key.
         | 
| 2454 2548 | 
             
                #
         | 
| 2455 2549 | 
             
                #   resp = client.describe_key({
         | 
| 2456 | 
            -
                #     key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", #  | 
| 2550 | 
            +
                #     key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # An identifier for the KMS key. You can use the key ID, key ARN, alias name, alias ARN of the KMS key.
         | 
| 2457 2551 | 
             
                #   })
         | 
| 2458 2552 | 
             
                #
         | 
| 2459 2553 | 
             
                #   resp.to_h outputs the following:
         | 
| @@ -2478,6 +2572,121 @@ module Aws::KMS | |
| 2478 2572 | 
             
                #     }, # An object that contains information about the specified KMS key.
         | 
| 2479 2573 | 
             
                #   }
         | 
| 2480 2574 | 
             
                #
         | 
| 2575 | 
            +
                # @example Example: To get details about an RSA asymmetric KMS key
         | 
| 2576 | 
            +
                #
         | 
| 2577 | 
            +
                #   # The following example gets metadata for an asymmetric RSA KMS key used for signing and verification.
         | 
| 2578 | 
            +
                #
         | 
| 2579 | 
            +
                #   resp = client.describe_key({
         | 
| 2580 | 
            +
                #     key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # An identifier for the KMS key. You can use the key ID, key ARN, alias name, alias ARN of the KMS key.
         | 
| 2581 | 
            +
                #   })
         | 
| 2582 | 
            +
                #
         | 
| 2583 | 
            +
                #   resp.to_h outputs the following:
         | 
| 2584 | 
            +
                #   {
         | 
| 2585 | 
            +
                #     key_metadata: {
         | 
| 2586 | 
            +
                #       aws_account_id: "111122223333", 
         | 
| 2587 | 
            +
                #       arn: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", 
         | 
| 2588 | 
            +
                #       creation_date: Time.parse(1571767572.317), 
         | 
| 2589 | 
            +
                #       customer_master_key_spec: "RSA_2048", 
         | 
| 2590 | 
            +
                #       description: "", 
         | 
| 2591 | 
            +
                #       enabled: false, 
         | 
| 2592 | 
            +
                #       key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", 
         | 
| 2593 | 
            +
                #       key_manager: "CUSTOMER", 
         | 
| 2594 | 
            +
                #       key_spec: "RSA_2048", 
         | 
| 2595 | 
            +
                #       key_state: "Disabled", 
         | 
| 2596 | 
            +
                #       key_usage: "SIGN_VERIFY", 
         | 
| 2597 | 
            +
                #       multi_region: false, 
         | 
| 2598 | 
            +
                #       origin: "AWS_KMS", 
         | 
| 2599 | 
            +
                #       signing_algorithms: [
         | 
| 2600 | 
            +
                #         "RSASSA_PKCS1_V1_5_SHA_256", 
         | 
| 2601 | 
            +
                #         "RSASSA_PKCS1_V1_5_SHA_384", 
         | 
| 2602 | 
            +
                #         "RSASSA_PKCS1_V1_5_SHA_512", 
         | 
| 2603 | 
            +
                #         "RSASSA_PSS_SHA_256", 
         | 
| 2604 | 
            +
                #         "RSASSA_PSS_SHA_384", 
         | 
| 2605 | 
            +
                #         "RSASSA_PSS_SHA_512", 
         | 
| 2606 | 
            +
                #       ], 
         | 
| 2607 | 
            +
                #     }, # An object that contains information about the specified KMS key.
         | 
| 2608 | 
            +
                #   }
         | 
| 2609 | 
            +
                #
         | 
| 2610 | 
            +
                # @example Example: To get details about a multi-Region key
         | 
| 2611 | 
            +
                #
         | 
| 2612 | 
            +
                #   # The following example gets metadata for a multi-Region replica key. This multi-Region key is a symmetric encryption key.
         | 
| 2613 | 
            +
                #   # DescribeKey returns information about the primary key and all of its replicas.
         | 
| 2614 | 
            +
                #
         | 
| 2615 | 
            +
                #   resp = client.describe_key({
         | 
| 2616 | 
            +
                #     key_id: "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", # An identifier for the KMS key. You can use the key ID, key ARN, alias name, alias ARN of the KMS key.
         | 
| 2617 | 
            +
                #   })
         | 
| 2618 | 
            +
                #
         | 
| 2619 | 
            +
                #   resp.to_h outputs the following:
         | 
| 2620 | 
            +
                #   {
         | 
| 2621 | 
            +
                #     key_metadata: {
         | 
| 2622 | 
            +
                #       aws_account_id: "111122223333", 
         | 
| 2623 | 
            +
                #       arn: "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", 
         | 
| 2624 | 
            +
                #       creation_date: Time.parse(1586329200.918), 
         | 
| 2625 | 
            +
                #       customer_master_key_spec: "SYMMETRIC_DEFAULT", 
         | 
| 2626 | 
            +
                #       description: "", 
         | 
| 2627 | 
            +
                #       enabled: true, 
         | 
| 2628 | 
            +
                #       encryption_algorithms: [
         | 
| 2629 | 
            +
                #         "SYMMETRIC_DEFAULT", 
         | 
| 2630 | 
            +
                #       ], 
         | 
| 2631 | 
            +
                #       key_id: "mrk-1234abcd12ab34cd56ef1234567890ab", 
         | 
| 2632 | 
            +
                #       key_manager: "CUSTOMER", 
         | 
| 2633 | 
            +
                #       key_state: "Enabled", 
         | 
| 2634 | 
            +
                #       key_usage: "ENCRYPT_DECRYPT", 
         | 
| 2635 | 
            +
                #       multi_region: true, 
         | 
| 2636 | 
            +
                #       multi_region_configuration: {
         | 
| 2637 | 
            +
                #         multi_region_key_type: "PRIMARY", 
         | 
| 2638 | 
            +
                #         primary_key: {
         | 
| 2639 | 
            +
                #           arn: "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", 
         | 
| 2640 | 
            +
                #           region: "us-west-2", 
         | 
| 2641 | 
            +
                #         }, 
         | 
| 2642 | 
            +
                #         replica_keys: [
         | 
| 2643 | 
            +
                #           {
         | 
| 2644 | 
            +
                #             arn: "arn:aws:kms:eu-west-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", 
         | 
| 2645 | 
            +
                #             region: "eu-west-1", 
         | 
| 2646 | 
            +
                #           }, 
         | 
| 2647 | 
            +
                #           {
         | 
| 2648 | 
            +
                #             arn: "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", 
         | 
| 2649 | 
            +
                #             region: "ap-northeast-1", 
         | 
| 2650 | 
            +
                #           }, 
         | 
| 2651 | 
            +
                #           {
         | 
| 2652 | 
            +
                #             arn: "arn:aws:kms:sa-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", 
         | 
| 2653 | 
            +
                #             region: "sa-east-1", 
         | 
| 2654 | 
            +
                #           }, 
         | 
| 2655 | 
            +
                #         ], 
         | 
| 2656 | 
            +
                #       }, 
         | 
| 2657 | 
            +
                #       origin: "AWS_KMS", 
         | 
| 2658 | 
            +
                #     }, # An object that contains information about the specified KMS key.
         | 
| 2659 | 
            +
                #   }
         | 
| 2660 | 
            +
                #
         | 
| 2661 | 
            +
                # @example Example: To get details about an HMAC KMS key
         | 
| 2662 | 
            +
                #
         | 
| 2663 | 
            +
                #   # The following example gets the metadata of an HMAC KMS key. 
         | 
| 2664 | 
            +
                #
         | 
| 2665 | 
            +
                #   resp = client.describe_key({
         | 
| 2666 | 
            +
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # An identifier for the KMS key. You can use the key ID, key ARN, alias name, alias ARN of the KMS key.
         | 
| 2667 | 
            +
                #   })
         | 
| 2668 | 
            +
                #
         | 
| 2669 | 
            +
                #   resp.to_h outputs the following:
         | 
| 2670 | 
            +
                #   {
         | 
| 2671 | 
            +
                #     key_metadata: {
         | 
| 2672 | 
            +
                #       aws_account_id: "123456789012", 
         | 
| 2673 | 
            +
                #       arn: "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", 
         | 
| 2674 | 
            +
                #       creation_date: Time.parse(1566160362.664), 
         | 
| 2675 | 
            +
                #       customer_master_key_spec: "HMAC_256", 
         | 
| 2676 | 
            +
                #       description: "Development test key", 
         | 
| 2677 | 
            +
                #       enabled: true, 
         | 
| 2678 | 
            +
                #       key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", 
         | 
| 2679 | 
            +
                #       key_manager: "CUSTOMER", 
         | 
| 2680 | 
            +
                #       key_state: "Enabled", 
         | 
| 2681 | 
            +
                #       key_usage: "GENERATE_VERIFY_MAC", 
         | 
| 2682 | 
            +
                #       mac_algorithms: [
         | 
| 2683 | 
            +
                #         "HMAC_SHA_256", 
         | 
| 2684 | 
            +
                #       ], 
         | 
| 2685 | 
            +
                #       multi_region: false, 
         | 
| 2686 | 
            +
                #       origin: "AWS_KMS", 
         | 
| 2687 | 
            +
                #     }, # An object that contains information about the specified KMS key.
         | 
| 2688 | 
            +
                #   }
         | 
| 2689 | 
            +
                #
         | 
| 2481 2690 | 
             
                # @example Request syntax with placeholder values
         | 
| 2482 2691 | 
             
                #
         | 
| 2483 2692 | 
             
                #   resp = client.describe_key({
         | 
| @@ -2493,7 +2702,7 @@ module Aws::KMS | |
| 2493 2702 | 
             
                #   resp.key_metadata.creation_date #=> Time
         | 
| 2494 2703 | 
             
                #   resp.key_metadata.enabled #=> Boolean
         | 
| 2495 2704 | 
             
                #   resp.key_metadata.description #=> String
         | 
| 2496 | 
            -
                #   resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT"
         | 
| 2705 | 
            +
                #   resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
         | 
| 2497 2706 | 
             
                #   resp.key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
         | 
| 2498 2707 | 
             
                #   resp.key_metadata.deletion_date #=> Time
         | 
| 2499 2708 | 
             
                #   resp.key_metadata.valid_to #=> Time
         | 
| @@ -2502,8 +2711,8 @@ module Aws::KMS | |
| 2502 2711 | 
             
                #   resp.key_metadata.cloud_hsm_cluster_id #=> String
         | 
| 2503 2712 | 
             
                #   resp.key_metadata.expiration_model #=> String, one of "KEY_MATERIAL_EXPIRES", "KEY_MATERIAL_DOES_NOT_EXPIRE"
         | 
| 2504 2713 | 
             
                #   resp.key_metadata.key_manager #=> String, one of "AWS", "CUSTOMER"
         | 
| 2505 | 
            -
                #   resp.key_metadata.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 2506 | 
            -
                #   resp.key_metadata.key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 2714 | 
            +
                #   resp.key_metadata.customer_master_key_spec #=> String, one of "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"
         | 
| 2715 | 
            +
                #   resp.key_metadata.key_spec #=> String, one of "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"
         | 
| 2507 2716 | 
             
                #   resp.key_metadata.encryption_algorithms #=> Array
         | 
| 2508 2717 | 
             
                #   resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
         | 
| 2509 2718 | 
             
                #   resp.key_metadata.signing_algorithms #=> Array
         | 
| @@ -2516,6 +2725,8 @@ module Aws::KMS | |
| 2516 2725 | 
             
                #   resp.key_metadata.multi_region_configuration.replica_keys[0].arn #=> String
         | 
| 2517 2726 | 
             
                #   resp.key_metadata.multi_region_configuration.replica_keys[0].region #=> String
         | 
| 2518 2727 | 
             
                #   resp.key_metadata.pending_deletion_window_in_days #=> Integer
         | 
| 2728 | 
            +
                #   resp.key_metadata.mac_algorithms #=> Array
         | 
| 2729 | 
            +
                #   resp.key_metadata.mac_algorithms[0] #=> String, one of "HMAC_SHA_224", "HMAC_SHA_256", "HMAC_SHA_384", "HMAC_SHA_512"
         | 
| 2519 2730 | 
             
                #
         | 
| 2520 2731 | 
             
                # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKey AWS API Documentation
         | 
| 2521 2732 | 
             
                #
         | 
| @@ -2530,12 +2741,12 @@ module Aws::KMS | |
| 2530 2741 | 
             
                # prevents use of the KMS key for [cryptographic operations][1].
         | 
| 2531 2742 | 
             
                #
         | 
| 2532 2743 | 
             
                # For more information about how key state affects the use of a KMS key,
         | 
| 2533 | 
            -
                # see [Key  | 
| 2534 | 
            -
                #  | 
| 2744 | 
            +
                # see [Key states of KMS keys][2] in the <i> <i>Key Management Service
         | 
| 2745 | 
            +
                # Developer Guide</i> </i>.
         | 
| 2535 2746 | 
             
                #
         | 
| 2536 2747 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 2537 | 
            -
                # key state. For details, see [Key  | 
| 2538 | 
            -
                #  | 
| 2748 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 2749 | 
            +
                # Management Service Developer Guide*.
         | 
| 2539 2750 | 
             
                #
         | 
| 2540 2751 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 2541 2752 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -2592,21 +2803,22 @@ module Aws::KMS | |
| 2592 2803 | 
             
                end
         | 
| 2593 2804 |  | 
| 2594 2805 | 
             
                # Disables [automatic rotation of the key material][1] for the specified
         | 
| 2595 | 
            -
                # symmetric KMS key.
         | 
| 2806 | 
            +
                # symmetric encryption KMS key.
         | 
| 2596 2807 | 
             
                #
         | 
| 2597 | 
            -
                # You cannot enable automatic rotation of [asymmetric KMS keys][2], | 
| 2598 | 
            -
                # keys with [imported key material][ | 
| 2599 | 
            -
                # store][ | 
| 2600 | 
            -
                # [multi-Region keys][ | 
| 2808 | 
            +
                # You cannot enable automatic rotation of [asymmetric KMS keys][2],
         | 
| 2809 | 
            +
                # [HMAC KMS keys][3], KMS keys with [imported key material][4], or KMS
         | 
| 2810 | 
            +
                # keys in a [custom key store][5]. To enable or disable automatic
         | 
| 2811 | 
            +
                # rotation of a set of related [multi-Region keys][6], set the property
         | 
| 2812 | 
            +
                # on the primary key.
         | 
| 2601 2813 | 
             
                #
         | 
| 2602 2814 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 2603 | 
            -
                # key state. For details, see [Key  | 
| 2604 | 
            -
                #  | 
| 2815 | 
            +
                # key state. For details, see [Key states of KMS keys][7] in the *Key
         | 
| 2816 | 
            +
                # Management Service Developer Guide*.
         | 
| 2605 2817 | 
             
                #
         | 
| 2606 2818 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 2607 2819 | 
             
                # key in a different Amazon Web Services account.
         | 
| 2608 2820 | 
             
                #
         | 
| 2609 | 
            -
                # **Required permissions**\: [kms:DisableKeyRotation][ | 
| 2821 | 
            +
                # **Required permissions**\: [kms:DisableKeyRotation][8] (key policy)
         | 
| 2610 2822 | 
             
                #
         | 
| 2611 2823 | 
             
                # **Related operations:**
         | 
| 2612 2824 | 
             
                #
         | 
| @@ -2617,17 +2829,19 @@ module Aws::KMS | |
| 2617 2829 | 
             
                #
         | 
| 2618 2830 | 
             
                #
         | 
| 2619 2831 | 
             
                # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
         | 
| 2620 | 
            -
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2621 | 
            -
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2622 | 
            -
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2623 | 
            -
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2624 | 
            -
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2625 | 
            -
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2832 | 
            +
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
         | 
| 2833 | 
            +
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 2834 | 
            +
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
         | 
| 2835 | 
            +
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
         | 
| 2836 | 
            +
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
         | 
| 2837 | 
            +
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
         | 
| 2838 | 
            +
                # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 2626 2839 | 
             
                #
         | 
| 2627 2840 | 
             
                # @option params [required, String] :key_id
         | 
| 2628 | 
            -
                #   Identifies a symmetric KMS key. You cannot enable or | 
| 2629 | 
            -
                #   rotation of [asymmetric KMS keys][1],  | 
| 2630 | 
            -
                #    | 
| 2841 | 
            +
                #   Identifies a symmetric encryption KMS key. You cannot enable or
         | 
| 2842 | 
            +
                #   disable automatic rotation of [asymmetric KMS keys][1], [HMAC KMS
         | 
| 2843 | 
            +
                #   keys][2], KMS keys with [imported key material][3], or KMS keys in a
         | 
| 2844 | 
            +
                #   [custom key store][4].
         | 
| 2631 2845 | 
             
                #
         | 
| 2632 2846 | 
             
                #   Specify the key ID or key ARN of the KMS key.
         | 
| 2633 2847 | 
             
                #
         | 
| @@ -2644,8 +2858,9 @@ module Aws::KMS | |
| 2644 2858 | 
             
                #
         | 
| 2645 2859 | 
             
                #
         | 
| 2646 2860 | 
             
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks
         | 
| 2647 | 
            -
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2648 | 
            -
                #   [3]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2861 | 
            +
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 2862 | 
            +
                #   [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
         | 
| 2863 | 
            +
                #   [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
         | 
| 2649 2864 | 
             
                #
         | 
| 2650 2865 | 
             
                # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
         | 
| 2651 2866 | 
             
                #
         | 
| @@ -2763,8 +2978,8 @@ module Aws::KMS | |
| 2763 2978 | 
             
                # KMS key for [cryptographic operations][1].
         | 
| 2764 2979 | 
             
                #
         | 
| 2765 2980 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 2766 | 
            -
                # key state. For details, see [Key  | 
| 2767 | 
            -
                #  | 
| 2981 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 2982 | 
            +
                # Management Service Developer Guide*.
         | 
| 2768 2983 | 
             
                #
         | 
| 2769 2984 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 2770 2985 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -2821,21 +3036,22 @@ module Aws::KMS | |
| 2821 3036 | 
             
                end
         | 
| 2822 3037 |  | 
| 2823 3038 | 
             
                # Enables [automatic rotation of the key material][1] for the specified
         | 
| 2824 | 
            -
                # symmetric KMS key.
         | 
| 3039 | 
            +
                # symmetric encryption KMS key.
         | 
| 2825 3040 | 
             
                #
         | 
| 2826 | 
            -
                # You cannot enable automatic rotation of [asymmetric KMS keys][2], | 
| 2827 | 
            -
                # keys with [imported key material][ | 
| 2828 | 
            -
                # store][ | 
| 2829 | 
            -
                # [multi-Region keys][ | 
| 3041 | 
            +
                # You cannot enable automatic rotation of [asymmetric KMS keys][2],
         | 
| 3042 | 
            +
                # [HMAC KMS keys][3], KMS keys with [imported key material][4], or KMS
         | 
| 3043 | 
            +
                # keys in a [custom key store][5]. To enable or disable automatic
         | 
| 3044 | 
            +
                # rotation of a set of related [multi-Region keys][6], set the property
         | 
| 3045 | 
            +
                # on the primary key.
         | 
| 2830 3046 | 
             
                #
         | 
| 2831 3047 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 2832 | 
            -
                # key state. For details, see [Key  | 
| 2833 | 
            -
                #  | 
| 3048 | 
            +
                # key state. For details, see [Key states of KMS keys][7] in the *Key
         | 
| 3049 | 
            +
                # Management Service Developer Guide*.
         | 
| 2834 3050 | 
             
                #
         | 
| 2835 3051 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 2836 3052 | 
             
                # key in a different Amazon Web Services account.
         | 
| 2837 3053 | 
             
                #
         | 
| 2838 | 
            -
                # **Required permissions**\: [kms:EnableKeyRotation][ | 
| 3054 | 
            +
                # **Required permissions**\: [kms:EnableKeyRotation][8] (key policy)
         | 
| 2839 3055 | 
             
                #
         | 
| 2840 3056 | 
             
                # **Related operations:**
         | 
| 2841 3057 | 
             
                #
         | 
| @@ -2846,19 +3062,20 @@ module Aws::KMS | |
| 2846 3062 | 
             
                #
         | 
| 2847 3063 | 
             
                #
         | 
| 2848 3064 | 
             
                # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
         | 
| 2849 | 
            -
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2850 | 
            -
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2851 | 
            -
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2852 | 
            -
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2853 | 
            -
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2854 | 
            -
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 3065 | 
            +
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
         | 
| 3066 | 
            +
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 3067 | 
            +
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
         | 
| 3068 | 
            +
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
         | 
| 3069 | 
            +
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
         | 
| 3070 | 
            +
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
         | 
| 3071 | 
            +
                # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 2855 3072 | 
             
                #
         | 
| 2856 3073 | 
             
                # @option params [required, String] :key_id
         | 
| 2857 | 
            -
                #   Identifies a symmetric KMS key. You cannot enable automatic | 
| 2858 | 
            -
                #   of [asymmetric KMS keys][1], KMS keys | 
| 2859 | 
            -
                #   or KMS keys in a [custom key | 
| 2860 | 
            -
                #   rotation of a set of related | 
| 2861 | 
            -
                #   on the primary key.
         | 
| 3074 | 
            +
                #   Identifies a symmetric encryption KMS key. You cannot enable automatic
         | 
| 3075 | 
            +
                #   rotation of [asymmetric KMS keys][1], [HMAC KMS keys][2], KMS keys
         | 
| 3076 | 
            +
                #   with [imported key material][3], or KMS keys in a [custom key
         | 
| 3077 | 
            +
                #   store][4]. To enable or disable automatic rotation of a set of related
         | 
| 3078 | 
            +
                #   [multi-Region keys][5], set the property on the primary key.
         | 
| 2862 3079 | 
             
                #
         | 
| 2863 3080 | 
             
                #   Specify the key ID or key ARN of the KMS key.
         | 
| 2864 3081 | 
             
                #
         | 
| @@ -2874,10 +3091,11 @@ module Aws::KMS | |
| 2874 3091 | 
             
                #
         | 
| 2875 3092 | 
             
                #
         | 
| 2876 3093 | 
             
                #
         | 
| 2877 | 
            -
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2878 | 
            -
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2879 | 
            -
                #   [3]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 2880 | 
            -
                #   [4]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 3094 | 
            +
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
         | 
| 3095 | 
            +
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 3096 | 
            +
                #   [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
         | 
| 3097 | 
            +
                #   [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
         | 
| 3098 | 
            +
                #   [5]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
         | 
| 2881 3099 | 
             
                #
         | 
| 2882 3100 | 
             
                # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
         | 
| 2883 3101 | 
             
                #
         | 
| @@ -2905,36 +3123,22 @@ module Aws::KMS | |
| 2905 3123 | 
             
                  req.send_request(options)
         | 
| 2906 3124 | 
             
                end
         | 
| 2907 3125 |  | 
| 2908 | 
            -
                # Encrypts plaintext  | 
| 2909 | 
            -
                #  | 
| 2910 | 
            -
                #
         | 
| 2911 | 
            -
                # | 
| 2912 | 
            -
                # | 
| 2913 | 
            -
                #
         | 
| 2914 | 
            -
                #  | 
| 2915 | 
            -
                # | 
| 2916 | 
            -
                # | 
| 2917 | 
            -
                # | 
| 2918 | 
            -
                # | 
| 2919 | 
            -
                # | 
| 2920 | 
            -
                # | 
| 2921 | 
            -
                # | 
| 2922 | 
            -
                #
         | 
| 2923 | 
            -
                #  | 
| 2924 | 
            -
                # The GenerateDataKey and GenerateDataKeyPair operations return a
         | 
| 2925 | 
            -
                # plaintext data key and an encrypted copy of that data key.
         | 
| 2926 | 
            -
                #
         | 
| 2927 | 
            -
                # When you encrypt data, you must specify a symmetric or asymmetric KMS
         | 
| 2928 | 
            -
                # key to use in the encryption operation. The KMS key must have a
         | 
| 2929 | 
            -
                # `KeyUsage` value of `ENCRYPT_DECRYPT.` To find the `KeyUsage` of a KMS
         | 
| 2930 | 
            -
                # key, use the DescribeKey operation.
         | 
| 2931 | 
            -
                #
         | 
| 2932 | 
            -
                # If you use a symmetric KMS key, you can use an encryption context to
         | 
| 2933 | 
            -
                # add additional security to your encryption operation. If you specify
         | 
| 2934 | 
            -
                # an `EncryptionContext` when encrypting data, you must specify the same
         | 
| 2935 | 
            -
                # encryption context (a case-sensitive exact match) when decrypting the
         | 
| 2936 | 
            -
                # data. Otherwise, the request to decrypt fails with an
         | 
| 2937 | 
            -
                # `InvalidCiphertextException`. For more information, see [Encryption
         | 
| 3126 | 
            +
                # Encrypts plaintext of up to 4,096 bytes using a KMS key. You can use a
         | 
| 3127 | 
            +
                # symmetric or asymmetric KMS key with a `KeyUsage` of
         | 
| 3128 | 
            +
                # `ENCRYPT_DECRYPT`.
         | 
| 3129 | 
            +
                #
         | 
| 3130 | 
            +
                # You can use this operation to encrypt small amounts of arbitrary data,
         | 
| 3131 | 
            +
                # such as a personal identifier or database password, or other sensitive
         | 
| 3132 | 
            +
                # information. You don't need to use the `Encrypt` operation to encrypt
         | 
| 3133 | 
            +
                # a data key. The GenerateDataKey and GenerateDataKeyPair operations
         | 
| 3134 | 
            +
                # return a plaintext data key and an encrypted copy of that data key.
         | 
| 3135 | 
            +
                #
         | 
| 3136 | 
            +
                # If you use a symmetric encryption KMS key, you can use an encryption
         | 
| 3137 | 
            +
                # context to add additional security to your encryption operation. If
         | 
| 3138 | 
            +
                # you specify an `EncryptionContext` when encrypting data, you must
         | 
| 3139 | 
            +
                # specify the same encryption context (a case-sensitive exact match)
         | 
| 3140 | 
            +
                # when decrypting the data. Otherwise, the request to decrypt fails with
         | 
| 3141 | 
            +
                # an `InvalidCiphertextException`. For more information, see [Encryption
         | 
| 2938 3142 | 
             
                # Context][1] in the *Key Management Service Developer Guide*.
         | 
| 2939 3143 | 
             
                #
         | 
| 2940 3144 | 
             
                # If you specify an asymmetric KMS key, you must also specify the
         | 
| @@ -2949,15 +3153,15 @@ module Aws::KMS | |
| 2949 3153 | 
             
                # fails.
         | 
| 2950 3154 | 
             
                #
         | 
| 2951 3155 | 
             
                #  You are not required to supply the key ID and encryption algorithm
         | 
| 2952 | 
            -
                # when you decrypt with symmetric KMS keys because KMS stores | 
| 2953 | 
            -
                # information in the ciphertext blob. KMS cannot store metadata in
         | 
| 3156 | 
            +
                # when you decrypt with symmetric encryption KMS keys because KMS stores
         | 
| 3157 | 
            +
                # this information in the ciphertext blob. KMS cannot store metadata in
         | 
| 2954 3158 | 
             
                # ciphertext generated with asymmetric keys. The standard format for
         | 
| 2955 3159 | 
             
                # asymmetric key ciphertext does not include configurable fields.
         | 
| 2956 3160 | 
             
                #
         | 
| 2957 3161 | 
             
                # The maximum size of the data that you can encrypt varies with the type
         | 
| 2958 3162 | 
             
                # of KMS key and the encryption algorithm that you choose.
         | 
| 2959 3163 | 
             
                #
         | 
| 2960 | 
            -
                # * Symmetric KMS keys
         | 
| 3164 | 
            +
                # * Symmetric encryption KMS keys
         | 
| 2961 3165 | 
             
                #
         | 
| 2962 3166 | 
             
                #   * `SYMMETRIC_DEFAULT`\: 4096 bytes
         | 
| 2963 3167 | 
             
                #
         | 
| @@ -2982,8 +3186,8 @@ module Aws::KMS | |
| 2982 3186 | 
             
                #   * `RSAES_OAEP_SHA_256`\: 446 bytes
         | 
| 2983 3187 | 
             
                #
         | 
| 2984 3188 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 2985 | 
            -
                # key state. For details, see [Key  | 
| 2986 | 
            -
                #  | 
| 3189 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 3190 | 
            +
                # Management Service Developer Guide*.
         | 
| 2987 3191 | 
             
                #
         | 
| 2988 3192 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 2989 3193 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -3006,7 +3210,9 @@ module Aws::KMS | |
| 3006 3210 | 
             
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 3007 3211 | 
             
                #
         | 
| 3008 3212 | 
             
                # @option params [required, String] :key_id
         | 
| 3009 | 
            -
                #   Identifies the KMS key to use in the encryption operation.
         | 
| 3213 | 
            +
                #   Identifies the KMS key to use in the encryption operation. The KMS key
         | 
| 3214 | 
            +
                #   must have a `KeyUsage` of `ENCRYPT_DECRYPT`. To find the `KeyUsage` of
         | 
| 3215 | 
            +
                #   a KMS key, use the DescribeKey operation.
         | 
| 3010 3216 | 
             
                #
         | 
| 3011 3217 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 3012 3218 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -3033,18 +3239,19 @@ module Aws::KMS | |
| 3033 3239 | 
             
                # @option params [Hash<String,String>] :encryption_context
         | 
| 3034 3240 | 
             
                #   Specifies the encryption context that will be used to encrypt the
         | 
| 3035 3241 | 
             
                #   data. An encryption context is valid only for [cryptographic
         | 
| 3036 | 
            -
                #   operations][1] with a symmetric KMS key. The standard | 
| 3037 | 
            -
                #   encryption algorithms that KMS uses do | 
| 3038 | 
            -
                #   context.
         | 
| 3242 | 
            +
                #   operations][1] with a symmetric encryption KMS key. The standard
         | 
| 3243 | 
            +
                #   asymmetric encryption algorithms and HMAC algorithms that KMS uses do
         | 
| 3244 | 
            +
                #   not support an encryption context.
         | 
| 3039 3245 | 
             
                #
         | 
| 3040 3246 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 3041 | 
            -
                #   that  | 
| 3247 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 3042 3248 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 3043 3249 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 3044 | 
            -
                #   encryption context is  | 
| 3045 | 
            -
                #    | 
| 3250 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 3251 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 3252 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 3046 3253 | 
             
                #
         | 
| 3047 | 
            -
                #   For more information, see [Encryption  | 
| 3254 | 
            +
                #   For more information, see [Encryption context][2] in the *Key
         | 
| 3048 3255 | 
             
                #   Management Service Developer Guide*.
         | 
| 3049 3256 | 
             
                #
         | 
| 3050 3257 | 
             
                #
         | 
| @@ -3071,9 +3278,9 @@ module Aws::KMS | |
| 3071 3278 | 
             
                #   that you specify.
         | 
| 3072 3279 | 
             
                #
         | 
| 3073 3280 | 
             
                #   This parameter is required only for asymmetric KMS keys. The default
         | 
| 3074 | 
            -
                #   value, `SYMMETRIC_DEFAULT`, is the algorithm used for symmetric | 
| 3075 | 
            -
                #   keys. If you are using an asymmetric KMS key, we | 
| 3076 | 
            -
                #   RSAES\_OAEP\_SHA\_256.
         | 
| 3281 | 
            +
                #   value, `SYMMETRIC_DEFAULT`, is the algorithm used for symmetric
         | 
| 3282 | 
            +
                #   encryption KMS keys. If you are using an asymmetric KMS key, we
         | 
| 3283 | 
            +
                #   recommend RSAES\_OAEP\_SHA\_256.
         | 
| 3077 3284 | 
             
                #
         | 
| 3078 3285 | 
             
                # @return [Types::EncryptResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
         | 
| 3079 3286 | 
             
                #
         | 
| @@ -3124,19 +3331,17 @@ module Aws::KMS | |
| 3124 3331 | 
             
                  req.send_request(options)
         | 
| 3125 3332 | 
             
                end
         | 
| 3126 3333 |  | 
| 3127 | 
            -
                #  | 
| 3334 | 
            +
                # Returns a unique symmetric data key for use outside of KMS. This
         | 
| 3128 3335 | 
             
                # operation returns a plaintext copy of the data key and a copy that is
         | 
| 3129 | 
            -
                # encrypted under a KMS key that you specify.  | 
| 3130 | 
            -
                #  | 
| 3131 | 
            -
                # key  | 
| 3132 | 
            -
                #
         | 
| 3133 | 
            -
                #  | 
| 3134 | 
            -
                # | 
| 3135 | 
            -
                # key | 
| 3136 | 
            -
                #
         | 
| 3137 | 
            -
                #  | 
| 3138 | 
            -
                # used to encrypt the data key. You cannot use an asymmetric KMS key to
         | 
| 3139 | 
            -
                # generate data keys. To get the type of your KMS key, use the
         | 
| 3336 | 
            +
                # encrypted under a symmetric encryption KMS key that you specify. The
         | 
| 3337 | 
            +
                # bytes in the plaintext key are random; they are not related to the
         | 
| 3338 | 
            +
                # caller or the KMS key. You can use the plaintext key to encrypt your
         | 
| 3339 | 
            +
                # data outside of KMS and store the encrypted data key with the
         | 
| 3340 | 
            +
                # encrypted data.
         | 
| 3341 | 
            +
                #
         | 
| 3342 | 
            +
                # To generate a data key, specify the symmetric encryption KMS key that
         | 
| 3343 | 
            +
                # will be used to encrypt the data key. You cannot use an asymmetric KMS
         | 
| 3344 | 
            +
                # key to encrypt data keys. To get the type of your KMS key, use the
         | 
| 3140 3345 | 
             
                # DescribeKey operation. You must also specify the length of the data
         | 
| 3141 3346 | 
             
                # key. Use either the `KeySpec` or `NumberOfBytes` parameters (but not
         | 
| 3142 3347 | 
             
                # both). For 128-bit and 256-bit data keys, use the `KeySpec` parameter.
         | 
| @@ -3147,7 +3352,7 @@ module Aws::KMS | |
| 3147 3352 | 
             
                # GenerateDataKeyPairWithoutPlaintext operation. To get a
         | 
| 3148 3353 | 
             
                # cryptographically secure random byte string, use GenerateRandom.
         | 
| 3149 3354 | 
             
                #
         | 
| 3150 | 
            -
                # You can use  | 
| 3355 | 
            +
                # You can use an optional encryption context to add additional security
         | 
| 3151 3356 | 
             
                # to the encryption operation. If you specify an `EncryptionContext`,
         | 
| 3152 3357 | 
             
                # you must specify the same encryption context (a case-sensitive exact
         | 
| 3153 3358 | 
             
                # match) when decrypting the encrypted data key. Otherwise, the request
         | 
| @@ -3162,8 +3367,8 @@ module Aws::KMS | |
| 3162 3367 | 
             
                # Service Developer Guide*.
         | 
| 3163 3368 | 
             
                #
         | 
| 3164 3369 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 3165 | 
            -
                # key state. For details, see [Key  | 
| 3166 | 
            -
                #  | 
| 3370 | 
            +
                # key state. For details, see [Key states of KMS keys][4] in the *Key
         | 
| 3371 | 
            +
                # Management Service Developer Guide*.
         | 
| 3167 3372 | 
             
                #
         | 
| 3168 3373 | 
             
                # **How to use your data key**
         | 
| 3169 3374 | 
             
                #
         | 
| @@ -3222,7 +3427,10 @@ module Aws::KMS | |
| 3222 3427 | 
             
                # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 3223 3428 | 
             
                #
         | 
| 3224 3429 | 
             
                # @option params [required, String] :key_id
         | 
| 3225 | 
            -
                #    | 
| 3430 | 
            +
                #   Specifies the symmetric encryption KMS key that encrypts the data key.
         | 
| 3431 | 
            +
                #   You cannot specify an asymmetric KMS key or a KMS key in a custom key
         | 
| 3432 | 
            +
                #   store. To get the type and origin of your KMS key, use the DescribeKey
         | 
| 3433 | 
            +
                #   operation.
         | 
| 3226 3434 | 
             
                #
         | 
| 3227 3435 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 3228 3436 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -3248,13 +3456,14 @@ module Aws::KMS | |
| 3248 3456 | 
             
                #   data key.
         | 
| 3249 3457 | 
             
                #
         | 
| 3250 3458 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 3251 | 
            -
                #   that  | 
| 3459 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 3252 3460 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 3253 3461 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 3254 | 
            -
                #   encryption context is  | 
| 3255 | 
            -
                #    | 
| 3462 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 3463 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 3464 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 3256 3465 | 
             
                #
         | 
| 3257 | 
            -
                #   For more information, see [Encryption  | 
| 3466 | 
            +
                #   For more information, see [Encryption context][1] in the *Key
         | 
| 3258 3467 | 
             
                #   Management Service Developer Guide*.
         | 
| 3259 3468 | 
             
                #
         | 
| 3260 3469 | 
             
                #
         | 
| @@ -3342,11 +3551,13 @@ module Aws::KMS | |
| 3342 3551 | 
             
                  req.send_request(options)
         | 
| 3343 3552 | 
             
                end
         | 
| 3344 3553 |  | 
| 3345 | 
            -
                #  | 
| 3554 | 
            +
                # Returns a unique asymmetric data key pair for use outside of KMS. This
         | 
| 3346 3555 | 
             
                # operation returns a plaintext public key, a plaintext private key, and
         | 
| 3347 | 
            -
                # a copy of the private key that is encrypted under the symmetric | 
| 3348 | 
            -
                # key you specify. You can use the data key pair to | 
| 3349 | 
            -
                # cryptography and implement digital signatures | 
| 3556 | 
            +
                # a copy of the private key that is encrypted under the symmetric
         | 
| 3557 | 
            +
                # encryption KMS key you specify. You can use the data key pair to
         | 
| 3558 | 
            +
                # perform asymmetric cryptography and implement digital signatures
         | 
| 3559 | 
            +
                # outside of KMS. The bytes in the keys are random; they not related to
         | 
| 3560 | 
            +
                # the caller or to the KMS key that is used to encrypt the private key.
         | 
| 3350 3561 | 
             
                #
         | 
| 3351 3562 | 
             
                # You can use the public key that `GenerateDataKeyPair` returns to
         | 
| 3352 3563 | 
             
                # encrypt data or verify a signature outside of KMS. Then, store the
         | 
| @@ -3354,10 +3565,10 @@ module Aws::KMS | |
| 3354 3565 | 
             
                # data or sign a message, you can use the Decrypt operation to decrypt
         | 
| 3355 3566 | 
             
                # the encrypted private key.
         | 
| 3356 3567 | 
             
                #
         | 
| 3357 | 
            -
                # To generate a data key pair, you must specify a symmetric  | 
| 3358 | 
            -
                # encrypt the private key in a data key pair. You cannot use | 
| 3359 | 
            -
                # asymmetric KMS key or a KMS key in a custom key store. To get the | 
| 3360 | 
            -
                # and origin of your KMS key, use the DescribeKey operation.
         | 
| 3568 | 
            +
                # To generate a data key pair, you must specify a symmetric encryption
         | 
| 3569 | 
            +
                # KMS key to encrypt the private key in a data key pair. You cannot use
         | 
| 3570 | 
            +
                # an asymmetric KMS key or a KMS key in a custom key store. To get the
         | 
| 3571 | 
            +
                # type and origin of your KMS key, use the DescribeKey operation.
         | 
| 3361 3572 | 
             
                #
         | 
| 3362 3573 | 
             
                # Use the `KeyPairSpec` parameter to choose an RSA or Elliptic Curve
         | 
| 3363 3574 | 
             
                # (ECC) data key pair. KMS recommends that your use ECC key pairs for
         | 
| @@ -3375,13 +3586,13 @@ module Aws::KMS | |
| 3375 3586 | 
             
                # to decrypt the encrypted private key in the data key pair.
         | 
| 3376 3587 | 
             
                #
         | 
| 3377 3588 | 
             
                # `GenerateDataKeyPair` returns a unique data key pair for each request.
         | 
| 3378 | 
            -
                # The bytes in the keys are not related to the caller | 
| 3379 | 
            -
                # that is used to encrypt the private key. The public key | 
| 3380 | 
            -
                # DER-encoded X.509 SubjectPublicKeyInfo, as specified in [RFC | 
| 3381 | 
            -
                # The private key is a DER-encoded PKCS8 PrivateKeyInfo, as | 
| 3382 | 
            -
                # [RFC 5958][2].
         | 
| 3589 | 
            +
                # The bytes in the keys are random; they are not related to the caller
         | 
| 3590 | 
            +
                # or the KMS key that is used to encrypt the private key. The public key
         | 
| 3591 | 
            +
                # is a DER-encoded X.509 SubjectPublicKeyInfo, as specified in [RFC
         | 
| 3592 | 
            +
                # 5280][1]. The private key is a DER-encoded PKCS8 PrivateKeyInfo, as
         | 
| 3593 | 
            +
                # specified in [RFC 5958][2].
         | 
| 3383 3594 | 
             
                #
         | 
| 3384 | 
            -
                # You can use  | 
| 3595 | 
            +
                # You can use an optional encryption context to add additional security
         | 
| 3385 3596 | 
             
                # to the encryption operation. If you specify an `EncryptionContext`,
         | 
| 3386 3597 | 
             
                # you must specify the same encryption context (a case-sensitive exact
         | 
| 3387 3598 | 
             
                # match) when decrypting the encrypted data key. Otherwise, the request
         | 
| @@ -3390,8 +3601,8 @@ module Aws::KMS | |
| 3390 3601 | 
             
                # Service Developer Guide*.
         | 
| 3391 3602 | 
             
                #
         | 
| 3392 3603 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 3393 | 
            -
                # key state. For details, see [Key  | 
| 3394 | 
            -
                #  | 
| 3604 | 
            +
                # key state. For details, see [Key states of KMS keys][4] in the *Key
         | 
| 3605 | 
            +
                # Management Service Developer Guide*.
         | 
| 3395 3606 | 
             
                #
         | 
| 3396 3607 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 3397 3608 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -3424,13 +3635,14 @@ module Aws::KMS | |
| 3424 3635 | 
             
                #   private key in the data key pair.
         | 
| 3425 3636 | 
             
                #
         | 
| 3426 3637 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 3427 | 
            -
                #   that  | 
| 3638 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 3428 3639 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 3429 3640 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 3430 | 
            -
                #   encryption context is  | 
| 3431 | 
            -
                #    | 
| 3641 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 3642 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 3643 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 3432 3644 | 
             
                #
         | 
| 3433 | 
            -
                #   For more information, see [Encryption  | 
| 3645 | 
            +
                #   For more information, see [Encryption context][1] in the *Key
         | 
| 3434 3646 | 
             
                #   Management Service Developer Guide*.
         | 
| 3435 3647 | 
             
                #
         | 
| 3436 3648 | 
             
                #
         | 
| @@ -3438,10 +3650,10 @@ module Aws::KMS | |
| 3438 3650 | 
             
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
         | 
| 3439 3651 | 
             
                #
         | 
| 3440 3652 | 
             
                # @option params [required, String] :key_id
         | 
| 3441 | 
            -
                #   Specifies the symmetric KMS key that encrypts the private | 
| 3442 | 
            -
                #   data key pair. You cannot specify an asymmetric KMS key or | 
| 3443 | 
            -
                #   in a custom key store. To get the type and origin of your | 
| 3444 | 
            -
                #   the DescribeKey operation.
         | 
| 3653 | 
            +
                #   Specifies the symmetric encryption KMS key that encrypts the private
         | 
| 3654 | 
            +
                #   key in the data key pair. You cannot specify an asymmetric KMS key or
         | 
| 3655 | 
            +
                #   a KMS key in a custom key store. To get the type and origin of your
         | 
| 3656 | 
            +
                #   KMS key, use the DescribeKey operation.
         | 
| 3445 3657 | 
             
                #
         | 
| 3446 3658 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 3447 3659 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -3495,16 +3707,16 @@ module Aws::KMS | |
| 3495 3707 | 
             
                # @example Example: To generate an RSA key pair for encryption and decryption
         | 
| 3496 3708 | 
             
                #
         | 
| 3497 3709 | 
             
                #   # This example generates an RSA data key pair for encryption and decryption. The operation returns a plaintext public key
         | 
| 3498 | 
            -
                #   # and private key, and a copy of the private key that is encrypted under a symmetric KMS key that you specify.
         | 
| 3710 | 
            +
                #   # and private key, and a copy of the private key that is encrypted under a symmetric encryption KMS key that you specify.
         | 
| 3499 3711 | 
             
                #
         | 
| 3500 3712 | 
             
                #   resp = client.generate_data_key_pair({
         | 
| 3501 | 
            -
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ID of the symmetric KMS key that encrypts the private RSA key in the data key pair.
         | 
| 3713 | 
            +
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ID of the symmetric encryption KMS key that encrypts the private RSA key in the data key pair.
         | 
| 3502 3714 | 
             
                #     key_pair_spec: "RSA_3072", # The requested key spec of the RSA data key pair.
         | 
| 3503 3715 | 
             
                #   })
         | 
| 3504 3716 | 
             
                #
         | 
| 3505 3717 | 
             
                #   resp.to_h outputs the following:
         | 
| 3506 3718 | 
             
                #   {
         | 
| 3507 | 
            -
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ARN of the symmetric KMS key that was used to encrypt the private key.
         | 
| 3719 | 
            +
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ARN of the symmetric encryption KMS key that was used to encrypt the private key.
         | 
| 3508 3720 | 
             
                #     key_pair_spec: "RSA_3072", # The actual key spec of the RSA data key pair.
         | 
| 3509 3721 | 
             
                #     private_key_ciphertext_blob: "<binary data>", # The encrypted private key of the RSA data key pair.
         | 
| 3510 3722 | 
             
                #     private_key_plaintext: "<binary data>", # The plaintext private key of the RSA data key pair.
         | 
| @@ -3539,11 +3751,12 @@ module Aws::KMS | |
| 3539 3751 | 
             
                  req.send_request(options)
         | 
| 3540 3752 | 
             
                end
         | 
| 3541 3753 |  | 
| 3542 | 
            -
                #  | 
| 3543 | 
            -
                #  | 
| 3544 | 
            -
                #  | 
| 3545 | 
            -
                #  | 
| 3546 | 
            -
                #  | 
| 3754 | 
            +
                # Returns a unique asymmetric data key pair for use outside of KMS. This
         | 
| 3755 | 
            +
                # operation returns a plaintext public key and a copy of the private key
         | 
| 3756 | 
            +
                # that is encrypted under the symmetric encryption KMS key you specify.
         | 
| 3757 | 
            +
                # Unlike GenerateDataKeyPair, this operation does not return a plaintext
         | 
| 3758 | 
            +
                # private key. The bytes in the keys are random; they are not related to
         | 
| 3759 | 
            +
                # the caller or to the KMS key that is used to encrypt the private key.
         | 
| 3547 3760 | 
             
                #
         | 
| 3548 3761 | 
             
                # You can use the public key that `GenerateDataKeyPairWithoutPlaintext`
         | 
| 3549 3762 | 
             
                # returns to encrypt data or verify a signature outside of KMS. Then,
         | 
| @@ -3551,10 +3764,10 @@ module Aws::KMS | |
| 3551 3764 | 
             
                # decrypt data or sign a message, you can use the Decrypt operation to
         | 
| 3552 3765 | 
             
                # decrypt the encrypted private key.
         | 
| 3553 3766 | 
             
                #
         | 
| 3554 | 
            -
                # To generate a data key pair, you must specify a symmetric  | 
| 3555 | 
            -
                # encrypt the private key in a data key pair. You cannot use | 
| 3556 | 
            -
                # asymmetric KMS key or a KMS key in a custom key store. To get the | 
| 3557 | 
            -
                # and origin of your KMS key, use the DescribeKey operation.
         | 
| 3767 | 
            +
                # To generate a data key pair, you must specify a symmetric encryption
         | 
| 3768 | 
            +
                # KMS key to encrypt the private key in a data key pair. You cannot use
         | 
| 3769 | 
            +
                # an asymmetric KMS key or a KMS key in a custom key store. To get the
         | 
| 3770 | 
            +
                # type and origin of your KMS key, use the DescribeKey operation.
         | 
| 3558 3771 | 
             
                #
         | 
| 3559 3772 | 
             
                # Use the `KeyPairSpec` parameter to choose an RSA or Elliptic Curve
         | 
| 3560 3773 | 
             
                # (ECC) data key pair. KMS recommends that your use ECC key pairs for
         | 
| @@ -3568,7 +3781,7 @@ module Aws::KMS | |
| 3568 3781 | 
             
                # a DER-encoded X.509 SubjectPublicKeyInfo, as specified in [RFC
         | 
| 3569 3782 | 
             
                # 5280][1].
         | 
| 3570 3783 | 
             
                #
         | 
| 3571 | 
            -
                # You can use  | 
| 3784 | 
            +
                # You can use an optional encryption context to add additional security
         | 
| 3572 3785 | 
             
                # to the encryption operation. If you specify an `EncryptionContext`,
         | 
| 3573 3786 | 
             
                # you must specify the same encryption context (a case-sensitive exact
         | 
| 3574 3787 | 
             
                # match) when decrypting the encrypted data key. Otherwise, the request
         | 
| @@ -3577,8 +3790,8 @@ module Aws::KMS | |
| 3577 3790 | 
             
                # Service Developer Guide*.
         | 
| 3578 3791 | 
             
                #
         | 
| 3579 3792 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 3580 | 
            -
                # key state. For details, see [Key  | 
| 3581 | 
            -
                #  | 
| 3793 | 
            +
                # key state. For details, see [Key states of KMS keys][3] in the *Key
         | 
| 3794 | 
            +
                # Management Service Developer Guide*.
         | 
| 3582 3795 | 
             
                #
         | 
| 3583 3796 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 3584 3797 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -3611,13 +3824,14 @@ module Aws::KMS | |
| 3611 3824 | 
             
                #   private key in the data key pair.
         | 
| 3612 3825 | 
             
                #
         | 
| 3613 3826 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 3614 | 
            -
                #   that  | 
| 3827 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 3615 3828 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 3616 3829 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 3617 | 
            -
                #   encryption context is  | 
| 3618 | 
            -
                #    | 
| 3830 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 3831 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 3832 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 3619 3833 | 
             
                #
         | 
| 3620 | 
            -
                #   For more information, see [Encryption  | 
| 3834 | 
            +
                #   For more information, see [Encryption context][1] in the *Key
         | 
| 3621 3835 | 
             
                #   Management Service Developer Guide*.
         | 
| 3622 3836 | 
             
                #
         | 
| 3623 3837 | 
             
                #
         | 
| @@ -3625,10 +3839,10 @@ module Aws::KMS | |
| 3625 3839 | 
             
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
         | 
| 3626 3840 | 
             
                #
         | 
| 3627 3841 | 
             
                # @option params [required, String] :key_id
         | 
| 3628 | 
            -
                #   Specifies the KMS key that encrypts the private | 
| 3629 | 
            -
                #   pair. You  | 
| 3630 | 
            -
                #    | 
| 3631 | 
            -
                #    | 
| 3842 | 
            +
                #   Specifies the symmetric encryption KMS key that encrypts the private
         | 
| 3843 | 
            +
                #   key in the data key pair. You cannot specify an asymmetric KMS key or
         | 
| 3844 | 
            +
                #   a KMS key in a custom key store. To get the type and origin of your
         | 
| 3845 | 
            +
                #   KMS key, use the DescribeKey operation.
         | 
| 3632 3846 | 
             
                #
         | 
| 3633 3847 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 3634 3848 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -3681,16 +3895,16 @@ module Aws::KMS | |
| 3681 3895 | 
             
                # @example Example: To generate an asymmetric data key pair without a plaintext key
         | 
| 3682 3896 | 
             
                #
         | 
| 3683 3897 | 
             
                #   # This example returns an asymmetric elliptic curve (ECC) data key pair. The private key is encrypted under the symmetric
         | 
| 3684 | 
            -
                #   # KMS key that you specify. This operation doesn't return a plaintext (unencrypted) private key.
         | 
| 3898 | 
            +
                #   # encryption KMS key that you specify. This operation doesn't return a plaintext (unencrypted) private key.
         | 
| 3685 3899 | 
             
                #
         | 
| 3686 3900 | 
             
                #   resp = client.generate_data_key_pair_without_plaintext({
         | 
| 3687 | 
            -
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The symmetric KMS key that encrypts the private key of the ECC data key pair.
         | 
| 3901 | 
            +
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The symmetric encryption KMS key that encrypts the private key of the ECC data key pair.
         | 
| 3688 3902 | 
             
                #     key_pair_spec: "ECC_NIST_P521", # The requested key spec of the ECC asymmetric data key pair.
         | 
| 3689 3903 | 
             
                #   })
         | 
| 3690 3904 | 
             
                #
         | 
| 3691 3905 | 
             
                #   resp.to_h outputs the following:
         | 
| 3692 3906 | 
             
                #   {
         | 
| 3693 | 
            -
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ARN of the symmetric KMS key that encrypted the private key in the ECC asymmetric data key pair.
         | 
| 3907 | 
            +
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ARN of the symmetric encryption KMS key that encrypted the private key in the ECC asymmetric data key pair.
         | 
| 3694 3908 | 
             
                #     key_pair_spec: "ECC_NIST_P521", # The actual key spec of the ECC asymmetric data key pair.
         | 
| 3695 3909 | 
             
                #     private_key_ciphertext_blob: "<binary data>", # The encrypted private key of the asymmetric ECC data key pair.
         | 
| 3696 3910 | 
             
                #     public_key: "<binary data>", # The public key (plaintext).
         | 
| @@ -3723,40 +3937,40 @@ module Aws::KMS | |
| 3723 3937 | 
             
                  req.send_request(options)
         | 
| 3724 3938 | 
             
                end
         | 
| 3725 3939 |  | 
| 3726 | 
            -
                #  | 
| 3727 | 
            -
                #  | 
| 3728 | 
            -
                #  | 
| 3729 | 
            -
                #  | 
| 3940 | 
            +
                # Returns a unique symmetric data key for use outside of KMS. This
         | 
| 3941 | 
            +
                # operation returns a data key that is encrypted under a symmetric
         | 
| 3942 | 
            +
                # encryption KMS key that you specify. The bytes in the key are random;
         | 
| 3943 | 
            +
                # they are not related to the caller or to the KMS key.
         | 
| 3730 3944 | 
             
                #
         | 
| 3731 3945 | 
             
                # `GenerateDataKeyWithoutPlaintext` is identical to the GenerateDataKey
         | 
| 3732 | 
            -
                # operation except that  | 
| 3946 | 
            +
                # operation except that it does not return a plaintext copy of the data
         | 
| 3947 | 
            +
                # key.
         | 
| 3948 | 
            +
                #
         | 
| 3733 3949 | 
             
                # This operation is useful for systems that need to encrypt data at some
         | 
| 3734 3950 | 
             
                # point, but not immediately. When you need to encrypt the data, you
         | 
| 3735 | 
            -
                # call the Decrypt operation on the encrypted copy of the key.
         | 
| 3736 | 
            -
                #
         | 
| 3737 | 
            -
                #  | 
| 3738 | 
            -
                #  | 
| 3739 | 
            -
                #  | 
| 3740 | 
            -
                #  | 
| 3741 | 
            -
                #  | 
| 3742 | 
            -
                #  | 
| 3743 | 
            -
                #  | 
| 3744 | 
            -
                # data key. | 
| 3745 | 
            -
                # | 
| 3746 | 
            -
                #
         | 
| 3747 | 
            -
                #  | 
| 3748 | 
            -
                # | 
| 3749 | 
            -
                #  | 
| 3750 | 
            -
                #
         | 
| 3751 | 
            -
                #  | 
| 3752 | 
            -
                #  | 
| 3753 | 
            -
                # generate a data key. To get the type of your KMS key, use the
         | 
| 3754 | 
            -
                # DescribeKey operation.
         | 
| 3951 | 
            +
                # call the Decrypt operation on the encrypted copy of the key. It's
         | 
| 3952 | 
            +
                # also useful in distributed systems with different levels of trust. For
         | 
| 3953 | 
            +
                # example, you might store encrypted data in containers. One component
         | 
| 3954 | 
            +
                # of your system creates new containers and stores an encrypted data key
         | 
| 3955 | 
            +
                # with each container. Then, a different component puts the data into
         | 
| 3956 | 
            +
                # the containers. That component first decrypts the data key, uses the
         | 
| 3957 | 
            +
                # plaintext data key to encrypt data, puts the encrypted data into the
         | 
| 3958 | 
            +
                # container, and then destroys the plaintext data key. In this system,
         | 
| 3959 | 
            +
                # the component that creates the containers never sees the plaintext
         | 
| 3960 | 
            +
                # data key.
         | 
| 3961 | 
            +
                #
         | 
| 3962 | 
            +
                # To request an asymmetric data key pair, use the GenerateDataKeyPair or
         | 
| 3963 | 
            +
                # GenerateDataKeyPairWithoutPlaintext operations.
         | 
| 3964 | 
            +
                #
         | 
| 3965 | 
            +
                # To generate a data key, you must specify the symmetric encryption KMS
         | 
| 3966 | 
            +
                # key that is used to encrypt the data key. You cannot use an asymmetric
         | 
| 3967 | 
            +
                # KMS key or a key in a custom key store to generate a data key. To get
         | 
| 3968 | 
            +
                # the type of your KMS key, use the DescribeKey operation.
         | 
| 3755 3969 | 
             
                #
         | 
| 3756 3970 | 
             
                # If the operation succeeds, you will find the encrypted copy of the
         | 
| 3757 3971 | 
             
                # data key in the `CiphertextBlob` field.
         | 
| 3758 3972 | 
             
                #
         | 
| 3759 | 
            -
                # You can use  | 
| 3973 | 
            +
                # You can use an optional encryption context to add additional security
         | 
| 3760 3974 | 
             
                # to the encryption operation. If you specify an `EncryptionContext`,
         | 
| 3761 3975 | 
             
                # you must specify the same encryption context (a case-sensitive exact
         | 
| 3762 3976 | 
             
                # match) when decrypting the encrypted data key. Otherwise, the request
         | 
| @@ -3765,8 +3979,8 @@ module Aws::KMS | |
| 3765 3979 | 
             
                # Service Developer Guide*.
         | 
| 3766 3980 | 
             
                #
         | 
| 3767 3981 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 3768 | 
            -
                # key state. For details, see [Key  | 
| 3769 | 
            -
                #  | 
| 3982 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 3983 | 
            +
                # Management Service Developer Guide*.
         | 
| 3770 3984 | 
             
                #
         | 
| 3771 3985 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 3772 3986 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -3794,7 +4008,10 @@ module Aws::KMS | |
| 3794 4008 | 
             
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 3795 4009 | 
             
                #
         | 
| 3796 4010 | 
             
                # @option params [required, String] :key_id
         | 
| 3797 | 
            -
                #    | 
| 4011 | 
            +
                #   Specifies the symmetric encryption KMS key that encrypts the data key.
         | 
| 4012 | 
            +
                #   You cannot specify an asymmetric KMS key or a KMS key in a custom key
         | 
| 4013 | 
            +
                #   store. To get the type and origin of your KMS key, use the DescribeKey
         | 
| 4014 | 
            +
                #   operation.
         | 
| 3798 4015 | 
             
                #
         | 
| 3799 4016 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 3800 4017 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -3820,13 +4037,14 @@ module Aws::KMS | |
| 3820 4037 | 
             
                #   data key.
         | 
| 3821 4038 | 
             
                #
         | 
| 3822 4039 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 3823 | 
            -
                #   that  | 
| 4040 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 3824 4041 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 3825 4042 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 3826 | 
            -
                #   encryption context is  | 
| 3827 | 
            -
                #    | 
| 4043 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 4044 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 4045 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 3828 4046 | 
             
                #
         | 
| 3829 | 
            -
                #   For more information, see [Encryption  | 
| 4047 | 
            +
                #   For more information, see [Encryption context][1] in the *Key
         | 
| 3830 4048 | 
             
                #   Management Service Developer Guide*.
         | 
| 3831 4049 | 
             
                #
         | 
| 3832 4050 | 
             
                #
         | 
| @@ -3904,6 +4122,126 @@ module Aws::KMS | |
| 3904 4122 | 
             
                  req.send_request(options)
         | 
| 3905 4123 | 
             
                end
         | 
| 3906 4124 |  | 
| 4125 | 
            +
                # Generates a hash-based message authentication code (HMAC) for a
         | 
| 4126 | 
            +
                # message using an HMAC KMS key and a MAC algorithm that the key
         | 
| 4127 | 
            +
                # supports. The MAC algorithm computes the HMAC for the message and the
         | 
| 4128 | 
            +
                # key as described in [RFC 2104][1].
         | 
| 4129 | 
            +
                #
         | 
| 4130 | 
            +
                # You can use the HMAC that this operation generates with the VerifyMac
         | 
| 4131 | 
            +
                # operation to demonstrate that the original message has not changed.
         | 
| 4132 | 
            +
                # Also, because a secret key is used to create the hash, you can verify
         | 
| 4133 | 
            +
                # that the party that generated the hash has the required secret key.
         | 
| 4134 | 
            +
                # This operation is part of KMS support for HMAC KMS keys. For details,
         | 
| 4135 | 
            +
                # see [HMAC keys in KMS][2] in the <i> <i>Key Management Service
         | 
| 4136 | 
            +
                # Developer Guide</i> </i>.
         | 
| 4137 | 
            +
                #
         | 
| 4138 | 
            +
                # The KMS key that you use for this operation must be in a compatible
         | 
| 4139 | 
            +
                # key state. For details, see [Key states of KMS keys][3] in the *Key
         | 
| 4140 | 
            +
                # Management Service Developer Guide*.
         | 
| 4141 | 
            +
                #
         | 
| 4142 | 
            +
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 4143 | 
            +
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| 4144 | 
            +
                # alias ARN in the value of the `KeyId` parameter.
         | 
| 4145 | 
            +
                #
         | 
| 4146 | 
            +
                # **Required permissions**\: [kms:GenerateMac][4] (key policy)
         | 
| 4147 | 
            +
                #
         | 
| 4148 | 
            +
                # **Related operations**\: VerifyMac
         | 
| 4149 | 
            +
                #
         | 
| 4150 | 
            +
                #
         | 
| 4151 | 
            +
                #
         | 
| 4152 | 
            +
                # [1]: https://datatracker.ietf.org/doc/html/rfc2104
         | 
| 4153 | 
            +
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 4154 | 
            +
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
         | 
| 4155 | 
            +
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 4156 | 
            +
                #
         | 
| 4157 | 
            +
                # @option params [required, String, StringIO, File] :message
         | 
| 4158 | 
            +
                #   The message to be hashed. Specify a message of up to 4,096 bytes.
         | 
| 4159 | 
            +
                #
         | 
| 4160 | 
            +
                #   `GenerateMac` and VerifyMac do not provide special handling for
         | 
| 4161 | 
            +
                #   message digests. If you generate an HMAC for a hash digest of a
         | 
| 4162 | 
            +
                #   message, you must verify the HMAC of the same hash digest.
         | 
| 4163 | 
            +
                #
         | 
| 4164 | 
            +
                # @option params [required, String] :key_id
         | 
| 4165 | 
            +
                #   The HMAC KMS key to use in the operation. The MAC algorithm computes
         | 
| 4166 | 
            +
                #   the HMAC for the message and the key as described in [RFC 2104][1].
         | 
| 4167 | 
            +
                #
         | 
| 4168 | 
            +
                #   To identify an HMAC KMS key, use the DescribeKey operation and see the
         | 
| 4169 | 
            +
                #   `KeySpec` field in the response.
         | 
| 4170 | 
            +
                #
         | 
| 4171 | 
            +
                #
         | 
| 4172 | 
            +
                #
         | 
| 4173 | 
            +
                #   [1]: https://datatracker.ietf.org/doc/html/rfc2104
         | 
| 4174 | 
            +
                #
         | 
| 4175 | 
            +
                # @option params [required, String] :mac_algorithm
         | 
| 4176 | 
            +
                #   The MAC algorithm used in the operation.
         | 
| 4177 | 
            +
                #
         | 
| 4178 | 
            +
                #   The algorithm must be compatible with the HMAC KMS key that you
         | 
| 4179 | 
            +
                #   specify. To find the MAC algorithms that your HMAC KMS key supports,
         | 
| 4180 | 
            +
                #   use the DescribeKey operation and see the `MacAlgorithms` field in the
         | 
| 4181 | 
            +
                #   `DescribeKey` response.
         | 
| 4182 | 
            +
                #
         | 
| 4183 | 
            +
                # @option params [Array<String>] :grant_tokens
         | 
| 4184 | 
            +
                #   A list of grant tokens.
         | 
| 4185 | 
            +
                #
         | 
| 4186 | 
            +
                #   Use a grant token when your permission to call this operation comes
         | 
| 4187 | 
            +
                #   from a new grant that has not yet achieved *eventual consistency*. For
         | 
| 4188 | 
            +
                #   more information, see [Grant token][1] and [Using a grant token][2] in
         | 
| 4189 | 
            +
                #   the *Key Management Service Developer Guide*.
         | 
| 4190 | 
            +
                #
         | 
| 4191 | 
            +
                #
         | 
| 4192 | 
            +
                #
         | 
| 4193 | 
            +
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
         | 
| 4194 | 
            +
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
         | 
| 4195 | 
            +
                #
         | 
| 4196 | 
            +
                # @return [Types::GenerateMacResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
         | 
| 4197 | 
            +
                #
         | 
| 4198 | 
            +
                #   * {Types::GenerateMacResponse#mac #mac} => String
         | 
| 4199 | 
            +
                #   * {Types::GenerateMacResponse#mac_algorithm #mac_algorithm} => String
         | 
| 4200 | 
            +
                #   * {Types::GenerateMacResponse#key_id #key_id} => String
         | 
| 4201 | 
            +
                #
         | 
| 4202 | 
            +
                #
         | 
| 4203 | 
            +
                # @example Example: To generate an HMAC for a message
         | 
| 4204 | 
            +
                #
         | 
| 4205 | 
            +
                #   # This example generates an HMAC for a message, an HMAC KMS key, and a MAC algorithm. The algorithm must be supported by
         | 
| 4206 | 
            +
                #   # the specified HMAC KMS key.
         | 
| 4207 | 
            +
                #
         | 
| 4208 | 
            +
                #   resp = client.generate_mac({
         | 
| 4209 | 
            +
                #     key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The HMAC KMS key input to the HMAC algorithm.
         | 
| 4210 | 
            +
                #     mac_algorithm: "HMAC_SHA_384", # The HMAC algorithm requested for the operation.
         | 
| 4211 | 
            +
                #     message: "Hello World", # The message input to the HMAC algorithm.
         | 
| 4212 | 
            +
                #   })
         | 
| 4213 | 
            +
                #
         | 
| 4214 | 
            +
                #   resp.to_h outputs the following:
         | 
| 4215 | 
            +
                #   {
         | 
| 4216 | 
            +
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ARN of the HMAC KMS key used in the operation.
         | 
| 4217 | 
            +
                #     mac: "<HMAC_TAG>", # The HMAC tag that results from this operation.
         | 
| 4218 | 
            +
                #     mac_algorithm: "HMAC_SHA_384", # The HMAC algorithm used in the operation.
         | 
| 4219 | 
            +
                #   }
         | 
| 4220 | 
            +
                #
         | 
| 4221 | 
            +
                # @example Request syntax with placeholder values
         | 
| 4222 | 
            +
                #
         | 
| 4223 | 
            +
                #   resp = client.generate_mac({
         | 
| 4224 | 
            +
                #     message: "data", # required
         | 
| 4225 | 
            +
                #     key_id: "KeyIdType", # required
         | 
| 4226 | 
            +
                #     mac_algorithm: "HMAC_SHA_224", # required, accepts HMAC_SHA_224, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA_512
         | 
| 4227 | 
            +
                #     grant_tokens: ["GrantTokenType"],
         | 
| 4228 | 
            +
                #   })
         | 
| 4229 | 
            +
                #
         | 
| 4230 | 
            +
                # @example Response structure
         | 
| 4231 | 
            +
                #
         | 
| 4232 | 
            +
                #   resp.mac #=> String
         | 
| 4233 | 
            +
                #   resp.mac_algorithm #=> String, one of "HMAC_SHA_224", "HMAC_SHA_256", "HMAC_SHA_384", "HMAC_SHA_512"
         | 
| 4234 | 
            +
                #   resp.key_id #=> String
         | 
| 4235 | 
            +
                #
         | 
| 4236 | 
            +
                # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateMac AWS API Documentation
         | 
| 4237 | 
            +
                #
         | 
| 4238 | 
            +
                # @overload generate_mac(params = {})
         | 
| 4239 | 
            +
                # @param [Hash] params ({})
         | 
| 4240 | 
            +
                def generate_mac(params = {}, options = {})
         | 
| 4241 | 
            +
                  req = build_request(:generate_mac, params)
         | 
| 4242 | 
            +
                  req.send_request(options)
         | 
| 4243 | 
            +
                end
         | 
| 4244 | 
            +
             | 
| 3907 4245 | 
             
                # Returns a random byte string that is cryptographically secure.
         | 
| 3908 4246 | 
             
                #
         | 
| 3909 4247 | 
             
                # By default, the random byte string is generated in KMS. To generate
         | 
| @@ -4053,15 +4391,16 @@ module Aws::KMS | |
| 4053 4391 | 
             
                # Gets a Boolean value that indicates whether [automatic rotation of the
         | 
| 4054 4392 | 
             
                # key material][1] is enabled for the specified KMS key.
         | 
| 4055 4393 | 
             
                #
         | 
| 4056 | 
            -
                # You cannot enable automatic rotation of [asymmetric KMS keys][2], | 
| 4057 | 
            -
                # keys with [imported key material][ | 
| 4058 | 
            -
                # store][ | 
| 4059 | 
            -
                # [multi-Region keys][ | 
| 4060 | 
            -
                # rotation status for these KMS keys is | 
| 4394 | 
            +
                # You cannot enable automatic rotation of [asymmetric KMS keys][2],
         | 
| 4395 | 
            +
                # [HMAC KMS keys][3], KMS keys with [imported key material][4], or KMS
         | 
| 4396 | 
            +
                # keys in a [custom key store][5]. To enable or disable automatic
         | 
| 4397 | 
            +
                # rotation of a set of related [multi-Region keys][6], set the property
         | 
| 4398 | 
            +
                # on the primary key. The key rotation status for these KMS keys is
         | 
| 4399 | 
            +
                # always `false`.
         | 
| 4061 4400 | 
             
                #
         | 
| 4062 4401 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 4063 | 
            -
                # key state. For details, see [Key  | 
| 4064 | 
            -
                #  | 
| 4402 | 
            +
                # key state. For details, see [Key states of KMS keys][7] in the *Key
         | 
| 4403 | 
            +
                # Management Service Developer Guide*.
         | 
| 4065 4404 | 
             
                #
         | 
| 4066 4405 | 
             
                # * Disabled: The key rotation status does not change when you disable a
         | 
| 4067 4406 | 
             
                #   KMS key. However, while the KMS key is disabled, KMS does not rotate
         | 
| @@ -4076,7 +4415,7 @@ module Aws::KMS | |
| 4076 4415 | 
             
                # a different Amazon Web Services account, specify the key ARN in the
         | 
| 4077 4416 | 
             
                # value of the `KeyId` parameter.
         | 
| 4078 4417 | 
             
                #
         | 
| 4079 | 
            -
                # **Required permissions**\: [kms:GetKeyRotationStatus][ | 
| 4418 | 
            +
                # **Required permissions**\: [kms:GetKeyRotationStatus][8] (key policy)
         | 
| 4080 4419 | 
             
                #
         | 
| 4081 4420 | 
             
                # **Related operations:**
         | 
| 4082 4421 | 
             
                #
         | 
| @@ -4087,12 +4426,13 @@ module Aws::KMS | |
| 4087 4426 | 
             
                #
         | 
| 4088 4427 | 
             
                #
         | 
| 4089 4428 | 
             
                # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
         | 
| 4090 | 
            -
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 4091 | 
            -
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 4092 | 
            -
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 4093 | 
            -
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 4094 | 
            -
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 4095 | 
            -
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/ | 
| 4429 | 
            +
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
         | 
| 4430 | 
            +
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 4431 | 
            +
                # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
         | 
| 4432 | 
            +
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
         | 
| 4433 | 
            +
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
         | 
| 4434 | 
            +
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
         | 
| 4435 | 
            +
                # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 4096 4436 | 
             
                #
         | 
| 4097 4437 | 
             
                # @option params [required, String] :key_id
         | 
| 4098 4438 | 
             
                #   Gets the rotation status for the specified KMS key.
         | 
| @@ -4147,21 +4487,22 @@ module Aws::KMS | |
| 4147 4487 | 
             
                  req.send_request(options)
         | 
| 4148 4488 | 
             
                end
         | 
| 4149 4489 |  | 
| 4150 | 
            -
                # Returns the items you need to import key material into a symmetric | 
| 4151 | 
            -
                #  | 
| 4152 | 
            -
                #  | 
| 4153 | 
            -
                #  | 
| 4490 | 
            +
                # Returns the items you need to import key material into a symmetric
         | 
| 4491 | 
            +
                # encryption KMS key. For more information about importing key material
         | 
| 4492 | 
            +
                # into KMS, see [Importing key material][1] in the *Key Management
         | 
| 4493 | 
            +
                # Service Developer Guide*.
         | 
| 4154 4494 | 
             
                #
         | 
| 4155 4495 | 
             
                # This operation returns a public key and an import token. Use the
         | 
| 4156 4496 | 
             
                # public key to encrypt the symmetric key material. Store the import
         | 
| 4157 4497 | 
             
                # token to send with a subsequent ImportKeyMaterial request.
         | 
| 4158 4498 | 
             
                #
         | 
| 4159 | 
            -
                # You must specify the key ID of the symmetric KMS key into | 
| 4160 | 
            -
                # will import key material. This KMS key's `Origin` must be | 
| 4161 | 
            -
                # You must also specify the wrapping algorithm and type of | 
| 4162 | 
            -
                # (public key) that you will use to encrypt the key | 
| 4163 | 
            -
                # perform this operation on an asymmetric KMS key | 
| 4164 | 
            -
                # different Amazon Web Services | 
| 4499 | 
            +
                # You must specify the key ID of the symmetric encryption KMS key into
         | 
| 4500 | 
            +
                # which you will import key material. This KMS key's `Origin` must be
         | 
| 4501 | 
            +
                # `EXTERNAL`. You must also specify the wrapping algorithm and type of
         | 
| 4502 | 
            +
                # wrapping key (public key) that you will use to encrypt the key
         | 
| 4503 | 
            +
                # material. You cannot perform this operation on an asymmetric KMS key,
         | 
| 4504 | 
            +
                # an HMAC KMS key, or on any KMS key in a different Amazon Web Services
         | 
| 4505 | 
            +
                # account.
         | 
| 4165 4506 | 
             
                #
         | 
| 4166 4507 | 
             
                # To import key material, you must use the public key and import token
         | 
| 4167 4508 | 
             
                # from the same response. These items are valid for 24 hours. The
         | 
| @@ -4171,8 +4512,8 @@ module Aws::KMS | |
| 4171 4512 | 
             
                # `GetParametersForImport` request.
         | 
| 4172 4513 | 
             
                #
         | 
| 4173 4514 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 4174 | 
            -
                # key state. For details, see [Key  | 
| 4175 | 
            -
                #  | 
| 4515 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 4516 | 
            +
                # Management Service Developer Guide*.
         | 
| 4176 4517 | 
             
                #
         | 
| 4177 4518 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 4178 4519 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -4193,8 +4534,8 @@ module Aws::KMS | |
| 4193 4534 | 
             
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 4194 4535 | 
             
                #
         | 
| 4195 4536 | 
             
                # @option params [required, String] :key_id
         | 
| 4196 | 
            -
                #   The identifier of the symmetric KMS key into which you will | 
| 4197 | 
            -
                #   material. The `Origin` of the KMS key must be `EXTERNAL`.
         | 
| 4537 | 
            +
                #   The identifier of the symmetric encryption KMS key into which you will
         | 
| 4538 | 
            +
                #   import key material. The `Origin` of the KMS key must be `EXTERNAL`.
         | 
| 4198 4539 | 
             
                #
         | 
| 4199 4540 | 
             
                #   Specify the key ID or key ARN of the KMS key.
         | 
| 4200 4541 | 
             
                #
         | 
| @@ -4277,9 +4618,8 @@ module Aws::KMS | |
| 4277 4618 | 
             
                # callers with `kms:GetPublicKey` permission can download the public key
         | 
| 4278 4619 | 
             
                # of an asymmetric KMS key. You can share the public key to allow others
         | 
| 4279 4620 | 
             
                # to encrypt messages and verify signatures outside of KMS. For
         | 
| 4280 | 
            -
                # information about  | 
| 4281 | 
            -
                #  | 
| 4282 | 
            -
                # Developer Guide*.
         | 
| 4621 | 
            +
                # information about asymmetric KMS keys, see [Asymmetric KMS keys][1] in
         | 
| 4622 | 
            +
                # the *Key Management Service Developer Guide*.
         | 
| 4283 4623 | 
             
                #
         | 
| 4284 4624 | 
             
                # You do not need to download the public key. Instead, you can use the
         | 
| 4285 4625 | 
             
                # public key within KMS by calling the Encrypt, ReEncrypt, or Verify
         | 
| @@ -4311,8 +4651,8 @@ module Aws::KMS | |
| 4311 4651 | 
             
                # in a verification operation.
         | 
| 4312 4652 | 
             
                #
         | 
| 4313 4653 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 4314 | 
            -
                # key state. For details, see [Key  | 
| 4315 | 
            -
                #  | 
| 4654 | 
            +
                # key state. For details, see [Key states of KMS keys][7] in the *Key
         | 
| 4655 | 
            +
                # Management Service Developer Guide*.
         | 
| 4316 4656 | 
             
                #
         | 
| 4317 4657 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 4318 4658 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -4412,9 +4752,9 @@ module Aws::KMS | |
| 4412 4752 | 
             
                #
         | 
| 4413 4753 | 
             
                #   resp.key_id #=> String
         | 
| 4414 4754 | 
             
                #   resp.public_key #=> String
         | 
| 4415 | 
            -
                #   resp.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 4416 | 
            -
                #   resp.key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 4417 | 
            -
                #   resp.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT"
         | 
| 4755 | 
            +
                #   resp.customer_master_key_spec #=> String, one of "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"
         | 
| 4756 | 
            +
                #   resp.key_spec #=> String, one of "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"
         | 
| 4757 | 
            +
                #   resp.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
         | 
| 4418 4758 | 
             
                #   resp.encryption_algorithms #=> Array
         | 
| 4419 4759 | 
             
                #   resp.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
         | 
| 4420 4760 | 
             
                #   resp.signing_algorithms #=> Array
         | 
| @@ -4429,16 +4769,17 @@ module Aws::KMS | |
| 4429 4769 | 
             
                  req.send_request(options)
         | 
| 4430 4770 | 
             
                end
         | 
| 4431 4771 |  | 
| 4432 | 
            -
                # Imports key material into an existing symmetric  | 
| 4433 | 
            -
                # created without key material. After you successfully import | 
| 4434 | 
            -
                # material into a KMS key, you can [reimport the same key | 
| 4435 | 
            -
                # into that KMS key, but you cannot import different key | 
| 4436 | 
            -
                #
         | 
| 4437 | 
            -
                # | 
| 4438 | 
            -
                #  | 
| 4439 | 
            -
                #  | 
| 4440 | 
            -
                #  | 
| 4441 | 
            -
                #  | 
| 4772 | 
            +
                # Imports key material into an existing symmetric encryption KMS key
         | 
| 4773 | 
            +
                # that was created without key material. After you successfully import
         | 
| 4774 | 
            +
                # key material into a KMS key, you can [reimport the same key
         | 
| 4775 | 
            +
                # material][1] into that KMS key, but you cannot import different key
         | 
| 4776 | 
            +
                # material.
         | 
| 4777 | 
            +
                #
         | 
| 4778 | 
            +
                # You cannot perform this operation on an asymmetric KMS key, an HMAC
         | 
| 4779 | 
            +
                # KMS key, or on any KMS key in a different Amazon Web Services account.
         | 
| 4780 | 
            +
                # For more information about creating KMS keys with no key material and
         | 
| 4781 | 
            +
                # then importing key material, see [Importing Key Material][2] in the
         | 
| 4782 | 
            +
                # *Key Management Service Developer Guide*.
         | 
| 4442 4783 | 
             
                #
         | 
| 4443 4784 | 
             
                # Before using this operation, call GetParametersForImport. Its response
         | 
| 4444 4785 | 
             
                # includes a public key and an import token. Use the public key to
         | 
| @@ -4480,8 +4821,8 @@ module Aws::KMS | |
| 4480 4821 | 
             
                # Service Developer Guide*.
         | 
| 4481 4822 | 
             
                #
         | 
| 4482 4823 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 4483 | 
            -
                # key state. For details, see [Key  | 
| 4484 | 
            -
                #  | 
| 4824 | 
            +
                # key state. For details, see [Key states of KMS keys][4] in the *Key
         | 
| 4825 | 
            +
                # Management Service Developer Guide*.
         | 
| 4485 4826 | 
             
                #
         | 
| 4486 4827 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 4487 4828 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -4503,10 +4844,13 @@ module Aws::KMS | |
| 4503 4844 | 
             
                # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 4504 4845 | 
             
                #
         | 
| 4505 4846 | 
             
                # @option params [required, String] :key_id
         | 
| 4506 | 
            -
                #   The identifier of the symmetric KMS key that receives the | 
| 4507 | 
            -
                #   material.  | 
| 4508 | 
            -
                #    | 
| 4509 | 
            -
                #    | 
| 4847 | 
            +
                #   The identifier of the symmetric encryption KMS key that receives the
         | 
| 4848 | 
            +
                #   imported key material. This must be the same KMS key specified in the
         | 
| 4849 | 
            +
                #   `KeyID` parameter of the corresponding GetParametersForImport request.
         | 
| 4850 | 
            +
                #   The `Origin` of the KMS key must be `EXTERNAL`. You cannot perform
         | 
| 4851 | 
            +
                #   this operation on an asymmetric KMS key, an HMAC KMS key, a KMS key in
         | 
| 4852 | 
            +
                #   a custom key store, or on a KMS key in a different Amazon Web Services
         | 
| 4853 | 
            +
                #   account
         | 
| 4510 4854 | 
             
                #
         | 
| 4511 4855 | 
             
                #   Specify the key ID or key ARN of the KMS key.
         | 
| 4512 4856 | 
             
                #
         | 
| @@ -4748,7 +5092,7 @@ module Aws::KMS | |
| 4748 5092 | 
             
                # list by grant ID or grantee principal.
         | 
| 4749 5093 | 
             
                #
         | 
| 4750 5094 | 
             
                # For detailed information about grants, including grant terminology,
         | 
| 4751 | 
            -
                # see [ | 
| 5095 | 
            +
                # see [Grants in KMS][1] in the <i> <i>Key Management Service Developer
         | 
| 4752 5096 | 
             
                # Guide</i> </i>. For examples of working with grants in several
         | 
| 4753 5097 | 
             
                # programming languages, see [Programming grants][2].
         | 
| 4754 5098 | 
             
                #
         | 
| @@ -4918,7 +5262,7 @@ module Aws::KMS | |
| 4918 5262 | 
             
                #   resp.grants[0].retiring_principal #=> String
         | 
| 4919 5263 | 
             
                #   resp.grants[0].issuing_account #=> String
         | 
| 4920 5264 | 
             
                #   resp.grants[0].operations #=> Array
         | 
| 4921 | 
            -
                #   resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext"
         | 
| 5265 | 
            +
                #   resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac"
         | 
| 4922 5266 | 
             
                #   resp.grants[0].constraints.encryption_context_subset #=> Hash
         | 
| 4923 5267 | 
             
                #   resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
         | 
| 4924 5268 | 
             
                #   resp.grants[0].constraints.encryption_context_equals #=> Hash
         | 
| @@ -5274,7 +5618,7 @@ module Aws::KMS | |
| 5274 5618 | 
             
                # a grant, use the RetireGrant operation.
         | 
| 5275 5619 | 
             
                #
         | 
| 5276 5620 | 
             
                # For detailed information about grants, including grant terminology,
         | 
| 5277 | 
            -
                # see [ | 
| 5621 | 
            +
                # see [Grants in KMS][1] in the <i> <i>Key Management Service Developer
         | 
| 5278 5622 | 
             
                # Guide</i> </i>. For examples of working with grants in several
         | 
| 5279 5623 | 
             
                # programming languages, see [Programming grants][2].
         | 
| 5280 5624 | 
             
                #
         | 
| @@ -5386,7 +5730,7 @@ module Aws::KMS | |
| 5386 5730 | 
             
                #   resp.grants[0].retiring_principal #=> String
         | 
| 5387 5731 | 
             
                #   resp.grants[0].issuing_account #=> String
         | 
| 5388 5732 | 
             
                #   resp.grants[0].operations #=> Array
         | 
| 5389 | 
            -
                #   resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext"
         | 
| 5733 | 
            +
                #   resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac"
         | 
| 5390 5734 | 
             
                #   resp.grants[0].constraints.encryption_context_subset #=> Hash
         | 
| 5391 5735 | 
             
                #   resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
         | 
| 5392 5736 | 
             
                #   resp.grants[0].constraints.encryption_context_equals #=> Hash
         | 
| @@ -5536,7 +5880,7 @@ module Aws::KMS | |
| 5536 5880 | 
             
                # [encryption context][2] of a ciphertext.
         | 
| 5537 5881 | 
             
                #
         | 
| 5538 5882 | 
             
                # The `ReEncrypt` operation can decrypt ciphertext that was encrypted by
         | 
| 5539 | 
            -
                # using  | 
| 5883 | 
            +
                # using a KMS key in an KMS operation, such as Encrypt or
         | 
| 5540 5884 | 
             
                # GenerateDataKey. It can also decrypt ciphertext that was encrypted by
         | 
| 5541 5885 | 
             
                # using the public key of an [asymmetric KMS key][3] outside of KMS.
         | 
| 5542 5886 | 
             
                # However, it cannot decrypt ciphertext produced by other libraries,
         | 
| @@ -5554,25 +5898,24 @@ module Aws::KMS | |
| 5554 5898 | 
             
                #   algorithm that was used. This information is required to decrypt the
         | 
| 5555 5899 | 
             
                #   data.
         | 
| 5556 5900 | 
             
                #
         | 
| 5557 | 
            -
                # * If your ciphertext was encrypted under a symmetric KMS | 
| 5558 | 
            -
                #   `SourceKeyId` parameter is optional. KMS can get this | 
| 5559 | 
            -
                #   from metadata that it adds to the symmetric ciphertext | 
| 5560 | 
            -
                #   feature adds durability to your implementation by | 
| 5561 | 
            -
                #   authorized users can decrypt ciphertext decades after | 
| 5562 | 
            -
                #   encrypted, even if they've lost track of the key ID. | 
| 5563 | 
            -
                #   specifying the source KMS key is always recommended as a | 
| 5564 | 
            -
                #   practice. When you use the `SourceKeyId` parameter to specify a | 
| 5565 | 
            -
                #   key, KMS uses only the KMS key you specify. If the ciphertext | 
| 5566 | 
            -
                #   encrypted under a different KMS key, the `ReEncrypt` operation
         | 
| 5901 | 
            +
                # * If your ciphertext was encrypted under a symmetric encryption KMS
         | 
| 5902 | 
            +
                #   key, the `SourceKeyId` parameter is optional. KMS can get this
         | 
| 5903 | 
            +
                #   information from metadata that it adds to the symmetric ciphertext
         | 
| 5904 | 
            +
                #   blob. This feature adds durability to your implementation by
         | 
| 5905 | 
            +
                #   ensuring that authorized users can decrypt ciphertext decades after
         | 
| 5906 | 
            +
                #   it was encrypted, even if they've lost track of the key ID.
         | 
| 5907 | 
            +
                #   However, specifying the source KMS key is always recommended as a
         | 
| 5908 | 
            +
                #   best practice. When you use the `SourceKeyId` parameter to specify a
         | 
| 5909 | 
            +
                #   KMS key, KMS uses only the KMS key you specify. If the ciphertext
         | 
| 5910 | 
            +
                #   was encrypted under a different KMS key, the `ReEncrypt` operation
         | 
| 5567 5911 | 
             
                #   fails. This practice ensures that you use the KMS key that you
         | 
| 5568 5912 | 
             
                #   intend.
         | 
| 5569 5913 | 
             
                #
         | 
| 5570 5914 | 
             
                # * To reencrypt the data, you must use the `DestinationKeyId` parameter
         | 
| 5571 5915 | 
             
                #   specify the KMS key that re-encrypts the data after it is decrypted.
         | 
| 5572 | 
            -
                #    | 
| 5573 | 
            -
                #    | 
| 5574 | 
            -
                #    | 
| 5575 | 
            -
                #   compatible with the KMS key.
         | 
| 5916 | 
            +
                #   If the destination KMS key is an asymmetric KMS key, you must also
         | 
| 5917 | 
            +
                #   provide the encryption algorithm. The algorithm that you choose must
         | 
| 5918 | 
            +
                #   be compatible with the KMS key.
         | 
| 5576 5919 | 
             
                #
         | 
| 5577 5920 | 
             
                #   When you use an asymmetric KMS key to encrypt or reencrypt data, be
         | 
| 5578 5921 | 
             
                #   sure to record the KMS key and encryption algorithm that you choose.
         | 
| @@ -5582,14 +5925,15 @@ module Aws::KMS | |
| 5582 5925 | 
             
                #   fails.
         | 
| 5583 5926 | 
             
                #
         | 
| 5584 5927 | 
             
                #    You are not required to supply the key ID and encryption algorithm
         | 
| 5585 | 
            -
                #   when you decrypt with symmetric KMS keys because KMS | 
| 5586 | 
            -
                #   information in the ciphertext blob. KMS cannot store | 
| 5587 | 
            -
                #   ciphertext generated with asymmetric keys. The standard | 
| 5588 | 
            -
                #   asymmetric key ciphertext does not include configurable | 
| 5928 | 
            +
                #   when you decrypt with symmetric encryption KMS keys because KMS
         | 
| 5929 | 
            +
                #   stores this information in the ciphertext blob. KMS cannot store
         | 
| 5930 | 
            +
                #   metadata in ciphertext generated with asymmetric keys. The standard
         | 
| 5931 | 
            +
                #   format for asymmetric key ciphertext does not include configurable
         | 
| 5932 | 
            +
                #   fields.
         | 
| 5589 5933 | 
             
                #
         | 
| 5590 5934 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 5591 | 
            -
                # key state. For details, see [Key  | 
| 5592 | 
            -
                #  | 
| 5935 | 
            +
                # key state. For details, see [Key states of KMS keys][6] in the *Key
         | 
| 5936 | 
            +
                # Management Service Developer Guide*.
         | 
| 5593 5937 | 
             
                #
         | 
| 5594 5938 | 
             
                # **Cross-account use**\: Yes. The source KMS key and destination KMS
         | 
| 5595 5939 | 
             
                # key can be in different Amazon Web Services accounts. Either or both
         | 
| @@ -5640,13 +5984,14 @@ module Aws::KMS | |
| 5640 5984 | 
             
                #   ciphertext.
         | 
| 5641 5985 | 
             
                #
         | 
| 5642 5986 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 5643 | 
            -
                #   that  | 
| 5987 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 5644 5988 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 5645 5989 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 5646 | 
            -
                #   encryption context is  | 
| 5647 | 
            -
                #    | 
| 5990 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 5991 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 5992 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 5648 5993 | 
             
                #
         | 
| 5649 | 
            -
                #   For more information, see [Encryption  | 
| 5994 | 
            +
                #   For more information, see [Encryption context][1] in the *Key
         | 
| 5650 5995 | 
             
                #   Management Service Developer Guide*.
         | 
| 5651 5996 | 
             
                #
         | 
| 5652 5997 | 
             
                #
         | 
| @@ -5655,14 +6000,18 @@ module Aws::KMS | |
| 5655 6000 | 
             
                #
         | 
| 5656 6001 | 
             
                # @option params [String] :source_key_id
         | 
| 5657 6002 | 
             
                #   Specifies the KMS key that KMS will use to decrypt the ciphertext
         | 
| 5658 | 
            -
                #   before it is re-encrypted. | 
| 5659 | 
            -
                # | 
| 6003 | 
            +
                #   before it is re-encrypted.
         | 
| 6004 | 
            +
                #
         | 
| 6005 | 
            +
                #   Enter a key ID of the KMS key that was used to encrypt the ciphertext.
         | 
| 6006 | 
            +
                #   If you identify a different KMS key, the `ReEncrypt` operation throws
         | 
| 6007 | 
            +
                #   an `IncorrectKeyException`.
         | 
| 5660 6008 | 
             
                #
         | 
| 5661 6009 | 
             
                #   This parameter is required only when the ciphertext was encrypted
         | 
| 5662 | 
            -
                #   under an asymmetric KMS key. If you used a symmetric  | 
| 5663 | 
            -
                #   get the KMS key from metadata that it adds to the | 
| 5664 | 
            -
                #   blob. However, it is always recommended as a best | 
| 5665 | 
            -
                #   practice ensures that you use the KMS key that you | 
| 6010 | 
            +
                #   under an asymmetric KMS key. If you used a symmetric encryption KMS
         | 
| 6011 | 
            +
                #   key, KMS can get the KMS key from metadata that it adds to the
         | 
| 6012 | 
            +
                #   symmetric ciphertext blob. However, it is always recommended as a best
         | 
| 6013 | 
            +
                #   practice. This practice ensures that you use the KMS key that you
         | 
| 6014 | 
            +
                #   intend.
         | 
| 5666 6015 | 
             
                #
         | 
| 5667 6016 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 5668 6017 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -5685,9 +6034,9 @@ module Aws::KMS | |
| 5685 6034 | 
             
                #
         | 
| 5686 6035 | 
             
                # @option params [required, String] :destination_key_id
         | 
| 5687 6036 | 
             
                #   A unique identifier for the KMS key that is used to reencrypt the
         | 
| 5688 | 
            -
                #   data. Specify a symmetric or asymmetric KMS key | 
| 5689 | 
            -
                #   value of `ENCRYPT_DECRYPT`. To find the `KeyUsage` | 
| 5690 | 
            -
                #   use the DescribeKey operation.
         | 
| 6037 | 
            +
                #   data. Specify a symmetric encryption KMS key or an asymmetric KMS key
         | 
| 6038 | 
            +
                #   with a `KeyUsage` value of `ENCRYPT_DECRYPT`. To find the `KeyUsage`
         | 
| 6039 | 
            +
                #   value of a KMS key, use the DescribeKey operation.
         | 
| 5691 6040 | 
             
                #
         | 
| 5692 6041 | 
             
                #   To specify a KMS key, use its key ID, key ARN, alias name, or alias
         | 
| 5693 6042 | 
             
                #   ARN. When using an alias name, prefix it with `"alias/"`. To specify a
         | 
| @@ -5713,17 +6062,18 @@ module Aws::KMS | |
| 5713 6062 | 
             
                #   data.
         | 
| 5714 6063 | 
             
                #
         | 
| 5715 6064 | 
             
                #   A destination encryption context is valid only when the destination
         | 
| 5716 | 
            -
                #   KMS key is a symmetric KMS key. The standard ciphertext | 
| 5717 | 
            -
                #   asymmetric KMS keys does not include fields for metadata.
         | 
| 6065 | 
            +
                #   KMS key is a symmetric encryption KMS key. The standard ciphertext
         | 
| 6066 | 
            +
                #   format for asymmetric KMS keys does not include fields for metadata.
         | 
| 5718 6067 | 
             
                #
         | 
| 5719 6068 | 
             
                #   An *encryption context* is a collection of non-secret key-value pairs
         | 
| 5720 | 
            -
                #   that  | 
| 6069 | 
            +
                #   that represent additional authenticated data. When you use an
         | 
| 5721 6070 | 
             
                #   encryption context to encrypt data, you must specify the same (an
         | 
| 5722 6071 | 
             
                #   exact case-sensitive match) encryption context to decrypt the data. An
         | 
| 5723 | 
            -
                #   encryption context is  | 
| 5724 | 
            -
                #    | 
| 6072 | 
            +
                #   encryption context is supported only on operations with symmetric
         | 
| 6073 | 
            +
                #   encryption KMS keys. On operations with symmetric encryption KMS keys,
         | 
| 6074 | 
            +
                #   an encryption context is optional, but it is strongly recommended.
         | 
| 5725 6075 | 
             
                #
         | 
| 5726 | 
            -
                #   For more information, see [Encryption  | 
| 6076 | 
            +
                #   For more information, see [Encryption context][1] in the *Key
         | 
| 5727 6077 | 
             
                #   Management Service Developer Guide*.
         | 
| 5728 6078 | 
             
                #
         | 
| 5729 6079 | 
             
                #
         | 
| @@ -5733,8 +6083,8 @@ module Aws::KMS | |
| 5733 6083 | 
             
                # @option params [String] :source_encryption_algorithm
         | 
| 5734 6084 | 
             
                #   Specifies the encryption algorithm that KMS will use to decrypt the
         | 
| 5735 6085 | 
             
                #   ciphertext before it is reencrypted. The default value,
         | 
| 5736 | 
            -
                #   `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric | 
| 5737 | 
            -
                #   keys.
         | 
| 6086 | 
            +
                #   `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric
         | 
| 6087 | 
            +
                #   encryption KMS keys.
         | 
| 5738 6088 | 
             
                #
         | 
| 5739 6089 | 
             
                #   Specify the same algorithm that was used to encrypt the ciphertext. If
         | 
| 5740 6090 | 
             
                #   you specify a different algorithm, the decrypt attempt fails.
         | 
| @@ -5746,7 +6096,7 @@ module Aws::KMS | |
| 5746 6096 | 
             
                #   Specifies the encryption algorithm that KMS will use to reecrypt the
         | 
| 5747 6097 | 
             
                #   data after it has decrypted it. The default value,
         | 
| 5748 6098 | 
             
                #   `SYMMETRIC_DEFAULT`, represents the encryption algorithm used for
         | 
| 5749 | 
            -
                #   symmetric KMS keys.
         | 
| 6099 | 
            +
                #   symmetric encryption KMS keys.
         | 
| 5750 6100 | 
             
                #
         | 
| 5751 6101 | 
             
                #   This parameter is required only when the destination KMS key is an
         | 
| 5752 6102 | 
             
                #   asymmetric KMS key.
         | 
| @@ -5837,7 +6187,7 @@ module Aws::KMS | |
| 5837 6187 | 
             
                # encrypt data in one Amazon Web Services Region and decrypt it in a
         | 
| 5838 6188 | 
             
                # different Amazon Web Services Region without re-encrypting the data or
         | 
| 5839 6189 | 
             
                # making a cross-Region call. For more information about multi-Region
         | 
| 5840 | 
            -
                # keys, see [ | 
| 6190 | 
            +
                # keys, see [Multi-Region keys in KMS][1] in the *Key Management Service
         | 
| 5841 6191 | 
             
                # Developer Guide*.
         | 
| 5842 6192 | 
             
                #
         | 
| 5843 6193 | 
             
                # A *replica key* is a fully-functional KMS key that can be used
         | 
| @@ -5848,8 +6198,8 @@ module Aws::KMS | |
| 5848 6198 | 
             
                # [automatic key rotation status][6]. KMS automatically synchronizes
         | 
| 5849 6199 | 
             
                # these shared properties among related multi-Region keys. All other
         | 
| 5850 6200 | 
             
                # properties of a replica key can differ, including its [key policy][7],
         | 
| 5851 | 
            -
                # [tags][8], [aliases][9], and [ | 
| 5852 | 
            -
                # for KMS keys apply to each primary key and replica key.
         | 
| 6201 | 
            +
                # [tags][8], [aliases][9], and [Key states of KMS keys][10]. KMS pricing
         | 
| 6202 | 
            +
                # and quotas for KMS keys apply to each primary key and replica key.
         | 
| 5853 6203 | 
             
                #
         | 
| 5854 6204 | 
             
                # When this operation completes, the new replica key has a transient key
         | 
| 5855 6205 | 
             
                # state of `Creating`. This key state changes to `Enabled` (or
         | 
| @@ -5859,9 +6209,17 @@ module Aws::KMS | |
| 5859 6209 | 
             
                # If you are creating and using the replica key programmatically, retry
         | 
| 5860 6210 | 
             
                # on `KMSInvalidStateException` or call `DescribeKey` to check its
         | 
| 5861 6211 | 
             
                # `KeyState` value before using it. For details about the `Creating` key
         | 
| 5862 | 
            -
                # state, see [Key  | 
| 5863 | 
            -
                #  | 
| 5864 | 
            -
                # | 
| 6212 | 
            +
                # state, see [Key states of KMS keys][10] in the *Key Management Service
         | 
| 6213 | 
            +
                # Developer Guide*.
         | 
| 6214 | 
            +
                #
         | 
| 6215 | 
            +
                # You cannot create more than one replica of a primary key in any
         | 
| 6216 | 
            +
                # Region. If the Region already includes a replica of the key you're
         | 
| 6217 | 
            +
                # trying to replicate, `ReplicateKey` returns an
         | 
| 6218 | 
            +
                # `AlreadyExistsException` error. If the key state of the existing
         | 
| 6219 | 
            +
                # replica is `PendingDeletion`, you can cancel the scheduled key
         | 
| 6220 | 
            +
                # deletion (CancelKeyDeletion) or wait for the key to be deleted. The
         | 
| 6221 | 
            +
                # new replica key you create will have the same [shared properties][11]
         | 
| 6222 | 
            +
                # as the original replica key.
         | 
| 5865 6223 | 
             
                #
         | 
| 5866 6224 | 
             
                # The CloudTrail log of a `ReplicateKey` operation records a
         | 
| 5867 6225 | 
             
                # `ReplicateKey` operation in the primary key's Region and a CreateKey
         | 
| @@ -5914,6 +6272,7 @@ module Aws::KMS | |
| 5914 6272 | 
             
                # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html
         | 
| 5915 6273 | 
             
                # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html
         | 
| 5916 6274 | 
             
                # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
         | 
| 6275 | 
            +
                # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-sync-properties
         | 
| 5917 6276 | 
             
                #
         | 
| 5918 6277 | 
             
                # @option params [required, String] :key_id
         | 
| 5919 6278 | 
             
                #   Identifies the multi-Region primary key that is being replicated. To
         | 
| @@ -5941,24 +6300,33 @@ module Aws::KMS | |
| 5941 6300 | 
             
                #   [KMS service endpoints][1] in the *Amazon Web Services General
         | 
| 5942 6301 | 
             
                #   Reference*.
         | 
| 5943 6302 | 
             
                #
         | 
| 6303 | 
            +
                #   <note markdown="1"> HMAC KMS keys are not supported in all Amazon Web Services Regions. If
         | 
| 6304 | 
            +
                #   you try to replicate an HMAC KMS key in an Amazon Web Services Region
         | 
| 6305 | 
            +
                #   in which HMAC keys are not supported, the `ReplicateKey` operation
         | 
| 6306 | 
            +
                #   returns an `UnsupportedOperationException`. For a list of Regions in
         | 
| 6307 | 
            +
                #   which HMAC KMS keys are supported, see [HMAC keys in KMS][2] in the
         | 
| 6308 | 
            +
                #   *Key Management Service Developer Guide*.
         | 
| 6309 | 
            +
                #
         | 
| 6310 | 
            +
                #    </note>
         | 
| 6311 | 
            +
                #
         | 
| 5944 6312 | 
             
                #   The replica must be in a different Amazon Web Services Region than its
         | 
| 5945 6313 | 
             
                #   primary key and other replicas of that primary key, but in the same
         | 
| 5946 6314 | 
             
                #   Amazon Web Services partition. KMS must be available in the replica
         | 
| 5947 6315 | 
             
                #   Region. If the Region is not enabled by default, the Amazon Web
         | 
| 5948 | 
            -
                #   Services account must be enabled in the Region.
         | 
| 5949 | 
            -
                #
         | 
| 5950 | 
            -
                #    | 
| 5951 | 
            -
                #    | 
| 5952 | 
            -
                #    | 
| 5953 | 
            -
                #    | 
| 5954 | 
            -
                #   Web Services General Reference*.
         | 
| 6316 | 
            +
                #   Services account must be enabled in the Region. For information about
         | 
| 6317 | 
            +
                #   Amazon Web Services partitions, see [Amazon Resource Names (ARNs)][3]
         | 
| 6318 | 
            +
                #   in the *Amazon Web Services General Reference*. For information about
         | 
| 6319 | 
            +
                #   enabling and disabling Regions, see [Enabling a Region][4] and
         | 
| 6320 | 
            +
                #   [Disabling a Region][5] in the *Amazon Web Services General
         | 
| 6321 | 
            +
                #   Reference*.
         | 
| 5955 6322 | 
             
                #
         | 
| 5956 6323 | 
             
                #
         | 
| 5957 6324 | 
             
                #
         | 
| 5958 6325 | 
             
                #   [1]: https://docs.aws.amazon.com/general/latest/gr/kms.html#kms_region
         | 
| 5959 | 
            -
                #   [2]: https://docs.aws.amazon.com/ | 
| 5960 | 
            -
                #   [3]: https://docs.aws.amazon.com/general/latest/gr/ | 
| 5961 | 
            -
                #   [4]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage- | 
| 6326 | 
            +
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 6327 | 
            +
                #   [3]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
         | 
| 6328 | 
            +
                #   [4]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable
         | 
| 6329 | 
            +
                #   [5]: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-disable
         | 
| 5962 6330 | 
             
                #
         | 
| 5963 6331 | 
             
                # @option params [String] :policy
         | 
| 5964 6332 | 
             
                #   The key policy to attach to the KMS key. This parameter is optional.
         | 
| @@ -6032,8 +6400,8 @@ module Aws::KMS | |
| 6032 6400 | 
             
                #   TagResource operation.
         | 
| 6033 6401 | 
             
                #
         | 
| 6034 6402 | 
             
                #   <note markdown="1"> Tagging or untagging a KMS key can allow or deny permission to the KMS
         | 
| 6035 | 
            -
                #   key. For details, see [ | 
| 6036 | 
            -
                #    | 
| 6403 | 
            +
                #   key. For details, see [ABAC in KMS][1] in the *Key Management Service
         | 
| 6404 | 
            +
                #   Developer Guide*.
         | 
| 6037 6405 | 
             
                #
         | 
| 6038 6406 | 
             
                #    </note>
         | 
| 6039 6407 | 
             
                #
         | 
| @@ -6138,7 +6506,7 @@ module Aws::KMS | |
| 6138 6506 | 
             
                #   resp.replica_key_metadata.creation_date #=> Time
         | 
| 6139 6507 | 
             
                #   resp.replica_key_metadata.enabled #=> Boolean
         | 
| 6140 6508 | 
             
                #   resp.replica_key_metadata.description #=> String
         | 
| 6141 | 
            -
                #   resp.replica_key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT"
         | 
| 6509 | 
            +
                #   resp.replica_key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
         | 
| 6142 6510 | 
             
                #   resp.replica_key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
         | 
| 6143 6511 | 
             
                #   resp.replica_key_metadata.deletion_date #=> Time
         | 
| 6144 6512 | 
             
                #   resp.replica_key_metadata.valid_to #=> Time
         | 
| @@ -6147,8 +6515,8 @@ module Aws::KMS | |
| 6147 6515 | 
             
                #   resp.replica_key_metadata.cloud_hsm_cluster_id #=> String
         | 
| 6148 6516 | 
             
                #   resp.replica_key_metadata.expiration_model #=> String, one of "KEY_MATERIAL_EXPIRES", "KEY_MATERIAL_DOES_NOT_EXPIRE"
         | 
| 6149 6517 | 
             
                #   resp.replica_key_metadata.key_manager #=> String, one of "AWS", "CUSTOMER"
         | 
| 6150 | 
            -
                #   resp.replica_key_metadata.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 6151 | 
            -
                #   resp.replica_key_metadata.key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
         | 
| 6518 | 
            +
                #   resp.replica_key_metadata.customer_master_key_spec #=> String, one of "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"
         | 
| 6519 | 
            +
                #   resp.replica_key_metadata.key_spec #=> String, one of "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"
         | 
| 6152 6520 | 
             
                #   resp.replica_key_metadata.encryption_algorithms #=> Array
         | 
| 6153 6521 | 
             
                #   resp.replica_key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
         | 
| 6154 6522 | 
             
                #   resp.replica_key_metadata.signing_algorithms #=> Array
         | 
| @@ -6161,6 +6529,8 @@ module Aws::KMS | |
| 6161 6529 | 
             
                #   resp.replica_key_metadata.multi_region_configuration.replica_keys[0].arn #=> String
         | 
| 6162 6530 | 
             
                #   resp.replica_key_metadata.multi_region_configuration.replica_keys[0].region #=> String
         | 
| 6163 6531 | 
             
                #   resp.replica_key_metadata.pending_deletion_window_in_days #=> Integer
         | 
| 6532 | 
            +
                #   resp.replica_key_metadata.mac_algorithms #=> Array
         | 
| 6533 | 
            +
                #   resp.replica_key_metadata.mac_algorithms[0] #=> String, one of "HMAC_SHA_224", "HMAC_SHA_256", "HMAC_SHA_384", "HMAC_SHA_512"
         | 
| 6164 6534 | 
             
                #   resp.replica_policy #=> String
         | 
| 6165 6535 | 
             
                #   resp.replica_tags #=> Array
         | 
| 6166 6536 | 
             
                #   resp.replica_tags[0].tag_key #=> String
         | 
| @@ -6182,14 +6552,13 @@ module Aws::KMS | |
| 6182 6552 | 
             
                #
         | 
| 6183 6553 | 
             
                # This operation can be called by the *retiring principal* for a grant,
         | 
| 6184 6554 | 
             
                # by the *grantee principal* if the grant allows the `RetireGrant`
         | 
| 6185 | 
            -
                # operation, and by the Amazon Web Services account  | 
| 6186 | 
            -
                #  | 
| 6187 | 
            -
                #  | 
| 6188 | 
            -
                #  | 
| 6189 | 
            -
                # Developer Guide*.
         | 
| 6555 | 
            +
                # operation, and by the Amazon Web Services account in which the grant
         | 
| 6556 | 
            +
                # is created. It can also be called by principals to whom permission for
         | 
| 6557 | 
            +
                # retiring a grant is delegated. For details, see [Retiring and revoking
         | 
| 6558 | 
            +
                # grants][2] in the *Key Management Service Developer Guide*.
         | 
| 6190 6559 | 
             
                #
         | 
| 6191 6560 | 
             
                # For detailed information about grants, including grant terminology,
         | 
| 6192 | 
            -
                # see [ | 
| 6561 | 
            +
                # see [Grants in KMS][3] in the <i> <i>Key Management Service Developer
         | 
| 6193 6562 | 
             
                # Guide</i> </i>. For examples of working with grants in several
         | 
| 6194 6563 | 
             
                # programming languages, see [Programming grants][4].
         | 
| 6195 6564 | 
             
                #
         | 
| @@ -6287,7 +6656,7 @@ module Aws::KMS | |
| 6287 6656 | 
             
                # Service Developer Guide</i> </i>.
         | 
| 6288 6657 | 
             
                #
         | 
| 6289 6658 | 
             
                # For detailed information about grants, including grant terminology,
         | 
| 6290 | 
            -
                # see [ | 
| 6659 | 
            +
                # see [Grants in KMS][3] in the <i> <i>Key Management Service Developer
         | 
| 6291 6660 | 
             
                # Guide</i> </i>. For examples of working with grants in several
         | 
| 6292 6661 | 
             
                # programming languages, see [Programming grants][4].
         | 
| 6293 6662 | 
             
                #
         | 
| @@ -6404,8 +6773,8 @@ module Aws::KMS | |
| 6404 6773 | 
             
                # Guide*.
         | 
| 6405 6774 | 
             
                #
         | 
| 6406 6775 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 6407 | 
            -
                # key state. For details, see [Key  | 
| 6408 | 
            -
                #  | 
| 6776 | 
            +
                # key state. For details, see [Key states of KMS keys][5] in the *Key
         | 
| 6777 | 
            +
                # Management Service Developer Guide*.
         | 
| 6409 6778 | 
             
                #
         | 
| 6410 6779 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 6411 6780 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -6499,11 +6868,11 @@ module Aws::KMS | |
| 6499 6868 | 
             
                end
         | 
| 6500 6869 |  | 
| 6501 6870 | 
             
                # Creates a [digital signature][1] for a message or message digest by
         | 
| 6502 | 
            -
                # using the private key in an asymmetric KMS key. To verify the
         | 
| 6871 | 
            +
                # using the private key in an asymmetric signing KMS key. To verify the
         | 
| 6503 6872 | 
             
                # signature, use the Verify operation, or use the public key in the same
         | 
| 6504 | 
            -
                # asymmetric KMS key outside of KMS. For information about  | 
| 6505 | 
            -
                #  | 
| 6506 | 
            -
                #  | 
| 6873 | 
            +
                # asymmetric KMS key outside of KMS. For information about asymmetric
         | 
| 6874 | 
            +
                # KMS keys, see [Asymmetric KMS keys][2] in the *Key Management Service
         | 
| 6875 | 
            +
                # Developer Guide*.
         | 
| 6507 6876 | 
             
                #
         | 
| 6508 6877 | 
             
                # Digital signatures are generated and verified by using asymmetric key
         | 
| 6509 6878 | 
             
                # pair, such as an RSA or ECC pair that is represented by an asymmetric
         | 
| @@ -6537,8 +6906,8 @@ module Aws::KMS | |
| 6537 6906 | 
             
                # KMS.
         | 
| 6538 6907 | 
             
                #
         | 
| 6539 6908 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 6540 | 
            -
                # key state. For details, see [Key  | 
| 6541 | 
            -
                #  | 
| 6909 | 
            +
                # key state. For details, see [Key states of KMS keys][3] in the *Key
         | 
| 6910 | 
            +
                # Management Service Developer Guide*.
         | 
| 6542 6911 | 
             
                #
         | 
| 6543 6912 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 6544 6913 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -6665,8 +7034,8 @@ module Aws::KMS | |
| 6665 7034 | 
             
                # Adds or edits tags on a [customer managed key][1].
         | 
| 6666 7035 | 
             
                #
         | 
| 6667 7036 | 
             
                # <note markdown="1"> Tagging or untagging a KMS key can allow or deny permission to the KMS
         | 
| 6668 | 
            -
                # key. For details, see [ | 
| 6669 | 
            -
                #  | 
| 7037 | 
            +
                # key. For details, see [ABAC in KMS][2] in the *Key Management Service
         | 
| 7038 | 
            +
                # Developer Guide*.
         | 
| 6670 7039 | 
             
                #
         | 
| 6671 7040 | 
             
                #  </note>
         | 
| 6672 7041 | 
             
                #
         | 
| @@ -6688,8 +7057,8 @@ module Aws::KMS | |
| 6688 7057 | 
             
                # General Reference*.
         | 
| 6689 7058 | 
             
                #
         | 
| 6690 7059 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 6691 | 
            -
                # key state. For details, see [Key  | 
| 6692 | 
            -
                #  | 
| 7060 | 
            +
                # key state. For details, see [Key states of KMS keys][9] in the *Key
         | 
| 7061 | 
            +
                # Management Service Developer Guide*.
         | 
| 6693 7062 | 
             
                #
         | 
| 6694 7063 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 6695 7064 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -6786,8 +7155,8 @@ module Aws::KMS | |
| 6786 7155 | 
             
                # specify the tag key and the KMS key.
         | 
| 6787 7156 | 
             
                #
         | 
| 6788 7157 | 
             
                # <note markdown="1"> Tagging or untagging a KMS key can allow or deny permission to the KMS
         | 
| 6789 | 
            -
                # key. For details, see [ | 
| 6790 | 
            -
                #  | 
| 7158 | 
            +
                # key. For details, see [ABAC in KMS][2] in the *Key Management Service
         | 
| 7159 | 
            +
                # Developer Guide*.
         | 
| 6791 7160 | 
             
                #
         | 
| 6792 7161 | 
             
                #  </note>
         | 
| 6793 7162 | 
             
                #
         | 
| @@ -6802,8 +7171,8 @@ module Aws::KMS | |
| 6802 7171 | 
             
                # General Reference*.
         | 
| 6803 7172 | 
             
                #
         | 
| 6804 7173 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 6805 | 
            -
                # key state. For details, see [Key  | 
| 6806 | 
            -
                #  | 
| 7174 | 
            +
                # key state. For details, see [Key states of KMS keys][5] in the *Key
         | 
| 7175 | 
            +
                # Management Service Developer Guide*.
         | 
| 6807 7176 | 
             
                #
         | 
| 6808 7177 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 6809 7178 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -6884,8 +7253,8 @@ module Aws::KMS | |
| 6884 7253 | 
             
                # Amazon Web Services account and Region.
         | 
| 6885 7254 | 
             
                #
         | 
| 6886 7255 | 
             
                # <note markdown="1"> Adding, deleting, or updating an alias can allow or deny permission to
         | 
| 6887 | 
            -
                # the KMS key. For details, see [ | 
| 6888 | 
            -
                #  | 
| 7256 | 
            +
                # the KMS key. For details, see [ABAC in KMS][1] in the *Key Management
         | 
| 7257 | 
            +
                # Service Developer Guide*.
         | 
| 6889 7258 | 
             
                #
         | 
| 6890 7259 | 
             
                #  </note>
         | 
| 6891 7260 | 
             
                #
         | 
| @@ -6907,8 +7276,8 @@ module Aws::KMS | |
| 6907 7276 | 
             
                # ListAliases operation.
         | 
| 6908 7277 | 
             
                #
         | 
| 6909 7278 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 6910 | 
            -
                # key state. For details, see [Key  | 
| 6911 | 
            -
                #  | 
| 7279 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 7280 | 
            +
                # Management Service Developer Guide*.
         | 
| 6912 7281 | 
             
                #
         | 
| 6913 7282 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 6914 7283 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -7173,8 +7542,8 @@ module Aws::KMS | |
| 7173 7542 | 
             
                # key, use DescribeKey.
         | 
| 7174 7543 | 
             
                #
         | 
| 7175 7544 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 7176 | 
            -
                # key state. For details, see [Key  | 
| 7177 | 
            -
                #  | 
| 7545 | 
            +
                # key state. For details, see [Key states of KMS keys][1] in the *Key
         | 
| 7546 | 
            +
                # Management Service Developer Guide*.
         | 
| 7178 7547 | 
             
                #
         | 
| 7179 7548 | 
             
                # **Cross-account use**\: No. You cannot perform this operation on a KMS
         | 
| 7180 7549 | 
             
                # key in a different Amazon Web Services account.
         | 
| @@ -7256,7 +7625,7 @@ module Aws::KMS | |
| 7256 7625 | 
             
                # encrypt data in one Amazon Web Services Region and decrypt it in a
         | 
| 7257 7626 | 
             
                # different Amazon Web Services Region without re-encrypting the data or
         | 
| 7258 7627 | 
             
                # making a cross-Region call. For more information about multi-Region
         | 
| 7259 | 
            -
                # keys, see [ | 
| 7628 | 
            +
                # keys, see [Multi-Region keys in KMS][2] in the *Key Management Service
         | 
| 7260 7629 | 
             
                # Developer Guide*.
         | 
| 7261 7630 | 
             
                #
         | 
| 7262 7631 | 
             
                # The *primary key* of a multi-Region key is the source for properties
         | 
| @@ -7286,9 +7655,8 @@ module Aws::KMS | |
| 7286 7655 | 
             
                # can use the keys in cryptographic operations, but you cannot replicate
         | 
| 7287 7656 | 
             
                # the new primary key or perform certain management operations, such as
         | 
| 7288 7657 | 
             
                # enabling or disabling these keys. For details about the `Updating` key
         | 
| 7289 | 
            -
                # state, see [Key  | 
| 7290 | 
            -
                #  | 
| 7291 | 
            -
                # Service Developer Guide*.
         | 
| 7658 | 
            +
                # state, see [Key states of KMS keys][9] in the *Key Management Service
         | 
| 7659 | 
            +
                # Developer Guide*.
         | 
| 7292 7660 | 
             
                #
         | 
| 7293 7661 | 
             
                # This operation does not return any output. To verify that primary key
         | 
| 7294 7662 | 
             
                # is changed, use the DescribeKey operation.
         | 
| @@ -7321,6 +7689,7 @@ module Aws::KMS | |
| 7321 7689 | 
             
                # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-origin
         | 
| 7322 7690 | 
             
                # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
         | 
| 7323 7691 | 
             
                # [8]: https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html
         | 
| 7692 | 
            +
                # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
         | 
| 7324 7693 | 
             
                #
         | 
| 7325 7694 | 
             
                # @option params [required, String] :key_id
         | 
| 7326 7695 | 
             
                #   Identifies the current primary key. When the operation completes, this
         | 
| @@ -7377,9 +7746,9 @@ module Aws::KMS | |
| 7377 7746 | 
             
                #
         | 
| 7378 7747 | 
             
                # A digital signature is generated by using the private key in an
         | 
| 7379 7748 | 
             
                # asymmetric KMS key. The signature is verified by using the public key
         | 
| 7380 | 
            -
                # in the same asymmetric KMS key. For information about  | 
| 7381 | 
            -
                #  | 
| 7382 | 
            -
                #  | 
| 7749 | 
            +
                # in the same asymmetric KMS key. For information about asymmetric KMS
         | 
| 7750 | 
            +
                # keys, see [Asymmetric KMS keys][1] in the *Key Management Service
         | 
| 7751 | 
            +
                # Developer Guide*.
         | 
| 7383 7752 | 
             
                #
         | 
| 7384 7753 | 
             
                # To verify a digital signature, you can use the `Verify` operation.
         | 
| 7385 7754 | 
             
                # Specify the same asymmetric KMS key, message, and signing algorithm
         | 
| @@ -7396,8 +7765,8 @@ module Aws::KMS | |
| 7396 7765 | 
             
                # signatures.
         | 
| 7397 7766 | 
             
                #
         | 
| 7398 7767 | 
             
                # The KMS key that you use for this operation must be in a compatible
         | 
| 7399 | 
            -
                # key state. For details, see [Key  | 
| 7400 | 
            -
                #  | 
| 7768 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 7769 | 
            +
                # Management Service Developer Guide*.
         | 
| 7401 7770 | 
             
                #
         | 
| 7402 7771 | 
             
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 7403 7772 | 
             
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| @@ -7499,7 +7868,7 @@ module Aws::KMS | |
| 7499 7868 | 
             
                #   resp.to_h outputs the following:
         | 
| 7500 7869 | 
             
                #   {
         | 
| 7501 7870 | 
             
                #     key_id: "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ARN of the asymmetric KMS key that was used to verify the digital signature.
         | 
| 7502 | 
            -
                #     signature_valid: true, # Indicates  | 
| 7871 | 
            +
                #     signature_valid: true, # A value of 'true' Indicates that the signature was verified. If verification fails, the call to Verify fails.
         | 
| 7503 7872 | 
             
                #     signing_algorithm: "ECDSA_SHA_384", # The signing algorithm that was used to verify the signature.
         | 
| 7504 7873 | 
             
                #   }
         | 
| 7505 7874 | 
             
                #
         | 
| @@ -7529,6 +7898,128 @@ module Aws::KMS | |
| 7529 7898 | 
             
                  req.send_request(options)
         | 
| 7530 7899 | 
             
                end
         | 
| 7531 7900 |  | 
| 7901 | 
            +
                # Verifies the hash-based message authentication code (HMAC) for a
         | 
| 7902 | 
            +
                # specified message, HMAC KMS key, and MAC algorithm. To verify the
         | 
| 7903 | 
            +
                # HMAC, `VerifyMac` computes an HMAC using the message, HMAC KMS key,
         | 
| 7904 | 
            +
                # and MAC algorithm that you specify, and compares the computed HMAC to
         | 
| 7905 | 
            +
                # the HMAC that you specify. If the HMACs are identical, the
         | 
| 7906 | 
            +
                # verification succeeds; otherwise, it fails.
         | 
| 7907 | 
            +
                #
         | 
| 7908 | 
            +
                # Verification indicates that the message hasn't changed since the HMAC
         | 
| 7909 | 
            +
                # was calculated, and the specified key was used to generate and verify
         | 
| 7910 | 
            +
                # the HMAC.
         | 
| 7911 | 
            +
                #
         | 
| 7912 | 
            +
                # This operation is part of KMS support for HMAC KMS keys. For details,
         | 
| 7913 | 
            +
                # see [HMAC keys in KMS][1] in the *Key Management Service Developer
         | 
| 7914 | 
            +
                # Guide*.
         | 
| 7915 | 
            +
                #
         | 
| 7916 | 
            +
                # The KMS key that you use for this operation must be in a compatible
         | 
| 7917 | 
            +
                # key state. For details, see [Key states of KMS keys][2] in the *Key
         | 
| 7918 | 
            +
                # Management Service Developer Guide*.
         | 
| 7919 | 
            +
                #
         | 
| 7920 | 
            +
                # **Cross-account use**\: Yes. To perform this operation with a KMS key
         | 
| 7921 | 
            +
                # in a different Amazon Web Services account, specify the key ARN or
         | 
| 7922 | 
            +
                # alias ARN in the value of the `KeyId` parameter.
         | 
| 7923 | 
            +
                #
         | 
| 7924 | 
            +
                # **Required permissions**\: [kms:VerifyMac][3] (key policy)
         | 
| 7925 | 
            +
                #
         | 
| 7926 | 
            +
                # **Related operations**\: GenerateMac
         | 
| 7927 | 
            +
                #
         | 
| 7928 | 
            +
                #
         | 
| 7929 | 
            +
                #
         | 
| 7930 | 
            +
                # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
         | 
| 7931 | 
            +
                # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
         | 
| 7932 | 
            +
                # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
         | 
| 7933 | 
            +
                #
         | 
| 7934 | 
            +
                # @option params [required, String, StringIO, File] :message
         | 
| 7935 | 
            +
                #   The message that will be used in the verification. Enter the same
         | 
| 7936 | 
            +
                #   message that was used to generate the HMAC.
         | 
| 7937 | 
            +
                #
         | 
| 7938 | 
            +
                #   GenerateMac and `VerifyMac` do not provide special handling for
         | 
| 7939 | 
            +
                #   message digests. If you generated an HMAC for a hash digest of a
         | 
| 7940 | 
            +
                #   message, you must verify the HMAC for the same hash digest.
         | 
| 7941 | 
            +
                #
         | 
| 7942 | 
            +
                # @option params [required, String] :key_id
         | 
| 7943 | 
            +
                #   The KMS key that will be used in the verification.
         | 
| 7944 | 
            +
                #
         | 
| 7945 | 
            +
                #   Enter a key ID of the KMS key that was used to generate the HMAC. If
         | 
| 7946 | 
            +
                #   you identify a different KMS key, the `VerifyMac` operation fails.
         | 
| 7947 | 
            +
                #
         | 
| 7948 | 
            +
                # @option params [required, String] :mac_algorithm
         | 
| 7949 | 
            +
                #   The MAC algorithm that will be used in the verification. Enter the
         | 
| 7950 | 
            +
                #   same MAC algorithm that was used to compute the HMAC. This algorithm
         | 
| 7951 | 
            +
                #   must be supported by the HMAC KMS key identified by the `KeyId`
         | 
| 7952 | 
            +
                #   parameter.
         | 
| 7953 | 
            +
                #
         | 
| 7954 | 
            +
                # @option params [required, String, StringIO, File] :mac
         | 
| 7955 | 
            +
                #   The HMAC to verify. Enter the HMAC that was generated by the
         | 
| 7956 | 
            +
                #   GenerateMac operation when you specified the same message, HMAC KMS
         | 
| 7957 | 
            +
                #   key, and MAC algorithm as the values specified in this request.
         | 
| 7958 | 
            +
                #
         | 
| 7959 | 
            +
                # @option params [Array<String>] :grant_tokens
         | 
| 7960 | 
            +
                #   A list of grant tokens.
         | 
| 7961 | 
            +
                #
         | 
| 7962 | 
            +
                #   Use a grant token when your permission to call this operation comes
         | 
| 7963 | 
            +
                #   from a new grant that has not yet achieved *eventual consistency*. For
         | 
| 7964 | 
            +
                #   more information, see [Grant token][1] and [Using a grant token][2] in
         | 
| 7965 | 
            +
                #   the *Key Management Service Developer Guide*.
         | 
| 7966 | 
            +
                #
         | 
| 7967 | 
            +
                #
         | 
| 7968 | 
            +
                #
         | 
| 7969 | 
            +
                #   [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
         | 
| 7970 | 
            +
                #   [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
         | 
| 7971 | 
            +
                #
         | 
| 7972 | 
            +
                # @return [Types::VerifyMacResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
         | 
| 7973 | 
            +
                #
         | 
| 7974 | 
            +
                #   * {Types::VerifyMacResponse#key_id #key_id} => String
         | 
| 7975 | 
            +
                #   * {Types::VerifyMacResponse#mac_valid #mac_valid} => Boolean
         | 
| 7976 | 
            +
                #   * {Types::VerifyMacResponse#mac_algorithm #mac_algorithm} => String
         | 
| 7977 | 
            +
                #
         | 
| 7978 | 
            +
                #
         | 
| 7979 | 
            +
                # @example Example: To verify an HMAC
         | 
| 7980 | 
            +
                #
         | 
| 7981 | 
            +
                #   # This example verifies an HMAC for a particular message, HMAC KMS keys, and MAC algorithm. A value of 'true' in the
         | 
| 7982 | 
            +
                #   # MacValid value in the response indicates that the HMAC is valid.
         | 
| 7983 | 
            +
                #
         | 
| 7984 | 
            +
                #   resp = client.verify_mac({
         | 
| 7985 | 
            +
                #     key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The HMAC KMS key input to the HMAC algorithm.
         | 
| 7986 | 
            +
                #     mac: "<HMAC_TAG>", # The HMAC to be verified.
         | 
| 7987 | 
            +
                #     mac_algorithm: "HMAC_SHA_384", # The HMAC algorithm requested for the operation.
         | 
| 7988 | 
            +
                #     message: "Hello World", # The message input to the HMAC algorithm.
         | 
| 7989 | 
            +
                #   })
         | 
| 7990 | 
            +
                #
         | 
| 7991 | 
            +
                #   resp.to_h outputs the following:
         | 
| 7992 | 
            +
                #   {
         | 
| 7993 | 
            +
                #     key_id: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The key ARN of the HMAC key used in the operation.
         | 
| 7994 | 
            +
                #     mac_algorithm: "HMAC_SHA_384", # The HMAC algorithm used in the operation.
         | 
| 7995 | 
            +
                #     mac_valid: true, # A value of 'true' indicates that verification succeeded. If verification fails, the call to VerifyMac fails.
         | 
| 7996 | 
            +
                #   }
         | 
| 7997 | 
            +
                #
         | 
| 7998 | 
            +
                # @example Request syntax with placeholder values
         | 
| 7999 | 
            +
                #
         | 
| 8000 | 
            +
                #   resp = client.verify_mac({
         | 
| 8001 | 
            +
                #     message: "data", # required
         | 
| 8002 | 
            +
                #     key_id: "KeyIdType", # required
         | 
| 8003 | 
            +
                #     mac_algorithm: "HMAC_SHA_224", # required, accepts HMAC_SHA_224, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA_512
         | 
| 8004 | 
            +
                #     mac: "data", # required
         | 
| 8005 | 
            +
                #     grant_tokens: ["GrantTokenType"],
         | 
| 8006 | 
            +
                #   })
         | 
| 8007 | 
            +
                #
         | 
| 8008 | 
            +
                # @example Response structure
         | 
| 8009 | 
            +
                #
         | 
| 8010 | 
            +
                #   resp.key_id #=> String
         | 
| 8011 | 
            +
                #   resp.mac_valid #=> Boolean
         | 
| 8012 | 
            +
                #   resp.mac_algorithm #=> String, one of "HMAC_SHA_224", "HMAC_SHA_256", "HMAC_SHA_384", "HMAC_SHA_512"
         | 
| 8013 | 
            +
                #
         | 
| 8014 | 
            +
                # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/VerifyMac AWS API Documentation
         | 
| 8015 | 
            +
                #
         | 
| 8016 | 
            +
                # @overload verify_mac(params = {})
         | 
| 8017 | 
            +
                # @param [Hash] params ({})
         | 
| 8018 | 
            +
                def verify_mac(params = {}, options = {})
         | 
| 8019 | 
            +
                  req = build_request(:verify_mac, params)
         | 
| 8020 | 
            +
                  req.send_request(options)
         | 
| 8021 | 
            +
                end
         | 
| 8022 | 
            +
             | 
| 7532 8023 | 
             
                # @!endgroup
         | 
| 7533 8024 |  | 
| 7534 8025 | 
             
                # @param params ({})
         | 
| @@ -7542,7 +8033,7 @@ module Aws::KMS | |
| 7542 8033 | 
             
                    params: params,
         | 
| 7543 8034 | 
             
                    config: config)
         | 
| 7544 8035 | 
             
                  context[:gem_name] = 'aws-sdk-kms'
         | 
| 7545 | 
            -
                  context[:gem_version] = '1. | 
| 8036 | 
            +
                  context[:gem_version] = '1.56.0'
         | 
| 7546 8037 | 
             
                  Seahorse::Client::Request.new(handlers, context)
         | 
| 7547 8038 | 
             
                end
         | 
| 7548 8039 |  |