aws-sdk-kms 1.81.0 → 1.87.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58a473bbce762cc59b305678921f3fc9cc407cccf4ad4be2463116e7682a4c98
4
- data.tar.gz: 38831f8cd062aaf791f6c5add9a66a7034b6f0f4711e600593fd7b279d6be38f
3
+ metadata.gz: 50000251533fd20e204e3e643e931c1f97e125cd570a88839fca5311828703de
4
+ data.tar.gz: d560150d4ad044e5f11a9ceb445673861f3d68100f0ed163a87ff8af673a7da8
5
5
  SHA512:
6
- metadata.gz: 243bea0b6cee595d6e100df13503e689d83a22434874962cdca09b81fdd98bd420786476ce270981d071821f439af0529c15e5737d85e35f55816ac0644dea8d
7
- data.tar.gz: 994d51430b4a3da2a9faa8fb27730d221f65f416b918d01d76036ad10c4f10f2415fd397596929ef728873fd7589b89cc76e7da2a2883e5b04d30e39ccf31b74
6
+ metadata.gz: 4f611f853c420c0344493c91e962fc1f6f471b279731aab9247e9189c934e53c4cb264a09a4b51890162b0d4cd82ee8995dd948254ec4ff1aaff79a8d1a28a17
7
+ data.tar.gz: 9db4f65ab02a1d3be6cbcffd54536388b936c0d1038e3dedf754880d773038f1dd8593f5f573c06e9ff00dec2df62bc9cc5eba8462e459a2f9225713453f4273
data/CHANGELOG.md CHANGED
@@ -1,6 +1,36 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.87.0 (2024-06-25)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ 1.86.0 (2024-06-24)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
14
+ 1.85.0 (2024-06-17)
15
+ ------------------
16
+
17
+ * Feature - Updating SDK example for KMS DeriveSharedSecret API.
18
+
19
+ 1.84.0 (2024-06-13)
20
+ ------------------
21
+
22
+ * Feature - This feature allows customers to use their keys stored in KMS to derive a shared secret which can then be used to establish a secured channel for communication, provide proof of possession, or establish trust with other parties.
23
+
24
+ 1.83.0 (2024-06-05)
25
+ ------------------
26
+
27
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
28
+
29
+ 1.82.0 (2024-05-22)
30
+ ------------------
31
+
32
+ * Feature - This release includes feature to import customer's asymmetric (RSA, ECC and SM2) and HMAC keys into KMS in China.
33
+
4
34
  1.81.0 (2024-05-13)
5
35
  ------------------
6
36
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.81.0
1
+ 1.87.0
@@ -89,6 +89,11 @@ module Aws::KMS
89
89
 
90
90
  # @overload initialize(options)
91
91
  # @param [Hash] options
92
+ #
93
+ # @option options [Array<Seahorse::Client::Plugin>] :plugins ([]])
94
+ # A list of plugins to apply to the client. Each plugin is either a
95
+ # class name or an instance of a plugin class.
96
+ #
92
97
  # @option options [required, Aws::CredentialProvider] :credentials
93
98
  # Your AWS credentials. This can be an instance of any one of the
94
99
  # following classes:
@@ -209,7 +214,6 @@ module Aws::KMS
209
214
  # 'https://example.com'
210
215
  # 'http://example.com:123'
211
216
  #
212
- #
213
217
  # @option options [Integer] :endpoint_cache_max_entries (1000)
214
218
  # Used for the maximum size limit of the LRU cache storing endpoints data
215
219
  # for endpoint discovery enabled operations. Defaults to 1000.
@@ -298,7 +302,6 @@ module Aws::KMS
298
302
  # throttling. This is a provisional mode that may change behavior
299
303
  # in the future.
300
304
  #
301
- #
302
305
  # @option options [String] :sdk_ua_app_id
303
306
  # A unique and opaque application ID that is appended to the
304
307
  # User-Agent header as app/sdk_ua_app_id. It should have a
@@ -311,13 +314,10 @@ module Aws::KMS
311
314
  #
312
315
  # @option options [Boolean] :simple_json (false)
313
316
  # Disables request parameter conversion, validation, and formatting.
314
- # Also disable response data type conversions. This option is useful
315
- # when you want to ensure the highest level of performance by
316
- # avoiding overhead of walking request parameters and response data
317
- # structures.
318
- #
319
- # When `:simple_json` is enabled, the request parameters hash must
320
- # be formatted exactly as the DynamoDB API expects.
317
+ # Also disables response data type conversions. The request parameters
318
+ # hash must be formatted exactly as the API expects.This option is useful
319
+ # when you want to ensure the highest level of performance by avoiding
320
+ # overhead of walking request parameters and response data structures.
321
321
  #
322
322
  # @option options [Boolean] :stub_responses (false)
323
323
  # Causes the client to return stubbed responses. By default
@@ -1421,7 +1421,7 @@ module Aws::KMS
1421
1421
  # key_id: "KeyIdType", # required
1422
1422
  # grantee_principal: "PrincipalIdType", # required
1423
1423
  # retiring_principal: "PrincipalIdType",
1424
- # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext, GenerateMac, VerifyMac
1424
+ # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext, GenerateMac, VerifyMac, DeriveSharedSecret
1425
1425
  # constraints: {
1426
1426
  # encryption_context_subset: {
1427
1427
  # "EncryptionContextKey" => "EncryptionContextValue",
@@ -1508,12 +1508,17 @@ module Aws::KMS
1508
1508
  # key pair, or an SM2 key pair (China Regions only). The private key
1509
1509
  # in an asymmetric KMS key never leaves KMS unencrypted. However, you
1510
1510
  # can use the GetPublicKey operation to download the public key so it
1511
- # can be used outside of KMS. KMS keys with RSA or SM2 key pairs can
1512
- # be used to encrypt or decrypt data or sign and verify messages (but
1513
- # not both). KMS keys with ECC key pairs can be used only to sign and
1514
- # verify messages. For information about asymmetric KMS keys, see
1515
- # [Asymmetric KMS keys][3] in the *Key Management Service Developer
1516
- # Guide*.
1511
+ # can be used outside of KMS. Each KMS key can have only one key
1512
+ # usage. KMS keys with RSA key pairs can be used to encrypt and
1513
+ # decrypt data or sign and verify messages (but not both). KMS keys
1514
+ # with NIST-recommended ECC key pairs can be used to sign and verify
1515
+ # messages or derive shared secrets (but not both). KMS keys with
1516
+ # `ECC_SECG_P256K1` can be used only to sign and verify messages. KMS
1517
+ # keys with SM2 key pairs (China Regions only) can be used to either
1518
+ # encrypt and decrypt data, sign and verify messages, or derive shared
1519
+ # secrets (you must choose one key usage type). For information about
1520
+ # asymmetric KMS keys, see [Asymmetric KMS keys][3] in the *Key
1521
+ # Management Service Developer Guide*.
1517
1522
  #
1518
1523
  #
1519
1524
  #
@@ -1735,14 +1740,17 @@ module Aws::KMS
1735
1740
  #
1736
1741
  # * For HMAC KMS keys (symmetric), specify `GENERATE_VERIFY_MAC`.
1737
1742
  #
1738
- # * For asymmetric KMS keys with RSA key material, specify
1743
+ # * For asymmetric KMS keys with RSA key pairs, specify
1739
1744
  # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
1740
1745
  #
1741
- # * For asymmetric KMS keys with ECC key material, specify
1746
+ # * For asymmetric KMS keys with NIST-recommended elliptic curve key
1747
+ # pairs, specify `SIGN_VERIFY` or `KEY_AGREEMENT`.
1748
+ #
1749
+ # * For asymmetric KMS keys with `ECC_SECG_P256K1` key pairs specify
1742
1750
  # `SIGN_VERIFY`.
1743
1751
  #
1744
- # * For asymmetric KMS keys with SM2 key material (China Regions only),
1745
- # specify `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
1752
+ # * For asymmetric KMS keys with SM2 key pairs (China Regions only),
1753
+ # specify `ENCRYPT_DECRYPT`, `SIGN_VERIFY`, or `KEY_AGREEMENT`.
1746
1754
  #
1747
1755
  #
1748
1756
  #
@@ -1795,7 +1803,8 @@ module Aws::KMS
1795
1803
  #
1796
1804
  # * `HMAC_512`
1797
1805
  #
1798
- # * Asymmetric RSA key pairs
1806
+ # * Asymmetric RSA key pairs (encryption and decryption -or- signing and
1807
+ # verification)
1799
1808
  #
1800
1809
  # * `RSA_2048`
1801
1810
  #
@@ -1803,7 +1812,8 @@ module Aws::KMS
1803
1812
  #
1804
1813
  # * `RSA_4096`
1805
1814
  #
1806
- # * Asymmetric NIST-recommended elliptic curve key pairs
1815
+ # * Asymmetric NIST-recommended elliptic curve key pairs (signing and
1816
+ # verification -or- deriving shared secrets)
1807
1817
  #
1808
1818
  # * `ECC_NIST_P256` (secp256r1)
1809
1819
  #
@@ -1811,15 +1821,16 @@ module Aws::KMS
1811
1821
  #
1812
1822
  # * `ECC_NIST_P521` (secp521r1)
1813
1823
  #
1814
- # * Other asymmetric elliptic curve key pairs
1824
+ # * Other asymmetric elliptic curve key pairs (signing and verification)
1815
1825
  #
1816
1826
  # * `ECC_SECG_P256K1` (secp256k1), commonly used for cryptocurrencies.
1817
1827
  #
1818
1828
  # ^
1819
1829
  #
1820
- # * SM2 key pairs (China Regions only)
1830
+ # * SM2 key pairs (encryption and decryption -or- signing and
1831
+ # verification -or- deriving shared secrets)
1821
1832
  #
1822
- # * `SM2`
1833
+ # * `SM2` (China Regions only)
1823
1834
  #
1824
1835
  # ^
1825
1836
  #
@@ -2283,7 +2294,7 @@ module Aws::KMS
2283
2294
  # resp = client.create_key({
2284
2295
  # policy: "PolicyType",
2285
2296
  # description: "DescriptionType",
2286
- # key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT, GENERATE_VERIFY_MAC
2297
+ # key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT, GENERATE_VERIFY_MAC, KEY_AGREEMENT
2287
2298
  # 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, SM2
2288
2299
  # 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, SM2
2289
2300
  # origin: "AWS_KMS", # accepts AWS_KMS, EXTERNAL, AWS_CLOUDHSM, EXTERNAL_KEY_STORE
@@ -2307,7 +2318,7 @@ module Aws::KMS
2307
2318
  # resp.key_metadata.creation_date #=> Time
2308
2319
  # resp.key_metadata.enabled #=> Boolean
2309
2320
  # resp.key_metadata.description #=> String
2310
- # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
2321
+ # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
2311
2322
  # resp.key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
2312
2323
  # resp.key_metadata.deletion_date #=> Time
2313
2324
  # resp.key_metadata.valid_to #=> Time
@@ -2322,6 +2333,8 @@ module Aws::KMS
2322
2333
  # resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
2323
2334
  # resp.key_metadata.signing_algorithms #=> Array
2324
2335
  # resp.key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
2336
+ # resp.key_metadata.key_agreement_algorithms #=> Array
2337
+ # resp.key_metadata.key_agreement_algorithms[0] #=> String, one of "ECDH"
2325
2338
  # resp.key_metadata.multi_region #=> Boolean
2326
2339
  # resp.key_metadata.multi_region_configuration.multi_region_key_type #=> String, one of "PRIMARY", "REPLICA"
2327
2340
  # resp.key_metadata.multi_region_configuration.primary_key.arn #=> String
@@ -2918,6 +2931,270 @@ module Aws::KMS
2918
2931
  req.send_request(options)
2919
2932
  end
2920
2933
 
2934
+ # Derives a shared secret using a key agreement algorithm.
2935
+ #
2936
+ # <note markdown="1"> You must use an asymmetric NIST-recommended elliptic curve (ECC) or
2937
+ # SM2 (China Regions only) KMS key pair with a `KeyUsage` value of
2938
+ # `KEY_AGREEMENT` to call DeriveSharedSecret.
2939
+ #
2940
+ # </note>
2941
+ #
2942
+ # DeriveSharedSecret uses the [Elliptic Curve Cryptography Cofactor
2943
+ # Diffie-Hellman Primitive][1] (ECDH) to establish a key agreement
2944
+ # between two peers by deriving a shared secret from their elliptic
2945
+ # curve public-private key pairs. You can use the raw shared secret that
2946
+ # DeriveSharedSecret returns to derive a symmetric key that can encrypt
2947
+ # and decrypt data that is sent between the two peers, or that can
2948
+ # generate and verify HMACs. KMS recommends that you follow [NIST
2949
+ # recommendations for key derivation][2] when using the raw shared
2950
+ # secret to derive a symmetric key.
2951
+ #
2952
+ # The following workflow demonstrates how to establish key agreement
2953
+ # over an insecure communication channel using DeriveSharedSecret.
2954
+ #
2955
+ # 1. **Alice** calls CreateKey to create an asymmetric KMS key pair
2956
+ # with a `KeyUsage` value of `KEY_AGREEMENT`.
2957
+ #
2958
+ # The asymmetric KMS key must use a NIST-recommended elliptic curve
2959
+ # (ECC) or SM2 (China Regions only) key spec.
2960
+ #
2961
+ # 2. **Bob** creates an elliptic curve key pair.
2962
+ #
2963
+ # Bob can call CreateKey to create an asymmetric KMS key pair or
2964
+ # generate a key pair outside of KMS. Bob's key pair must use the
2965
+ # same NIST-recommended elliptic curve (ECC) or SM2 (China Regions
2966
+ # ony) curve as Alice.
2967
+ #
2968
+ # 3. Alice and Bob **exchange their public keys** through an insecure
2969
+ # communication channel (like the internet).
2970
+ #
2971
+ # Use GetPublicKey to download the public key of your asymmetric KMS
2972
+ # key pair.
2973
+ #
2974
+ # <note markdown="1"> KMS strongly recommends verifying that the public key you receive
2975
+ # came from the expected party before using it to derive a shared
2976
+ # secret.
2977
+ #
2978
+ # </note>
2979
+ #
2980
+ # 4. **Alice** calls DeriveSharedSecret.
2981
+ #
2982
+ # KMS uses the private key from the KMS key pair generated in **Step
2983
+ # 1**, Bob's public key, and the Elliptic Curve Cryptography
2984
+ # Cofactor Diffie-Hellman Primitive to derive the shared secret. The
2985
+ # private key in your KMS key pair never leaves KMS unencrypted.
2986
+ # DeriveSharedSecret returns the raw shared secret.
2987
+ #
2988
+ # 5. **Bob** uses the Elliptic Curve Cryptography Cofactor
2989
+ # Diffie-Hellman Primitive to calculate the same raw secret using
2990
+ # his private key and Alice's public key.
2991
+ #
2992
+ # To derive a shared secret you must provide a key agreement algorithm,
2993
+ # the private key of the caller's asymmetric NIST-recommended elliptic
2994
+ # curve or SM2 (China Regions only) KMS key pair, and the public key
2995
+ # from your peer's NIST-recommended elliptic curve or SM2 (China
2996
+ # Regions only) key pair. The public key can be from another asymmetric
2997
+ # KMS key pair or from a key pair generated outside of KMS, but both key
2998
+ # pairs must be on the same elliptic curve.
2999
+ #
3000
+ # The KMS key that you use for this operation must be in a compatible
3001
+ # key state. For details, see [Key states of KMS keys][3] in the *Key
3002
+ # Management Service Developer Guide*.
3003
+ #
3004
+ # **Cross-account use**: Yes. To perform this operation with a KMS key
3005
+ # in a different Amazon Web Services account, specify the key ARN or
3006
+ # alias ARN in the value of the `KeyId` parameter.
3007
+ #
3008
+ # **Required permissions**: [kms:DeriveSharedSecret][4] (key policy)
3009
+ #
3010
+ # **Related operations:**
3011
+ #
3012
+ # * CreateKey
3013
+ #
3014
+ # * GetPublicKey
3015
+ #
3016
+ # * DescribeKey
3017
+ #
3018
+ # **Eventual consistency**: The KMS API follows an eventual consistency
3019
+ # model. For more information, see [KMS eventual consistency][5].
3020
+ #
3021
+ #
3022
+ #
3023
+ # [1]: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60
3024
+ # [2]: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf
3025
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
3026
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
3027
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3028
+ #
3029
+ # @option params [required, String] :key_id
3030
+ # Identifies an asymmetric NIST-recommended ECC or SM2 (China Regions
3031
+ # only) KMS key. KMS uses the private key in the specified key pair to
3032
+ # derive the shared secret. The key usage of the KMS key must be
3033
+ # `KEY_AGREEMENT`. To find the `KeyUsage` of a KMS key, use the
3034
+ # DescribeKey operation.
3035
+ #
3036
+ # To specify a KMS key, use its key ID, key ARN, alias name, or alias
3037
+ # ARN. When using an alias name, prefix it with `"alias/"`. To specify a
3038
+ # KMS key in a different Amazon Web Services account, you must use the
3039
+ # key ARN or alias ARN.
3040
+ #
3041
+ # For example:
3042
+ #
3043
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
3044
+ #
3045
+ # * Key ARN:
3046
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
3047
+ #
3048
+ # * Alias name: `alias/ExampleAlias`
3049
+ #
3050
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
3051
+ #
3052
+ # To get the key ID and key ARN for a KMS key, use ListKeys or
3053
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
3054
+ #
3055
+ # @option params [required, String] :key_agreement_algorithm
3056
+ # Specifies the key agreement algorithm used to derive the shared
3057
+ # secret. The only valid value is `ECDH`.
3058
+ #
3059
+ # @option params [required, String, StringIO, File] :public_key
3060
+ # Specifies the public key in your peer's NIST-recommended elliptic
3061
+ # curve (ECC) or SM2 (China Regions only) key pair.
3062
+ #
3063
+ # The public key must be a DER-encoded X.509 public key, also known as
3064
+ # `SubjectPublicKeyInfo` (SPKI), as defined in [RFC 5280][1].
3065
+ #
3066
+ # GetPublicKey returns the public key of an asymmetric KMS key pair in
3067
+ # the required DER-encoded format.
3068
+ #
3069
+ # <note markdown="1"> If you use [Amazon Web Services CLI version 1][2], you must provide
3070
+ # the DER-encoded X.509 public key in a file. Otherwise, the Amazon Web
3071
+ # Services CLI Base64-encodes the public key a second time, resulting in
3072
+ # a `ValidationException`.
3073
+ #
3074
+ # </note>
3075
+ #
3076
+ # You can specify the public key as binary data in a file using fileb
3077
+ # (`fileb://<path-to-file>`) or in-line using a Base64 encoded string.
3078
+ #
3079
+ #
3080
+ #
3081
+ # [1]: https://tools.ietf.org/html/rfc5280
3082
+ # [2]: https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-welcome.html
3083
+ #
3084
+ # @option params [Array<String>] :grant_tokens
3085
+ # A list of grant tokens.
3086
+ #
3087
+ # Use a grant token when your permission to call this operation comes
3088
+ # from a new grant that has not yet achieved *eventual consistency*. For
3089
+ # more information, see [Grant token][1] and [Using a grant token][2] in
3090
+ # the *Key Management Service Developer Guide*.
3091
+ #
3092
+ #
3093
+ #
3094
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
3095
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
3096
+ #
3097
+ # @option params [Boolean] :dry_run
3098
+ # Checks if your request will succeed. `DryRun` is an optional
3099
+ # parameter.
3100
+ #
3101
+ # To learn more about how to use this parameter, see [Testing your KMS
3102
+ # API calls][1] in the *Key Management Service Developer Guide*.
3103
+ #
3104
+ #
3105
+ #
3106
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-dryrun.html
3107
+ #
3108
+ # @option params [Types::RecipientInfo] :recipient
3109
+ # A signed [attestation document][1] from an Amazon Web Services Nitro
3110
+ # enclave and the encryption algorithm to use with the enclave's public
3111
+ # key. The only valid encryption algorithm is `RSAES_OAEP_SHA_256`.
3112
+ #
3113
+ # This parameter only supports attestation documents for Amazon Web
3114
+ # Services Nitro Enclaves. To call DeriveSharedSecret for an Amazon Web
3115
+ # Services Nitro Enclaves, use the [Amazon Web Services Nitro Enclaves
3116
+ # SDK][2] to generate the attestation document and then use the
3117
+ # Recipient parameter from any Amazon Web Services SDK to provide the
3118
+ # attestation document for the enclave.
3119
+ #
3120
+ # When you use this parameter, instead of returning a plaintext copy of
3121
+ # the shared secret, KMS encrypts the plaintext shared secret under the
3122
+ # public key in the attestation document, and returns the resulting
3123
+ # ciphertext in the `CiphertextForRecipient` field in the response. This
3124
+ # ciphertext can be decrypted only with the private key in the enclave.
3125
+ # The `CiphertextBlob` field in the response contains the encrypted
3126
+ # shared secret derived from the KMS key specified by the `KeyId`
3127
+ # parameter and public key specified by the `PublicKey` parameter. The
3128
+ # `SharedSecret` field in the response is null or empty.
3129
+ #
3130
+ # For information about the interaction between KMS and Amazon Web
3131
+ # Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves
3132
+ # uses KMS][3] in the *Key Management Service Developer Guide*.
3133
+ #
3134
+ #
3135
+ #
3136
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-how.html#term-attestdoc
3137
+ # [2]: https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk
3138
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html
3139
+ #
3140
+ # @return [Types::DeriveSharedSecretResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3141
+ #
3142
+ # * {Types::DeriveSharedSecretResponse#key_id #key_id} => String
3143
+ # * {Types::DeriveSharedSecretResponse#shared_secret #shared_secret} => String
3144
+ # * {Types::DeriveSharedSecretResponse#ciphertext_for_recipient #ciphertext_for_recipient} => String
3145
+ # * {Types::DeriveSharedSecretResponse#key_agreement_algorithm #key_agreement_algorithm} => String
3146
+ # * {Types::DeriveSharedSecretResponse#key_origin #key_origin} => String
3147
+ #
3148
+ #
3149
+ # @example Example: To derive a shared secret
3150
+ #
3151
+ # # The following example derives a shared secret using a key agreement algorithm.
3152
+ #
3153
+ # resp = client.derive_shared_secret({
3154
+ # key_agreement_algorithm: "ECDH", # The key agreement algorithm used to derive the shared secret. The only valid value is ECDH.
3155
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The key identifier for an asymmetric KMS key pair. The private key in the specified key pair is used to derive the shared secret.
3156
+ # public_key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvH3Yj0wbkLEpUl95Cv1cJVjsVNSjwGq3tCLnzXfhVwVvmzGN8pYj3U8nKwgouaHbBWNJYjP5VutbbkKS4Kv4GojwZBJyHN17kmxo8yTjRmjR15SKIQ8cqRA2uaERMLnpztIXdZp232PQPbWGxDyXYJ0aJ5EFSag", # The public key in your peer's asymmetric key pair.
3157
+ # })
3158
+ #
3159
+ # resp.to_h outputs the following:
3160
+ # {
3161
+ # key_agreement_algorithm: "ECDH", # The key agreement algorithm used to derive the shared secret.
3162
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The asymmetric KMS key pair used to derive the shared secret.
3163
+ # key_origin: "AWS_KMS", # The source of the key material for the specified KMS key.
3164
+ # shared_secret: "MEYCIQCKZLWyTk5runarx6XiAkU9gv3lbwPO/pHa+DXFehzdDwIhANwpsIV2g/9SPWLLsF6p/hiSskuIXMTRwqrMdVKWTMHG", # The raw secret derived from the specified key agreement algorithm, private key in the asymmetric KMS key, and your peer's public key.
3165
+ # }
3166
+ #
3167
+ # @example Request syntax with placeholder values
3168
+ #
3169
+ # resp = client.derive_shared_secret({
3170
+ # key_id: "KeyIdType", # required
3171
+ # key_agreement_algorithm: "ECDH", # required, accepts ECDH
3172
+ # public_key: "data", # required
3173
+ # grant_tokens: ["GrantTokenType"],
3174
+ # dry_run: false,
3175
+ # recipient: {
3176
+ # key_encryption_algorithm: "RSAES_OAEP_SHA_256", # accepts RSAES_OAEP_SHA_256
3177
+ # attestation_document: "data",
3178
+ # },
3179
+ # })
3180
+ #
3181
+ # @example Response structure
3182
+ #
3183
+ # resp.key_id #=> String
3184
+ # resp.shared_secret #=> String
3185
+ # resp.ciphertext_for_recipient #=> String
3186
+ # resp.key_agreement_algorithm #=> String, one of "ECDH"
3187
+ # resp.key_origin #=> String, one of "AWS_KMS", "EXTERNAL", "AWS_CLOUDHSM", "EXTERNAL_KEY_STORE"
3188
+ #
3189
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeriveSharedSecret AWS API Documentation
3190
+ #
3191
+ # @overload derive_shared_secret(params = {})
3192
+ # @param [Hash] params ({})
3193
+ def derive_shared_secret(params = {}, options = {})
3194
+ req = build_request(:derive_shared_secret, params)
3195
+ req.send_request(options)
3196
+ end
3197
+
2921
3198
  # Gets information about [custom key stores][1] in the account and
2922
3199
  # Region.
2923
3200
  #
@@ -3502,7 +3779,7 @@ module Aws::KMS
3502
3779
  # resp.key_metadata.creation_date #=> Time
3503
3780
  # resp.key_metadata.enabled #=> Boolean
3504
3781
  # resp.key_metadata.description #=> String
3505
- # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
3782
+ # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
3506
3783
  # resp.key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
3507
3784
  # resp.key_metadata.deletion_date #=> Time
3508
3785
  # resp.key_metadata.valid_to #=> Time
@@ -3517,6 +3794,8 @@ module Aws::KMS
3517
3794
  # resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
3518
3795
  # resp.key_metadata.signing_algorithms #=> Array
3519
3796
  # resp.key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
3797
+ # resp.key_metadata.key_agreement_algorithms #=> Array
3798
+ # resp.key_metadata.key_agreement_algorithms[0] #=> String, one of "ECDH"
3520
3799
  # resp.key_metadata.multi_region #=> Boolean
3521
3800
  # resp.key_metadata.multi_region_configuration.multi_region_key_type #=> String, one of "PRIMARY", "REPLICA"
3522
3801
  # resp.key_metadata.multi_region_configuration.primary_key.arn #=> String
@@ -4783,8 +5062,11 @@ module Aws::KMS
4783
5062
  # key. The only valid encryption algorithm is `RSAES_OAEP_SHA_256`.
4784
5063
  #
4785
5064
  # This parameter only supports attestation documents for Amazon Web
4786
- # Services Nitro Enclaves. To include this parameter, use the [Amazon
4787
- # Web Services Nitro Enclaves SDK][2] or any Amazon Web Services SDK.
5065
+ # Services Nitro Enclaves. To call DeriveSharedSecret for an Amazon Web
5066
+ # Services Nitro Enclaves, use the [Amazon Web Services Nitro Enclaves
5067
+ # SDK][2] to generate the attestation document and then use the
5068
+ # Recipient parameter from any Amazon Web Services SDK to provide the
5069
+ # attestation document for the enclave.
4788
5070
  #
4789
5071
  # When you use this parameter, instead of returning a plaintext copy of
4790
5072
  # the private data key, KMS encrypts the plaintext private data key
@@ -6088,8 +6370,8 @@ module Aws::KMS
6088
6370
  #
6089
6371
  # resp = client.get_parameters_for_import({
6090
6372
  # key_id: "KeyIdType", # required
6091
- # wrapping_algorithm: "RSAES_PKCS1_V1_5", # required, accepts RSAES_PKCS1_V1_5, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256, RSA_AES_KEY_WRAP_SHA_1, RSA_AES_KEY_WRAP_SHA_256
6092
- # wrapping_key_spec: "RSA_2048", # required, accepts RSA_2048, RSA_3072, RSA_4096
6373
+ # wrapping_algorithm: "RSAES_PKCS1_V1_5", # required, accepts RSAES_PKCS1_V1_5, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256, RSA_AES_KEY_WRAP_SHA_1, RSA_AES_KEY_WRAP_SHA_256, SM2PKE
6374
+ # wrapping_key_spec: "RSA_2048", # required, accepts RSA_2048, RSA_3072, RSA_4096, SM2
6093
6375
  # })
6094
6376
  #
6095
6377
  # @example Response structure
@@ -6131,7 +6413,8 @@ module Aws::KMS
6131
6413
  # * [KeySpec][2]: The type of key material in the public key, such as
6132
6414
  # `RSA_4096` or `ECC_NIST_P521`.
6133
6415
  #
6134
- # * [KeyUsage][3]: Whether the key is used for encryption or signing.
6416
+ # * [KeyUsage][3]: Whether the key is used for encryption, signing, or
6417
+ # deriving a shared secret.
6135
6418
  #
6136
6419
  # * [EncryptionAlgorithms][4] or [SigningAlgorithms][5]: A list of the
6137
6420
  # encryption algorithms or the signing algorithms for the key.
@@ -6220,6 +6503,7 @@ module Aws::KMS
6220
6503
  # * {Types::GetPublicKeyResponse#key_usage #key_usage} => String
6221
6504
  # * {Types::GetPublicKeyResponse#encryption_algorithms #encryption_algorithms} => Array&lt;String&gt;
6222
6505
  # * {Types::GetPublicKeyResponse#signing_algorithms #signing_algorithms} => Array&lt;String&gt;
6506
+ # * {Types::GetPublicKeyResponse#key_agreement_algorithms #key_agreement_algorithms} => Array&lt;String&gt;
6223
6507
  #
6224
6508
  #
6225
6509
  # @example Example: To download the public key of an asymmetric KMS key
@@ -6257,11 +6541,13 @@ module Aws::KMS
6257
6541
  # resp.public_key #=> String
6258
6542
  # 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", "SM2"
6259
6543
  # 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", "SM2"
6260
- # resp.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
6544
+ # resp.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
6261
6545
  # resp.encryption_algorithms #=> Array
6262
6546
  # resp.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
6263
6547
  # resp.signing_algorithms #=> Array
6264
6548
  # resp.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
6549
+ # resp.key_agreement_algorithms #=> Array
6550
+ # resp.key_agreement_algorithms[0] #=> String, one of "ECDH"
6265
6551
  #
6266
6552
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetPublicKey AWS API Documentation
6267
6553
  #
@@ -6864,7 +7150,7 @@ module Aws::KMS
6864
7150
  # resp.grants[0].retiring_principal #=> String
6865
7151
  # resp.grants[0].issuing_account #=> String
6866
7152
  # resp.grants[0].operations #=> Array
6867
- # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac"
7153
+ # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac", "DeriveSharedSecret"
6868
7154
  # resp.grants[0].constraints.encryption_context_subset #=> Hash
6869
7155
  # resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
6870
7156
  # resp.grants[0].constraints.encryption_context_equals #=> Hash
@@ -7486,7 +7772,7 @@ module Aws::KMS
7486
7772
  # resp.grants[0].retiring_principal #=> String
7487
7773
  # resp.grants[0].issuing_account #=> String
7488
7774
  # resp.grants[0].operations #=> Array
7489
- # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac"
7775
+ # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac", "DeriveSharedSecret"
7490
7776
  # resp.grants[0].constraints.encryption_context_subset #=> Hash
7491
7777
  # resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
7492
7778
  # resp.grants[0].constraints.encryption_context_equals #=> Hash
@@ -8324,7 +8610,7 @@ module Aws::KMS
8324
8610
  # resp.replica_key_metadata.creation_date #=> Time
8325
8611
  # resp.replica_key_metadata.enabled #=> Boolean
8326
8612
  # resp.replica_key_metadata.description #=> String
8327
- # resp.replica_key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
8613
+ # resp.replica_key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
8328
8614
  # resp.replica_key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
8329
8615
  # resp.replica_key_metadata.deletion_date #=> Time
8330
8616
  # resp.replica_key_metadata.valid_to #=> Time
@@ -8339,6 +8625,8 @@ module Aws::KMS
8339
8625
  # resp.replica_key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
8340
8626
  # resp.replica_key_metadata.signing_algorithms #=> Array
8341
8627
  # resp.replica_key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
8628
+ # resp.replica_key_metadata.key_agreement_algorithms #=> Array
8629
+ # resp.replica_key_metadata.key_agreement_algorithms[0] #=> String, one of "ECDH"
8342
8630
  # resp.replica_key_metadata.multi_region #=> Boolean
8343
8631
  # resp.replica_key_metadata.multi_region_configuration.multi_region_key_type #=> String, one of "PRIMARY", "REPLICA"
8344
8632
  # resp.replica_key_metadata.multi_region_configuration.primary_key.arn #=> String
@@ -10458,7 +10746,7 @@ module Aws::KMS
10458
10746
  params: params,
10459
10747
  config: config)
10460
10748
  context[:gem_name] = 'aws-sdk-kms'
10461
- context[:gem_version] = '1.81.0'
10749
+ context[:gem_version] = '1.87.0'
10462
10750
  Seahorse::Client::Request.new(handlers, context)
10463
10751
  end
10464
10752
 
@@ -63,6 +63,8 @@ module Aws::KMS
63
63
  DeleteCustomKeyStoreResponse = Shapes::StructureShape.new(name: 'DeleteCustomKeyStoreResponse')
64
64
  DeleteImportedKeyMaterialRequest = Shapes::StructureShape.new(name: 'DeleteImportedKeyMaterialRequest')
65
65
  DependencyTimeoutException = Shapes::StructureShape.new(name: 'DependencyTimeoutException')
66
+ DeriveSharedSecretRequest = Shapes::StructureShape.new(name: 'DeriveSharedSecretRequest')
67
+ DeriveSharedSecretResponse = Shapes::StructureShape.new(name: 'DeriveSharedSecretResponse')
66
68
  DescribeCustomKeyStoresRequest = Shapes::StructureShape.new(name: 'DescribeCustomKeyStoresRequest')
67
69
  DescribeCustomKeyStoresResponse = Shapes::StructureShape.new(name: 'DescribeCustomKeyStoresResponse')
68
70
  DescribeKeyRequest = Shapes::StructureShape.new(name: 'DescribeKeyRequest')
@@ -132,6 +134,8 @@ module Aws::KMS
132
134
  KMSInvalidMacException = Shapes::StructureShape.new(name: 'KMSInvalidMacException')
133
135
  KMSInvalidSignatureException = Shapes::StructureShape.new(name: 'KMSInvalidSignatureException')
134
136
  KMSInvalidStateException = Shapes::StructureShape.new(name: 'KMSInvalidStateException')
137
+ KeyAgreementAlgorithmSpec = Shapes::StringShape.new(name: 'KeyAgreementAlgorithmSpec')
138
+ KeyAgreementAlgorithmSpecList = Shapes::ListShape.new(name: 'KeyAgreementAlgorithmSpecList')
135
139
  KeyEncryptionMechanism = Shapes::StringShape.new(name: 'KeyEncryptionMechanism')
136
140
  KeyIdType = Shapes::StringShape.new(name: 'KeyIdType')
137
141
  KeyList = Shapes::ListShape.new(name: 'KeyList')
@@ -386,6 +390,21 @@ module Aws::KMS
386
390
  DependencyTimeoutException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
387
391
  DependencyTimeoutException.struct_class = Types::DependencyTimeoutException
388
392
 
393
+ DeriveSharedSecretRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "KeyId"))
394
+ DeriveSharedSecretRequest.add_member(:key_agreement_algorithm, Shapes::ShapeRef.new(shape: KeyAgreementAlgorithmSpec, required: true, location_name: "KeyAgreementAlgorithm"))
395
+ DeriveSharedSecretRequest.add_member(:public_key, Shapes::ShapeRef.new(shape: PublicKeyType, required: true, location_name: "PublicKey"))
396
+ DeriveSharedSecretRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
397
+ DeriveSharedSecretRequest.add_member(:dry_run, Shapes::ShapeRef.new(shape: NullableBooleanType, location_name: "DryRun"))
398
+ DeriveSharedSecretRequest.add_member(:recipient, Shapes::ShapeRef.new(shape: RecipientInfo, location_name: "Recipient"))
399
+ DeriveSharedSecretRequest.struct_class = Types::DeriveSharedSecretRequest
400
+
401
+ DeriveSharedSecretResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
402
+ DeriveSharedSecretResponse.add_member(:shared_secret, Shapes::ShapeRef.new(shape: PlaintextType, location_name: "SharedSecret"))
403
+ DeriveSharedSecretResponse.add_member(:ciphertext_for_recipient, Shapes::ShapeRef.new(shape: CiphertextType, location_name: "CiphertextForRecipient"))
404
+ DeriveSharedSecretResponse.add_member(:key_agreement_algorithm, Shapes::ShapeRef.new(shape: KeyAgreementAlgorithmSpec, location_name: "KeyAgreementAlgorithm"))
405
+ DeriveSharedSecretResponse.add_member(:key_origin, Shapes::ShapeRef.new(shape: OriginType, location_name: "KeyOrigin"))
406
+ DeriveSharedSecretResponse.struct_class = Types::DeriveSharedSecretResponse
407
+
389
408
  DescribeCustomKeyStoresRequest.add_member(:custom_key_store_id, Shapes::ShapeRef.new(shape: CustomKeyStoreIdType, location_name: "CustomKeyStoreId"))
390
409
  DescribeCustomKeyStoresRequest.add_member(:custom_key_store_name, Shapes::ShapeRef.new(shape: CustomKeyStoreNameType, location_name: "CustomKeyStoreName"))
391
410
  DescribeCustomKeyStoresRequest.add_member(:limit, Shapes::ShapeRef.new(shape: LimitType, location_name: "Limit"))
@@ -566,6 +585,7 @@ module Aws::KMS
566
585
  GetPublicKeyResponse.add_member(:key_usage, Shapes::ShapeRef.new(shape: KeyUsageType, location_name: "KeyUsage"))
567
586
  GetPublicKeyResponse.add_member(:encryption_algorithms, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpecList, location_name: "EncryptionAlgorithms"))
568
587
  GetPublicKeyResponse.add_member(:signing_algorithms, Shapes::ShapeRef.new(shape: SigningAlgorithmSpecList, location_name: "SigningAlgorithms"))
588
+ GetPublicKeyResponse.add_member(:key_agreement_algorithms, Shapes::ShapeRef.new(shape: KeyAgreementAlgorithmSpecList, location_name: "KeyAgreementAlgorithms"))
569
589
  GetPublicKeyResponse.struct_class = Types::GetPublicKeyResponse
570
590
 
571
591
  GrantConstraints.add_member(:encryption_context_subset, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContextSubset"))
@@ -643,6 +663,8 @@ module Aws::KMS
643
663
  KMSInvalidStateException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
644
664
  KMSInvalidStateException.struct_class = Types::KMSInvalidStateException
645
665
 
666
+ KeyAgreementAlgorithmSpecList.member = Shapes::ShapeRef.new(shape: KeyAgreementAlgorithmSpec)
667
+
646
668
  KeyList.member = Shapes::ShapeRef.new(shape: KeyListEntry)
647
669
 
648
670
  KeyListEntry.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
@@ -668,6 +690,7 @@ module Aws::KMS
668
690
  KeyMetadata.add_member(:key_spec, Shapes::ShapeRef.new(shape: KeySpec, location_name: "KeySpec"))
669
691
  KeyMetadata.add_member(:encryption_algorithms, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpecList, location_name: "EncryptionAlgorithms"))
670
692
  KeyMetadata.add_member(:signing_algorithms, Shapes::ShapeRef.new(shape: SigningAlgorithmSpecList, location_name: "SigningAlgorithms"))
693
+ KeyMetadata.add_member(:key_agreement_algorithms, Shapes::ShapeRef.new(shape: KeyAgreementAlgorithmSpecList, location_name: "KeyAgreementAlgorithms"))
671
694
  KeyMetadata.add_member(:multi_region, Shapes::ShapeRef.new(shape: NullableBooleanType, location_name: "MultiRegion"))
672
695
  KeyMetadata.add_member(:multi_region_configuration, Shapes::ShapeRef.new(shape: MultiRegionConfiguration, location_name: "MultiRegionConfiguration"))
673
696
  KeyMetadata.add_member(:pending_deletion_window_in_days, Shapes::ShapeRef.new(shape: PendingWindowInDaysType, location_name: "PendingDeletionWindowInDays"))
@@ -990,9 +1013,11 @@ module Aws::KMS
990
1013
 
991
1014
  api.metadata = {
992
1015
  "apiVersion" => "2014-11-01",
1016
+ "auth" => ["aws.auth#sigv4"],
993
1017
  "endpointPrefix" => "kms",
994
1018
  "jsonVersion" => "1.1",
995
1019
  "protocol" => "json",
1020
+ "protocols" => ["json"],
996
1021
  "serviceAbbreviation" => "KMS",
997
1022
  "serviceFullName" => "AWS Key Management Service",
998
1023
  "serviceId" => "KMS",
@@ -1162,6 +1187,23 @@ module Aws::KMS
1162
1187
  o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1163
1188
  end)
1164
1189
 
1190
+ api.add_operation(:derive_shared_secret, Seahorse::Model::Operation.new.tap do |o|
1191
+ o.name = "DeriveSharedSecret"
1192
+ o.http_method = "POST"
1193
+ o.http_request_uri = "/"
1194
+ o.input = Shapes::ShapeRef.new(shape: DeriveSharedSecretRequest)
1195
+ o.output = Shapes::ShapeRef.new(shape: DeriveSharedSecretResponse)
1196
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1197
+ o.errors << Shapes::ShapeRef.new(shape: DisabledException)
1198
+ o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
1199
+ o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
1200
+ o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
1201
+ o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
1202
+ o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
1203
+ o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1204
+ o.errors << Shapes::ShapeRef.new(shape: DryRunOperationException)
1205
+ end)
1206
+
1165
1207
  api.add_operation(:describe_custom_key_stores, Seahorse::Model::Operation.new.tap do |o|
1166
1208
  o.name = "DescribeCustomKeyStores"
1167
1209
  o.http_method = "POST"
@@ -152,6 +152,20 @@ module Aws::KMS
152
152
  end
153
153
  end
154
154
 
155
+ class DeriveSharedSecret
156
+ def self.build(context)
157
+ unless context.config.regional_endpoint
158
+ endpoint = context.config.endpoint.to_s
159
+ end
160
+ Aws::KMS::EndpointParameters.new(
161
+ region: context.config.region,
162
+ use_dual_stack: context.config.use_dualstack_endpoint,
163
+ use_fips: context.config.use_fips_endpoint,
164
+ endpoint: endpoint,
165
+ )
166
+ end
167
+ end
168
+
155
169
  class DescribeCustomKeyStores
156
170
  def self.build(context)
157
171
  unless context.config.regional_endpoint
@@ -78,6 +78,8 @@ module Aws::KMS
78
78
  Aws::KMS::Endpoints::DeleteCustomKeyStore.build(context)
79
79
  when :delete_imported_key_material
80
80
  Aws::KMS::Endpoints::DeleteImportedKeyMaterial.build(context)
81
+ when :derive_shared_secret
82
+ Aws::KMS::Endpoints::DeriveSharedSecret.build(context)
81
83
  when :describe_custom_key_stores
82
84
  Aws::KMS::Endpoints::DescribeCustomKeyStores.build(context)
83
85
  when :describe_key
@@ -841,14 +841,17 @@ module Aws::KMS
841
841
  #
842
842
  # * For HMAC KMS keys (symmetric), specify `GENERATE_VERIFY_MAC`.
843
843
  #
844
- # * For asymmetric KMS keys with RSA key material, specify
844
+ # * For asymmetric KMS keys with RSA key pairs, specify
845
845
  # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
846
846
  #
847
- # * For asymmetric KMS keys with ECC key material, specify
847
+ # * For asymmetric KMS keys with NIST-recommended elliptic curve key
848
+ # pairs, specify `SIGN_VERIFY` or `KEY_AGREEMENT`.
849
+ #
850
+ # * For asymmetric KMS keys with `ECC_SECG_P256K1` key pairs specify
848
851
  # `SIGN_VERIFY`.
849
852
  #
850
- # * For asymmetric KMS keys with SM2 key material (China Regions
851
- # only), specify `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
853
+ # * For asymmetric KMS keys with SM2 key pairs (China Regions only),
854
+ # specify `ENCRYPT_DECRYPT`, `SIGN_VERIFY`, or `KEY_AGREEMENT`.
852
855
  #
853
856
  #
854
857
  #
@@ -904,7 +907,8 @@ module Aws::KMS
904
907
  #
905
908
  # * `HMAC_512`
906
909
  #
907
- # * Asymmetric RSA key pairs
910
+ # * Asymmetric RSA key pairs (encryption and decryption -or- signing
911
+ # and verification)
908
912
  #
909
913
  # * `RSA_2048`
910
914
  #
@@ -912,7 +916,8 @@ module Aws::KMS
912
916
  #
913
917
  # * `RSA_4096`
914
918
  #
915
- # * Asymmetric NIST-recommended elliptic curve key pairs
919
+ # * Asymmetric NIST-recommended elliptic curve key pairs (signing and
920
+ # verification -or- deriving shared secrets)
916
921
  #
917
922
  # * `ECC_NIST_P256` (secp256r1)
918
923
  #
@@ -920,16 +925,18 @@ module Aws::KMS
920
925
  #
921
926
  # * `ECC_NIST_P521` (secp521r1)
922
927
  #
923
- # * Other asymmetric elliptic curve key pairs
928
+ # * Other asymmetric elliptic curve key pairs (signing and
929
+ # verification)
924
930
  #
925
931
  # * `ECC_SECG_P256K1` (secp256k1), commonly used for
926
932
  # cryptocurrencies.
927
933
  #
928
934
  # ^
929
935
  #
930
- # * SM2 key pairs (China Regions only)
936
+ # * SM2 key pairs (encryption and decryption -or- signing and
937
+ # verification -or- deriving shared secrets)
931
938
  #
932
- # * `SM2`
939
+ # * `SM2` (China Regions only)
933
940
  #
934
941
  # ^
935
942
  #
@@ -1761,6 +1768,195 @@ module Aws::KMS
1761
1768
  include Aws::Structure
1762
1769
  end
1763
1770
 
1771
+ # @!attribute [rw] key_id
1772
+ # Identifies an asymmetric NIST-recommended ECC or SM2 (China Regions
1773
+ # only) KMS key. KMS uses the private key in the specified key pair to
1774
+ # derive the shared secret. The key usage of the KMS key must be
1775
+ # `KEY_AGREEMENT`. To find the `KeyUsage` of a KMS key, use the
1776
+ # DescribeKey operation.
1777
+ #
1778
+ # To specify a KMS key, use its key ID, key ARN, alias name, or alias
1779
+ # ARN. When using an alias name, prefix it with `"alias/"`. To specify
1780
+ # a KMS key in a different Amazon Web Services account, you must use
1781
+ # the key ARN or alias ARN.
1782
+ #
1783
+ # For example:
1784
+ #
1785
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1786
+ #
1787
+ # * Key ARN:
1788
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1789
+ #
1790
+ # * Alias name: `alias/ExampleAlias`
1791
+ #
1792
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
1793
+ #
1794
+ # To get the key ID and key ARN for a KMS key, use ListKeys or
1795
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
1796
+ # @return [String]
1797
+ #
1798
+ # @!attribute [rw] key_agreement_algorithm
1799
+ # Specifies the key agreement algorithm used to derive the shared
1800
+ # secret. The only valid value is `ECDH`.
1801
+ # @return [String]
1802
+ #
1803
+ # @!attribute [rw] public_key
1804
+ # Specifies the public key in your peer's NIST-recommended elliptic
1805
+ # curve (ECC) or SM2 (China Regions only) key pair.
1806
+ #
1807
+ # The public key must be a DER-encoded X.509 public key, also known as
1808
+ # `SubjectPublicKeyInfo` (SPKI), as defined in [RFC 5280][1].
1809
+ #
1810
+ # GetPublicKey returns the public key of an asymmetric KMS key pair in
1811
+ # the required DER-encoded format.
1812
+ #
1813
+ # <note markdown="1"> If you use [Amazon Web Services CLI version 1][2], you must provide
1814
+ # the DER-encoded X.509 public key in a file. Otherwise, the Amazon
1815
+ # Web Services CLI Base64-encodes the public key a second time,
1816
+ # resulting in a `ValidationException`.
1817
+ #
1818
+ # </note>
1819
+ #
1820
+ # You can specify the public key as binary data in a file using fileb
1821
+ # (`fileb://<path-to-file>`) or in-line using a Base64 encoded string.
1822
+ #
1823
+ #
1824
+ #
1825
+ # [1]: https://tools.ietf.org/html/rfc5280
1826
+ # [2]: https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-welcome.html
1827
+ # @return [String]
1828
+ #
1829
+ # @!attribute [rw] grant_tokens
1830
+ # A list of grant tokens.
1831
+ #
1832
+ # Use a grant token when your permission to call this operation comes
1833
+ # from a new grant that has not yet achieved *eventual consistency*.
1834
+ # For more information, see [Grant token][1] and [Using a grant
1835
+ # token][2] in the *Key Management Service Developer Guide*.
1836
+ #
1837
+ #
1838
+ #
1839
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
1840
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
1841
+ # @return [Array<String>]
1842
+ #
1843
+ # @!attribute [rw] dry_run
1844
+ # Checks if your request will succeed. `DryRun` is an optional
1845
+ # parameter.
1846
+ #
1847
+ # To learn more about how to use this parameter, see [Testing your KMS
1848
+ # API calls][1] in the *Key Management Service Developer Guide*.
1849
+ #
1850
+ #
1851
+ #
1852
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-dryrun.html
1853
+ # @return [Boolean]
1854
+ #
1855
+ # @!attribute [rw] recipient
1856
+ # A signed [attestation document][1] from an Amazon Web Services Nitro
1857
+ # enclave and the encryption algorithm to use with the enclave's
1858
+ # public key. The only valid encryption algorithm is
1859
+ # `RSAES_OAEP_SHA_256`.
1860
+ #
1861
+ # This parameter only supports attestation documents for Amazon Web
1862
+ # Services Nitro Enclaves. To call DeriveSharedSecret for an Amazon
1863
+ # Web Services Nitro Enclaves, use the [Amazon Web Services Nitro
1864
+ # Enclaves SDK][2] to generate the attestation document and then use
1865
+ # the Recipient parameter from any Amazon Web Services SDK to provide
1866
+ # the attestation document for the enclave.
1867
+ #
1868
+ # When you use this parameter, instead of returning a plaintext copy
1869
+ # of the shared secret, KMS encrypts the plaintext shared secret under
1870
+ # the public key in the attestation document, and returns the
1871
+ # resulting ciphertext in the `CiphertextForRecipient` field in the
1872
+ # response. This ciphertext can be decrypted only with the private key
1873
+ # in the enclave. The `CiphertextBlob` field in the response contains
1874
+ # the encrypted shared secret derived from the KMS key specified by
1875
+ # the `KeyId` parameter and public key specified by the `PublicKey`
1876
+ # parameter. The `SharedSecret` field in the response is null or
1877
+ # empty.
1878
+ #
1879
+ # For information about the interaction between KMS and Amazon Web
1880
+ # Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves
1881
+ # uses KMS][3] in the *Key Management Service Developer Guide*.
1882
+ #
1883
+ #
1884
+ #
1885
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-how.html#term-attestdoc
1886
+ # [2]: https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk
1887
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html
1888
+ # @return [Types::RecipientInfo]
1889
+ #
1890
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeriveSharedSecretRequest AWS API Documentation
1891
+ #
1892
+ class DeriveSharedSecretRequest < Struct.new(
1893
+ :key_id,
1894
+ :key_agreement_algorithm,
1895
+ :public_key,
1896
+ :grant_tokens,
1897
+ :dry_run,
1898
+ :recipient)
1899
+ SENSITIVE = []
1900
+ include Aws::Structure
1901
+ end
1902
+
1903
+ # @!attribute [rw] key_id
1904
+ # Identifies the KMS key used to derive the shared secret.
1905
+ # @return [String]
1906
+ #
1907
+ # @!attribute [rw] shared_secret
1908
+ # The raw secret derived from the specified key agreement algorithm,
1909
+ # private key in the asymmetric KMS key, and your peer's public key.
1910
+ #
1911
+ # If the response includes the `CiphertextForRecipient` field, the
1912
+ # `SharedSecret` field is null or empty.
1913
+ # @return [String]
1914
+ #
1915
+ # @!attribute [rw] ciphertext_for_recipient
1916
+ # The plaintext shared secret encrypted with the public key in the
1917
+ # attestation document.
1918
+ #
1919
+ # This field is included in the response only when the `Recipient`
1920
+ # parameter in the request includes a valid attestation document from
1921
+ # an Amazon Web Services Nitro enclave. For information about the
1922
+ # interaction between KMS and Amazon Web Services Nitro Enclaves, see
1923
+ # [How Amazon Web Services Nitro Enclaves uses KMS][1] in the *Key
1924
+ # Management Service Developer Guide*.
1925
+ #
1926
+ #
1927
+ #
1928
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html
1929
+ # @return [String]
1930
+ #
1931
+ # @!attribute [rw] key_agreement_algorithm
1932
+ # Identifies the key agreement algorithm used to derive the shared
1933
+ # secret.
1934
+ # @return [String]
1935
+ #
1936
+ # @!attribute [rw] key_origin
1937
+ # The source of the key material for the specified KMS key.
1938
+ #
1939
+ # When this value is `AWS_KMS`, KMS created the key material. When
1940
+ # this value is `EXTERNAL`, the key material was imported or the KMS
1941
+ # key doesn't have any key material.
1942
+ #
1943
+ # The only valid values for DeriveSharedSecret are `AWS_KMS` and
1944
+ # `EXTERNAL`. DeriveSharedSecret does not support KMS keys with a
1945
+ # `KeyOrigin` value of `AWS_CLOUDHSM` or `EXTERNAL_KEY_STORE`.
1946
+ # @return [String]
1947
+ #
1948
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeriveSharedSecretResponse AWS API Documentation
1949
+ #
1950
+ class DeriveSharedSecretResponse < Struct.new(
1951
+ :key_id,
1952
+ :shared_secret,
1953
+ :ciphertext_for_recipient,
1954
+ :key_agreement_algorithm,
1955
+ :key_origin)
1956
+ SENSITIVE = [:shared_secret]
1957
+ include Aws::Structure
1958
+ end
1959
+
1764
1960
  # @!attribute [rw] custom_key_store_id
1765
1961
  # Gets only information about the specified custom key store. Enter
1766
1962
  # the key store ID.
@@ -2317,8 +2513,11 @@ module Aws::KMS
2317
2513
  # `RSAES_OAEP_SHA_256`.
2318
2514
  #
2319
2515
  # This parameter only supports attestation documents for Amazon Web
2320
- # Services Nitro Enclaves. To include this parameter, use the [Amazon
2321
- # Web Services Nitro Enclaves SDK][2] or any Amazon Web Services SDK.
2516
+ # Services Nitro Enclaves. To call DeriveSharedSecret for an Amazon
2517
+ # Web Services Nitro Enclaves, use the [Amazon Web Services Nitro
2518
+ # Enclaves SDK][2] to generate the attestation document and then use
2519
+ # the Recipient parameter from any Amazon Web Services SDK to provide
2520
+ # the attestation document for the enclave.
2322
2521
  #
2323
2522
  # When you use this parameter, instead of returning a plaintext copy
2324
2523
  # of the private data key, KMS encrypts the plaintext private data key
@@ -3388,12 +3587,12 @@ module Aws::KMS
3388
3587
  # @return [String]
3389
3588
  #
3390
3589
  # @!attribute [rw] key_usage
3391
- # The permitted use of the public key. Valid values are
3392
- # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
3590
+ # The permitted use of the public key. Valid values for asymmetric key
3591
+ # pairs are `ENCRYPT_DECRYPT`, `SIGN_VERIFY`, and `KEY_AGREEMENT`.
3393
3592
  #
3394
- # This information is critical. If a public key with `SIGN_VERIFY` key
3395
- # usage encrypts data outside of KMS, the ciphertext cannot be
3396
- # decrypted.
3593
+ # This information is critical. For example, if a public key with
3594
+ # `SIGN_VERIFY` key usage encrypts data outside of KMS, the ciphertext
3595
+ # cannot be decrypted.
3397
3596
  # @return [String]
3398
3597
  #
3399
3598
  # @!attribute [rw] encryption_algorithms
@@ -3414,6 +3613,12 @@ module Aws::KMS
3414
3613
  # public key is `SIGN_VERIFY`.
3415
3614
  # @return [Array<String>]
3416
3615
  #
3616
+ # @!attribute [rw] key_agreement_algorithms
3617
+ # The key agreement algorithm used to derive a shared secret. This
3618
+ # field is present only when the KMS key has a `KeyUsage` value of
3619
+ # `KEY_AGREEMENT`.
3620
+ # @return [Array<String>]
3621
+ #
3417
3622
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetPublicKeyResponse AWS API Documentation
3418
3623
  #
3419
3624
  class GetPublicKeyResponse < Struct.new(
@@ -3423,7 +3628,8 @@ module Aws::KMS
3423
3628
  :key_spec,
3424
3629
  :key_usage,
3425
3630
  :encryption_algorithms,
3426
- :signing_algorithms)
3631
+ :signing_algorithms,
3632
+ :key_agreement_algorithms)
3427
3633
  SENSITIVE = []
3428
3634
  include Aws::Structure
3429
3635
  end
@@ -3811,8 +4017,9 @@ module Aws::KMS
3811
4017
  # the `KeyUsage` must be `ENCRYPT_DECRYPT`. For signing and verifying
3812
4018
  # messages, the `KeyUsage` must be `SIGN_VERIFY`. For generating and
3813
4019
  # verifying message authentication codes (MACs), the `KeyUsage` must be
3814
- # `GENERATE_VERIFY_MAC`. To find the `KeyUsage` of a KMS key, use the
3815
- # DescribeKey operation.
4020
+ # `GENERATE_VERIFY_MAC`. For deriving key agreement secrets, the
4021
+ # `KeyUsage` must be `KEY_AGREEMENT`. To find the `KeyUsage` of a KMS
4022
+ # key, use the DescribeKey operation.
3816
4023
  #
3817
4024
  # To find the encryption or signing algorithms supported for a
3818
4025
  # particular KMS key, use the DescribeKey operation.
@@ -4091,6 +4298,10 @@ module Aws::KMS
4091
4298
  # `SIGN_VERIFY`.
4092
4299
  # @return [Array<String>]
4093
4300
  #
4301
+ # @!attribute [rw] key_agreement_algorithms
4302
+ # The key agreement algorithm used to derive a shared secret.
4303
+ # @return [Array<String>]
4304
+ #
4094
4305
  # @!attribute [rw] multi_region
4095
4306
  # Indicates whether the KMS key is a multi-Region (`True`) or regional
4096
4307
  # (`False`) key. This value is `True` for multi-Region primary and
@@ -4184,6 +4395,7 @@ module Aws::KMS
4184
4395
  :key_spec,
4185
4396
  :encryption_algorithms,
4186
4397
  :signing_algorithms,
4398
+ :key_agreement_algorithms,
4187
4399
  :multi_region,
4188
4400
  :multi_region_configuration,
4189
4401
  :pending_deletion_window_in_days,
data/lib/aws-sdk-kms.rb CHANGED
@@ -52,6 +52,6 @@ require_relative 'aws-sdk-kms/customizations'
52
52
  # @!group service
53
53
  module Aws::KMS
54
54
 
55
- GEM_VERSION = '1.81.0'
55
+ GEM_VERSION = '1.87.0'
56
56
 
57
57
  end
data/sig/client.rbs CHANGED
@@ -131,7 +131,7 @@ module Aws
131
131
  key_id: ::String,
132
132
  grantee_principal: ::String,
133
133
  ?retiring_principal: ::String,
134
- operations: Array[("Decrypt" | "Encrypt" | "GenerateDataKey" | "GenerateDataKeyWithoutPlaintext" | "ReEncryptFrom" | "ReEncryptTo" | "Sign" | "Verify" | "GetPublicKey" | "CreateGrant" | "RetireGrant" | "DescribeKey" | "GenerateDataKeyPair" | "GenerateDataKeyPairWithoutPlaintext" | "GenerateMac" | "VerifyMac")],
134
+ operations: Array[("Decrypt" | "Encrypt" | "GenerateDataKey" | "GenerateDataKeyWithoutPlaintext" | "ReEncryptFrom" | "ReEncryptTo" | "Sign" | "Verify" | "GetPublicKey" | "CreateGrant" | "RetireGrant" | "DescribeKey" | "GenerateDataKeyPair" | "GenerateDataKeyPairWithoutPlaintext" | "GenerateMac" | "VerifyMac" | "DeriveSharedSecret")],
135
135
  ?constraints: {
136
136
  encryption_context_subset: Hash[::String, ::String]?,
137
137
  encryption_context_equals: Hash[::String, ::String]?
@@ -150,7 +150,7 @@ module Aws
150
150
  def create_key: (
151
151
  ?policy: ::String,
152
152
  ?description: ::String,
153
- ?key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC"),
153
+ ?key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC" | "KEY_AGREEMENT"),
154
154
  ?customer_master_key_spec: ("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" | "SM2"),
155
155
  ?key_spec: ("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" | "SM2"),
156
156
  ?origin: ("AWS_KMS" | "EXTERNAL" | "AWS_CLOUDHSM" | "EXTERNAL_KEY_STORE"),
@@ -210,6 +210,28 @@ module Aws
210
210
  ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
211
211
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
212
212
 
213
+ interface _DeriveSharedSecretResponseSuccess
214
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeriveSharedSecretResponse]
215
+ def key_id: () -> ::String
216
+ def shared_secret: () -> ::String
217
+ def ciphertext_for_recipient: () -> ::String
218
+ def key_agreement_algorithm: () -> ("ECDH")
219
+ def key_origin: () -> ("AWS_KMS" | "EXTERNAL" | "AWS_CLOUDHSM" | "EXTERNAL_KEY_STORE")
220
+ end
221
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/KMS/Client.html#derive_shared_secret-instance_method
222
+ def derive_shared_secret: (
223
+ key_id: ::String,
224
+ key_agreement_algorithm: ("ECDH"),
225
+ public_key: ::String,
226
+ ?grant_tokens: Array[::String],
227
+ ?dry_run: bool,
228
+ ?recipient: {
229
+ key_encryption_algorithm: ("RSAES_OAEP_SHA_256")?,
230
+ attestation_document: ::String?
231
+ }
232
+ ) -> _DeriveSharedSecretResponseSuccess
233
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeriveSharedSecretResponseSuccess
234
+
213
235
  interface _DescribeCustomKeyStoresResponseSuccess
214
236
  include ::Seahorse::Client::_ResponseSuccess[Types::DescribeCustomKeyStoresResponse]
215
237
  def custom_key_stores: () -> ::Array[Types::CustomKeyStoresListEntry]
@@ -433,8 +455,8 @@ module Aws
433
455
  # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/KMS/Client.html#get_parameters_for_import-instance_method
434
456
  def get_parameters_for_import: (
435
457
  key_id: ::String,
436
- wrapping_algorithm: ("RSAES_PKCS1_V1_5" | "RSAES_OAEP_SHA_1" | "RSAES_OAEP_SHA_256" | "RSA_AES_KEY_WRAP_SHA_1" | "RSA_AES_KEY_WRAP_SHA_256"),
437
- wrapping_key_spec: ("RSA_2048" | "RSA_3072" | "RSA_4096")
458
+ wrapping_algorithm: ("RSAES_PKCS1_V1_5" | "RSAES_OAEP_SHA_1" | "RSAES_OAEP_SHA_256" | "RSA_AES_KEY_WRAP_SHA_1" | "RSA_AES_KEY_WRAP_SHA_256" | "SM2PKE"),
459
+ wrapping_key_spec: ("RSA_2048" | "RSA_3072" | "RSA_4096" | "SM2")
438
460
  ) -> _GetParametersForImportResponseSuccess
439
461
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetParametersForImportResponseSuccess
440
462
 
@@ -444,9 +466,10 @@ module Aws
444
466
  def public_key: () -> ::String
445
467
  def customer_master_key_spec: () -> ("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" | "SM2")
446
468
  def key_spec: () -> ("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" | "SM2")
447
- def key_usage: () -> ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC")
469
+ def key_usage: () -> ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC" | "KEY_AGREEMENT")
448
470
  def encryption_algorithms: () -> ::Array[("SYMMETRIC_DEFAULT" | "RSAES_OAEP_SHA_1" | "RSAES_OAEP_SHA_256" | "SM2PKE")]
449
471
  def signing_algorithms: () -> ::Array[("RSASSA_PSS_SHA_256" | "RSASSA_PSS_SHA_384" | "RSASSA_PSS_SHA_512" | "RSASSA_PKCS1_V1_5_SHA_256" | "RSASSA_PKCS1_V1_5_SHA_384" | "RSASSA_PKCS1_V1_5_SHA_512" | "ECDSA_SHA_256" | "ECDSA_SHA_384" | "ECDSA_SHA_512" | "SM2DSA")]
472
+ def key_agreement_algorithms: () -> ::Array[("ECDH")]
450
473
  end
451
474
  # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/KMS/Client.html#get_public_key-instance_method
452
475
  def get_public_key: (
data/sig/types.rbs CHANGED
@@ -99,7 +99,7 @@ module Aws::KMS
99
99
  attr_accessor key_id: ::String
100
100
  attr_accessor grantee_principal: ::String
101
101
  attr_accessor retiring_principal: ::String
102
- attr_accessor operations: ::Array[("Decrypt" | "Encrypt" | "GenerateDataKey" | "GenerateDataKeyWithoutPlaintext" | "ReEncryptFrom" | "ReEncryptTo" | "Sign" | "Verify" | "GetPublicKey" | "CreateGrant" | "RetireGrant" | "DescribeKey" | "GenerateDataKeyPair" | "GenerateDataKeyPairWithoutPlaintext" | "GenerateMac" | "VerifyMac")]
102
+ attr_accessor operations: ::Array[("Decrypt" | "Encrypt" | "GenerateDataKey" | "GenerateDataKeyWithoutPlaintext" | "ReEncryptFrom" | "ReEncryptTo" | "Sign" | "Verify" | "GetPublicKey" | "CreateGrant" | "RetireGrant" | "DescribeKey" | "GenerateDataKeyPair" | "GenerateDataKeyPairWithoutPlaintext" | "GenerateMac" | "VerifyMac" | "DeriveSharedSecret")]
103
103
  attr_accessor constraints: Types::GrantConstraints
104
104
  attr_accessor grant_tokens: ::Array[::String]
105
105
  attr_accessor name: ::String
@@ -116,7 +116,7 @@ module Aws::KMS
116
116
  class CreateKeyRequest
117
117
  attr_accessor policy: ::String
118
118
  attr_accessor description: ::String
119
- attr_accessor key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC")
119
+ attr_accessor key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC" | "KEY_AGREEMENT")
120
120
  attr_accessor customer_master_key_spec: ("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" | "SM2")
121
121
  attr_accessor key_spec: ("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" | "SM2")
122
122
  attr_accessor origin: ("AWS_KMS" | "EXTERNAL" | "AWS_CLOUDHSM" | "EXTERNAL_KEY_STORE")
@@ -208,6 +208,25 @@ module Aws::KMS
208
208
  SENSITIVE: []
209
209
  end
210
210
 
211
+ class DeriveSharedSecretRequest
212
+ attr_accessor key_id: ::String
213
+ attr_accessor key_agreement_algorithm: ("ECDH")
214
+ attr_accessor public_key: ::String
215
+ attr_accessor grant_tokens: ::Array[::String]
216
+ attr_accessor dry_run: bool
217
+ attr_accessor recipient: Types::RecipientInfo
218
+ SENSITIVE: []
219
+ end
220
+
221
+ class DeriveSharedSecretResponse
222
+ attr_accessor key_id: ::String
223
+ attr_accessor shared_secret: ::String
224
+ attr_accessor ciphertext_for_recipient: ::String
225
+ attr_accessor key_agreement_algorithm: ("ECDH")
226
+ attr_accessor key_origin: ("AWS_KMS" | "EXTERNAL" | "AWS_CLOUDHSM" | "EXTERNAL_KEY_STORE")
227
+ SENSITIVE: [:shared_secret]
228
+ end
229
+
211
230
  class DescribeCustomKeyStoresRequest
212
231
  attr_accessor custom_key_store_id: ::String
213
232
  attr_accessor custom_key_store_name: ::String
@@ -424,8 +443,8 @@ module Aws::KMS
424
443
 
425
444
  class GetParametersForImportRequest
426
445
  attr_accessor key_id: ::String
427
- attr_accessor wrapping_algorithm: ("RSAES_PKCS1_V1_5" | "RSAES_OAEP_SHA_1" | "RSAES_OAEP_SHA_256" | "RSA_AES_KEY_WRAP_SHA_1" | "RSA_AES_KEY_WRAP_SHA_256")
428
- attr_accessor wrapping_key_spec: ("RSA_2048" | "RSA_3072" | "RSA_4096")
446
+ attr_accessor wrapping_algorithm: ("RSAES_PKCS1_V1_5" | "RSAES_OAEP_SHA_1" | "RSAES_OAEP_SHA_256" | "RSA_AES_KEY_WRAP_SHA_1" | "RSA_AES_KEY_WRAP_SHA_256" | "SM2PKE")
447
+ attr_accessor wrapping_key_spec: ("RSA_2048" | "RSA_3072" | "RSA_4096" | "SM2")
429
448
  SENSITIVE: []
430
449
  end
431
450
 
@@ -448,9 +467,10 @@ module Aws::KMS
448
467
  attr_accessor public_key: ::String
449
468
  attr_accessor customer_master_key_spec: ("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" | "SM2")
450
469
  attr_accessor key_spec: ("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" | "SM2")
451
- attr_accessor key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC")
470
+ attr_accessor key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC" | "KEY_AGREEMENT")
452
471
  attr_accessor encryption_algorithms: ::Array[("SYMMETRIC_DEFAULT" | "RSAES_OAEP_SHA_1" | "RSAES_OAEP_SHA_256" | "SM2PKE")]
453
472
  attr_accessor signing_algorithms: ::Array[("RSASSA_PSS_SHA_256" | "RSASSA_PSS_SHA_384" | "RSASSA_PSS_SHA_512" | "RSASSA_PKCS1_V1_5_SHA_256" | "RSASSA_PKCS1_V1_5_SHA_384" | "RSASSA_PKCS1_V1_5_SHA_512" | "ECDSA_SHA_256" | "ECDSA_SHA_384" | "ECDSA_SHA_512" | "SM2DSA")]
473
+ attr_accessor key_agreement_algorithms: ::Array[("ECDH")]
454
474
  SENSITIVE: []
455
475
  end
456
476
 
@@ -468,7 +488,7 @@ module Aws::KMS
468
488
  attr_accessor grantee_principal: ::String
469
489
  attr_accessor retiring_principal: ::String
470
490
  attr_accessor issuing_account: ::String
471
- attr_accessor operations: ::Array[("Decrypt" | "Encrypt" | "GenerateDataKey" | "GenerateDataKeyWithoutPlaintext" | "ReEncryptFrom" | "ReEncryptTo" | "Sign" | "Verify" | "GetPublicKey" | "CreateGrant" | "RetireGrant" | "DescribeKey" | "GenerateDataKeyPair" | "GenerateDataKeyPairWithoutPlaintext" | "GenerateMac" | "VerifyMac")]
491
+ attr_accessor operations: ::Array[("Decrypt" | "Encrypt" | "GenerateDataKey" | "GenerateDataKeyWithoutPlaintext" | "ReEncryptFrom" | "ReEncryptTo" | "Sign" | "Verify" | "GetPublicKey" | "CreateGrant" | "RetireGrant" | "DescribeKey" | "GenerateDataKeyPair" | "GenerateDataKeyPairWithoutPlaintext" | "GenerateMac" | "VerifyMac" | "DeriveSharedSecret")]
472
492
  attr_accessor constraints: Types::GrantConstraints
473
493
  SENSITIVE: []
474
494
  end
@@ -573,7 +593,7 @@ module Aws::KMS
573
593
  attr_accessor creation_date: ::Time
574
594
  attr_accessor enabled: bool
575
595
  attr_accessor description: ::String
576
- attr_accessor key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC")
596
+ attr_accessor key_usage: ("SIGN_VERIFY" | "ENCRYPT_DECRYPT" | "GENERATE_VERIFY_MAC" | "KEY_AGREEMENT")
577
597
  attr_accessor key_state: ("Creating" | "Enabled" | "Disabled" | "PendingDeletion" | "PendingImport" | "PendingReplicaDeletion" | "Unavailable" | "Updating")
578
598
  attr_accessor deletion_date: ::Time
579
599
  attr_accessor valid_to: ::Time
@@ -586,6 +606,7 @@ module Aws::KMS
586
606
  attr_accessor key_spec: ("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" | "SM2")
587
607
  attr_accessor encryption_algorithms: ::Array[("SYMMETRIC_DEFAULT" | "RSAES_OAEP_SHA_1" | "RSAES_OAEP_SHA_256" | "SM2PKE")]
588
608
  attr_accessor signing_algorithms: ::Array[("RSASSA_PSS_SHA_256" | "RSASSA_PSS_SHA_384" | "RSASSA_PSS_SHA_512" | "RSASSA_PKCS1_V1_5_SHA_256" | "RSASSA_PKCS1_V1_5_SHA_384" | "RSASSA_PKCS1_V1_5_SHA_512" | "ECDSA_SHA_256" | "ECDSA_SHA_384" | "ECDSA_SHA_512" | "SM2DSA")]
609
+ attr_accessor key_agreement_algorithms: ::Array[("ECDH")]
589
610
  attr_accessor multi_region: bool
590
611
  attr_accessor multi_region_configuration: Types::MultiRegionConfiguration
591
612
  attr_accessor pending_deletion_window_in_days: ::Integer
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-kms
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.81.0
4
+ version: 1.87.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-13 00:00:00.000000000 Z
11
+ date: 2024-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.193.0
22
+ version: 3.199.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.193.0
32
+ version: 3.199.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: aws-sigv4
35
35
  requirement: !ruby/object:Gem::Requirement