aws-sdk-kms 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b550ddbb43764a42cccda6f4cc81bbd731970cfc
4
+ data.tar.gz: 988e4adcf959f4ec893ffce5261488fc47310271
5
+ SHA512:
6
+ metadata.gz: 8f305e6cd783332f432ab9e7e38a6a3166ddd9c598879f365c711433e8e8b571d9b94e96d12ba2819793d69ab8c685406a6a01aee6b5c36959978e95b9ce08f4
7
+ data.tar.gz: c59213a82532eb4790a60a7f4955861ad1d16f01e65e2b07ec5d98c17a72ccf5e7ecfda8605566cdc7d22150f9571fa4497eb6f3a93a4ea13b4303c0e0e8edce
@@ -0,0 +1,47 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ require 'aws-sdk-core'
9
+ require 'aws-sigv4'
10
+
11
+ require_relative 'aws-sdk-kms/types'
12
+ require_relative 'aws-sdk-kms/client_api'
13
+ require_relative 'aws-sdk-kms/client'
14
+ require_relative 'aws-sdk-kms/errors'
15
+ require_relative 'aws-sdk-kms/resource'
16
+ require_relative 'aws-sdk-kms/customizations'
17
+
18
+ # This module provides support for AWS Key Management Service. This module is available in the
19
+ # `aws-sdk-kms` gem.
20
+ #
21
+ # # Client
22
+ #
23
+ # The {Client} class provides one method for each API operation. Operation
24
+ # methods each accept a hash of request parameters and return a response
25
+ # structure.
26
+ #
27
+ # See {Client} for more information.
28
+ #
29
+ # # Errors
30
+ #
31
+ # Errors returned from AWS Key Management Service all
32
+ # extend {Errors::ServiceError}.
33
+ #
34
+ # begin
35
+ # # do stuff
36
+ # rescue Aws::KMS::Errors::ServiceError
37
+ # # rescues all service API errors
38
+ # end
39
+ #
40
+ # See {Errors} for more information.
41
+ #
42
+ # @service
43
+ module Aws::KMS
44
+
45
+ GEM_VERSION = '1.0.0.rc1'
46
+
47
+ end
@@ -0,0 +1,1959 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ require 'seahorse/client/plugins/content_length.rb'
9
+ require 'aws-sdk-core/plugins/credentials_configuration.rb'
10
+ require 'aws-sdk-core/plugins/logging.rb'
11
+ require 'aws-sdk-core/plugins/param_converter.rb'
12
+ require 'aws-sdk-core/plugins/param_validator.rb'
13
+ require 'aws-sdk-core/plugins/user_agent.rb'
14
+ require 'aws-sdk-core/plugins/helpful_socket_errors.rb'
15
+ require 'aws-sdk-core/plugins/retry_errors.rb'
16
+ require 'aws-sdk-core/plugins/global_configuration.rb'
17
+ require 'aws-sdk-core/plugins/regional_endpoint.rb'
18
+ require 'aws-sdk-core/plugins/response_paging.rb'
19
+ require 'aws-sdk-core/plugins/stub_responses.rb'
20
+ require 'aws-sdk-core/plugins/idempotency_token.rb'
21
+ require 'aws-sdk-core/plugins/signature_v4.rb'
22
+ require 'aws-sdk-core/plugins/protocols/json_rpc.rb'
23
+
24
+ Aws::Plugins::GlobalConfiguration.add_identifier(:kms)
25
+
26
+ module Aws
27
+ module KMS
28
+ class Client < Seahorse::Client::Base
29
+
30
+ include Aws::ClientStubs
31
+
32
+ @identifier = :kms
33
+
34
+ set_api(ClientApi::API)
35
+
36
+ add_plugin(Seahorse::Client::Plugins::ContentLength)
37
+ add_plugin(Aws::Plugins::CredentialsConfiguration)
38
+ add_plugin(Aws::Plugins::Logging)
39
+ add_plugin(Aws::Plugins::ParamConverter)
40
+ add_plugin(Aws::Plugins::ParamValidator)
41
+ add_plugin(Aws::Plugins::UserAgent)
42
+ add_plugin(Aws::Plugins::HelpfulSocketErrors)
43
+ add_plugin(Aws::Plugins::RetryErrors)
44
+ add_plugin(Aws::Plugins::GlobalConfiguration)
45
+ add_plugin(Aws::Plugins::RegionalEndpoint)
46
+ add_plugin(Aws::Plugins::ResponsePaging)
47
+ add_plugin(Aws::Plugins::StubResponses)
48
+ add_plugin(Aws::Plugins::IdempotencyToken)
49
+ add_plugin(Aws::Plugins::SignatureV4)
50
+ add_plugin(Aws::Plugins::Protocols::JsonRpc)
51
+
52
+ # @option options [required, Aws::CredentialProvider] :credentials
53
+ # Your AWS credentials. This can be an instance of any one of the
54
+ # following classes:
55
+ #
56
+ # * `Aws::Credentials` - Used for configuring static, non-refreshing
57
+ # credentials.
58
+ #
59
+ # * `Aws::InstanceProfileCredentials` - Used for loading credentials
60
+ # from an EC2 IMDS on an EC2 instance.
61
+ #
62
+ # * `Aws::SharedCredentials` - Used for loading credentials from a
63
+ # shared file, such as `~/.aws/config`.
64
+ #
65
+ # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
66
+ #
67
+ # When `:credentials` are not configured directly, the following
68
+ # locations will be searched for credentials:
69
+ #
70
+ # * `Aws.config[:credentials]`
71
+ # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
72
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
73
+ # * `~/.aws/credentials`
74
+ # * `~/.aws/config`
75
+ # * EC2 IMDS instance profile - When used by default, the timeouts are
76
+ # very aggressive. Construct and pass an instance of
77
+ # `Aws::InstanceProfileCredentails` to enable retries and extended
78
+ # timeouts.
79
+ # @option options [required, String] :region
80
+ # The AWS region to connect to. The configured `:region` is
81
+ # used to determine the service `:endpoint`. When not passed,
82
+ # a default `:region` is search for in the following locations:
83
+ #
84
+ # * `Aws.config[:region]`
85
+ # * `ENV['AWS_REGION']`
86
+ # * `ENV['AMAZON_REGION']`
87
+ # * `ENV['AWS_DEFAULT_REGION']`
88
+ # * `~/.aws/credentials`
89
+ # * `~/.aws/config`
90
+ # @option options [String] :access_key_id
91
+ # @option options [Boolean] :convert_params (true)
92
+ # When `true`, an attempt is made to coerce request parameters into
93
+ # the required types.
94
+ # @option options [String] :endpoint
95
+ # The client endpoint is normally constructed from the `:region`
96
+ # option. You should only configure an `:endpoint` when connecting
97
+ # to test endpoints. This should be avalid HTTP(S) URI.
98
+ # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
99
+ # The log formatter.
100
+ # @option options [Symbol] :log_level (:info)
101
+ # The log level to send messages to the `:logger` at.
102
+ # @option options [Logger] :logger
103
+ # The Logger instance to send log messages to. If this option
104
+ # is not set, logging will be disabled.
105
+ # @option options [String] :profile ("default")
106
+ # Used when loading credentials from the shared credentials file
107
+ # at HOME/.aws/credentials. When not specified, 'default' is used.
108
+ # @option options [Integer] :retry_limit (3)
109
+ # The maximum number of times to retry failed requests. Only
110
+ # ~ 500 level server errors and certain ~ 400 level client errors
111
+ # are retried. Generally, these are throttling errors, data
112
+ # checksum errors, networking errors, timeout errors and auth
113
+ # errors from expired credentials.
114
+ # @option options [String] :secret_access_key
115
+ # @option options [String] :session_token
116
+ # @option options [Boolean] :simple_json (false)
117
+ # Disables request parameter conversion, validation, and formatting.
118
+ # Also disable response data type conversions. This option is useful
119
+ # when you want to ensure the highest level of performance by
120
+ # avoiding overhead of walking request parameters and response data
121
+ # structures.
122
+ #
123
+ # When `:simple_json` is enabled, the request parameters hash must
124
+ # be formatted exactly as the DynamoDB API expects.
125
+ # @option options [Boolean] :stub_responses (false)
126
+ # Causes the client to return stubbed responses. By default
127
+ # fake responses are generated and returned. You can specify
128
+ # the response data to return or errors to raise by calling
129
+ # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
130
+ #
131
+ # ** Please note ** When response stubbing is enabled, no HTTP
132
+ # requests are made, and retries are disabled.
133
+ # @option options [Boolean] :validate_params (true)
134
+ # When `true`, request parameters are validated before
135
+ # sending the request.
136
+ def initialize(*args)
137
+ super
138
+ end
139
+
140
+ # @!group API Operations
141
+
142
+ # Cancels the deletion of a customer master key (CMK). When this
143
+ # operation is successful, the CMK is set to the `Disabled` state. To
144
+ # enable a CMK, use EnableKey.
145
+ #
146
+ # For more information about scheduling and canceling deletion of a CMK,
147
+ # see [Deleting Customer Master Keys][1] in the *AWS Key Management
148
+ # Service Developer Guide*.
149
+ #
150
+ #
151
+ #
152
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html
153
+ # @option params [required, String] :key_id
154
+ # The unique identifier for the customer master key (CMK) for which to
155
+ # cancel deletion.
156
+ #
157
+ # To specify this value, use the unique key ID or the Amazon Resource
158
+ # Name (ARN) of the CMK. Examples:
159
+ #
160
+ # * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
161
+ #
162
+ # * Key ARN:
163
+ # arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
164
+ #
165
+ # To obtain the unique key ID and key ARN for a given CMK, use ListKeys
166
+ # or DescribeKey.
167
+ # @return [Types::CancelKeyDeletionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
168
+ #
169
+ # * {Types::CancelKeyDeletionResponse#key_id #KeyId} => String
170
+ #
171
+ # @example Request syntax with placeholder values
172
+ # resp = client.cancel_key_deletion({
173
+ # key_id: "KeyIdType", # required
174
+ # })
175
+ #
176
+ # @example Response structure
177
+ # resp.key_id #=> String
178
+ # @overload cancel_key_deletion(params = {})
179
+ # @param [Hash] params ({})
180
+ def cancel_key_deletion(params = {}, options = {})
181
+ req = build_request(:cancel_key_deletion, params)
182
+ req.send_request(options)
183
+ end
184
+
185
+ # Creates a display name for a customer master key. An alias can be used
186
+ # to identify a key and should be unique. The console enforces a
187
+ # one-to-one mapping between the alias and a key. An alias name can
188
+ # contain only alphanumeric characters, forward slashes (/), underscores
189
+ # (\_), and dashes (-). An alias must start with the word "alias"
190
+ # followed by a forward slash (alias/). An alias that begins with
191
+ # "aws" after the forward slash (alias/aws...) is reserved by Amazon
192
+ # Web Services (AWS).
193
+ #
194
+ # The alias and the key it is mapped to must be in the same AWS account
195
+ # and the same region.
196
+ #
197
+ # To map an alias to a different key, call UpdateAlias.
198
+ # @option params [required, String] :alias_name
199
+ # String that contains the display name. The name must start with the
200
+ # word "alias" followed by a forward slash (alias/). Aliases that
201
+ # begin with "alias/AWS" are reserved.
202
+ # @option params [required, String] :target_key_id
203
+ # An identifier of the key for which you are creating the alias. This
204
+ # value cannot be another alias but can be a globally unique identifier
205
+ # or a fully specified ARN to a key.
206
+ #
207
+ # * Key ARN Example -
208
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
209
+ #
210
+ # * Globally Unique Key ID Example -
211
+ # 12345678-1234-1234-1234-123456789012
212
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
213
+ #
214
+ # @example Request syntax with placeholder values
215
+ # resp = client.create_alias({
216
+ # alias_name: "AliasNameType", # required
217
+ # target_key_id: "KeyIdType", # required
218
+ # })
219
+ # @overload create_alias(params = {})
220
+ # @param [Hash] params ({})
221
+ def create_alias(params = {}, options = {})
222
+ req = build_request(:create_alias, params)
223
+ req.send_request(options)
224
+ end
225
+
226
+ # Adds a grant to a key to specify who can use the key and under what
227
+ # conditions. Grants are alternate permission mechanisms to key
228
+ # policies.
229
+ #
230
+ # For more information about grants, see [Grants][1] in the *AWS Key
231
+ # Management Service Developer Guide*.
232
+ #
233
+ #
234
+ #
235
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/grants.html
236
+ # @option params [required, String] :key_id
237
+ # The unique identifier for the customer master key (CMK) that the grant
238
+ # applies to.
239
+ #
240
+ # To specify this value, use the globally unique key ID or the Amazon
241
+ # Resource Name (ARN) of the key. Examples:
242
+ #
243
+ # * Globally unique key ID: 12345678-1234-1234-1234-123456789012
244
+ #
245
+ # * Key ARN:
246
+ # arn:aws:kms:us-west-2:123456789012:key/12345678-1234-1234-1234-123456789012
247
+ # @option params [required, String] :grantee_principal
248
+ # The principal that is given permission to perform the operations that
249
+ # the grant permits.
250
+ #
251
+ # To specify the principal, use the [Amazon Resource Name (ARN)][1] of
252
+ # an AWS principal. Valid AWS principals include AWS accounts (root),
253
+ # IAM users, federated users, and assumed role users. For examples of
254
+ # the ARN syntax to use for specifying a principal, see [AWS Identity
255
+ # and Access Management (IAM)][2] in the Example ARNs section of the
256
+ # *AWS General Reference*.
257
+ #
258
+ #
259
+ #
260
+ # [1]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
261
+ # [2]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam
262
+ # @option params [String] :retiring_principal
263
+ # The principal that is given permission to retire the grant by using
264
+ # RetireGrant operation.
265
+ #
266
+ # To specify the principal, use the [Amazon Resource Name (ARN)][1] of
267
+ # an AWS principal. Valid AWS principals include AWS accounts (root),
268
+ # IAM users, federated users, and assumed role users. For examples of
269
+ # the ARN syntax to use for specifying a principal, see [AWS Identity
270
+ # and Access Management (IAM)][2] in the Example ARNs section of the
271
+ # *AWS General Reference*.
272
+ #
273
+ #
274
+ #
275
+ # [1]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
276
+ # [2]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam
277
+ # @option params [Array<String>] :operations
278
+ # A list of operations that the grant permits. The list can contain any
279
+ # combination of one or more of the following values:
280
+ #
281
+ # * Decrypt
282
+ #
283
+ # * Encrypt
284
+ #
285
+ # * GenerateDataKey
286
+ #
287
+ # * GenerateDataKeyWithoutPlaintext
288
+ #
289
+ # * [ReEncryptFrom][1]
290
+ #
291
+ # * [ReEncryptTo][1]
292
+ #
293
+ # * CreateGrant
294
+ #
295
+ # * RetireGrant
296
+ #
297
+ # * DescribeKey
298
+ #
299
+ #
300
+ #
301
+ # [1]: http://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html
302
+ # @option params [Types::GrantConstraints] :constraints
303
+ # The conditions under which the operations permitted by the grant are
304
+ # allowed.
305
+ #
306
+ # You can use this value to allow the operations permitted by the grant
307
+ # only when a specified encryption context is present. For more
308
+ # information, see [Encryption Context][1] in the *AWS Key Management
309
+ # Service Developer Guide*.
310
+ #
311
+ #
312
+ #
313
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html
314
+ # @option params [Array<String>] :grant_tokens
315
+ # A list of grant tokens.
316
+ #
317
+ # For more information, see [Grant Tokens][1] in the *AWS Key Management
318
+ # Service Developer Guide*.
319
+ #
320
+ #
321
+ #
322
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
323
+ # @option params [String] :name
324
+ # A friendly name for identifying the grant. Use this value to prevent
325
+ # unintended creation of duplicate grants when retrying this request.
326
+ #
327
+ # When this value is absent, all `CreateGrant` requests result in a new
328
+ # grant with a unique `GrantId` even if all the supplied parameters are
329
+ # identical. This can result in unintended duplicates when you retry the
330
+ # `CreateGrant` request.
331
+ #
332
+ # When this value is present, you can retry a `CreateGrant` request with
333
+ # identical parameters; if the grant already exists, the original
334
+ # `GrantId` is returned without creating a new grant. Note that the
335
+ # returned grant token is unique with every `CreateGrant` request, even
336
+ # when a duplicate `GrantId` is returned. All grant tokens obtained in
337
+ # this way can be used interchangeably.
338
+ # @return [Types::CreateGrantResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
339
+ #
340
+ # * {Types::CreateGrantResponse#grant_token #GrantToken} => String
341
+ # * {Types::CreateGrantResponse#grant_id #GrantId} => String
342
+ #
343
+ # @example Request syntax with placeholder values
344
+ # resp = client.create_grant({
345
+ # key_id: "KeyIdType", # required
346
+ # grantee_principal: "PrincipalIdType", # required
347
+ # retiring_principal: "PrincipalIdType",
348
+ # operations: ["Decrypt"], # accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, CreateGrant, RetireGrant, DescribeKey
349
+ # constraints: {
350
+ # encryption_context_subset: {
351
+ # "EncryptionContextKey" => "EncryptionContextValue",
352
+ # },
353
+ # encryption_context_equals: {
354
+ # "EncryptionContextKey" => "EncryptionContextValue",
355
+ # },
356
+ # },
357
+ # grant_tokens: ["GrantTokenType"],
358
+ # name: "GrantNameType",
359
+ # })
360
+ #
361
+ # @example Response structure
362
+ # resp.grant_token #=> String
363
+ # resp.grant_id #=> String
364
+ # @overload create_grant(params = {})
365
+ # @param [Hash] params ({})
366
+ def create_grant(params = {}, options = {})
367
+ req = build_request(:create_grant, params)
368
+ req.send_request(options)
369
+ end
370
+
371
+ # Creates a customer master key (CMK).
372
+ #
373
+ # You can use a CMK to encrypt small amounts of data (4 KiB or less)
374
+ # directly, but CMKs are more commonly used to encrypt data encryption
375
+ # keys (DEKs), which are used to encrypt raw data. For more information
376
+ # about DEKs and the difference between CMKs and DEKs, see the
377
+ # following:
378
+ #
379
+ # * The GenerateDataKey operation
380
+ #
381
+ # * [AWS Key Management Service Concepts][1] in the *AWS Key Management
382
+ # Service Developer Guide*
383
+ #
384
+ #
385
+ #
386
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html
387
+ # @option params [String] :policy
388
+ # The key policy to attach to the CMK.
389
+ #
390
+ # If you specify a policy and do not set
391
+ # `BypassPolicyLockoutSafetyCheck` to true, the policy must meet the
392
+ # following criteria:
393
+ #
394
+ # * It must allow the principal making the `CreateKey` request to make a
395
+ # subsequent PutKeyPolicy request on the CMK. This reduces the
396
+ # likelihood that the CMK becomes unmanageable. For more information,
397
+ # refer to the scenario in the [Default Key Policy][1] section in the
398
+ # *AWS Key Management Service Developer Guide*.
399
+ #
400
+ # * The principal(s) specified in the key policy must exist and be
401
+ # visible to AWS KMS. When you create a new AWS principal (for
402
+ # example, an IAM user or role), you might need to enforce a delay
403
+ # before specifying the new principal in a key policy because the new
404
+ # principal might not immediately be visible to AWS KMS. For more
405
+ # information, see [Changes that I make are not always immediately
406
+ # visible][2] in the *IAM User Guide*.
407
+ #
408
+ # If you do not specify a policy, AWS KMS attaches a default key policy
409
+ # to the CMK. For more information, see [Default Key Policy][3] in the
410
+ # *AWS Key Management Service Developer Guide*.
411
+ #
412
+ # The policy size limit is 32 KiB (32768 bytes).
413
+ #
414
+ #
415
+ #
416
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
417
+ # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency
418
+ # [3]: http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default
419
+ # @option params [String] :description
420
+ # A description of the CMK.
421
+ #
422
+ # Use a description that helps you decide whether the CMK is appropriate
423
+ # for a task.
424
+ # @option params [String] :key_usage
425
+ # The intended use of the CMK.
426
+ #
427
+ # You can use CMKs only for symmetric encryption and decryption.
428
+ # @option params [String] :origin
429
+ # The source of the CMK's key material.
430
+ #
431
+ # The default is `AWS_KMS`, which means AWS KMS creates the key
432
+ # material. When this parameter is set to `EXTERNAL`, the request
433
+ # creates a CMK without key material so that you can import key material
434
+ # from your existing key management infrastructure. For more information
435
+ # about importing key material into AWS KMS, see [Importing Key
436
+ # Material][1] in the *AWS Key Management Service Developer Guide*.
437
+ #
438
+ # The CMK's `Origin` is immutable and is set when the CMK is created.
439
+ #
440
+ #
441
+ #
442
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
443
+ # @option params [Boolean] :bypass_policy_lockout_safety_check
444
+ # A flag to indicate whether to bypass the key policy lockout safety
445
+ # check.
446
+ #
447
+ # Setting this value to true increases the likelihood that the CMK
448
+ # becomes unmanageable. Do not set this value to true indiscriminately.
449
+ #
450
+ # For more information, refer to the scenario in the [Default Key
451
+ # Policy][1] section in the *AWS Key Management Service Developer
452
+ # Guide*.
453
+ #
454
+ # Use this parameter only when you include a policy in the request and
455
+ # you intend to prevent the principal making the request from making a
456
+ # subsequent PutKeyPolicy request on the CMK.
457
+ #
458
+ # The default value is false.
459
+ #
460
+ #
461
+ #
462
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
463
+ # @return [Types::CreateKeyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
464
+ #
465
+ # * {Types::CreateKeyResponse#key_metadata #KeyMetadata} => Types::KeyMetadata
466
+ #
467
+ # @example Request syntax with placeholder values
468
+ # resp = client.create_key({
469
+ # policy: "PolicyType",
470
+ # description: "DescriptionType",
471
+ # key_usage: "ENCRYPT_DECRYPT", # accepts ENCRYPT_DECRYPT
472
+ # origin: "AWS_KMS", # accepts AWS_KMS, EXTERNAL
473
+ # bypass_policy_lockout_safety_check: false,
474
+ # })
475
+ #
476
+ # @example Response structure
477
+ # resp.key_metadata.aws_account_id #=> String
478
+ # resp.key_metadata.key_id #=> String
479
+ # resp.key_metadata.arn #=> String
480
+ # resp.key_metadata.creation_date #=> Time
481
+ # resp.key_metadata.enabled #=> Boolean
482
+ # resp.key_metadata.description #=> String
483
+ # resp.key_metadata.key_usage #=> String, one of "ENCRYPT_DECRYPT"
484
+ # resp.key_metadata.key_state #=> String, one of "Enabled", "Disabled", "PendingDeletion", "PendingImport"
485
+ # resp.key_metadata.deletion_date #=> Time
486
+ # resp.key_metadata.valid_to #=> Time
487
+ # resp.key_metadata.origin #=> String, one of "AWS_KMS", "EXTERNAL"
488
+ # resp.key_metadata.expiration_model #=> String, one of "KEY_MATERIAL_EXPIRES", "KEY_MATERIAL_DOES_NOT_EXPIRE"
489
+ # @overload create_key(params = {})
490
+ # @param [Hash] params ({})
491
+ def create_key(params = {}, options = {})
492
+ req = build_request(:create_key, params)
493
+ req.send_request(options)
494
+ end
495
+
496
+ # Decrypts ciphertext. Ciphertext is plaintext that has been previously
497
+ # encrypted by using any of the following functions:
498
+ #
499
+ # * GenerateDataKey
500
+ #
501
+ # * GenerateDataKeyWithoutPlaintext
502
+ #
503
+ # * Encrypt
504
+ #
505
+ # Note that if a caller has been granted access permissions to all keys
506
+ # (through, for example, IAM user policies that grant `Decrypt`
507
+ # permission on all resources), then ciphertext encrypted by using keys
508
+ # in other accounts where the key grants access to the caller can be
509
+ # decrypted. To remedy this, we recommend that you do not grant
510
+ # `Decrypt` access in an IAM user policy. Instead grant `Decrypt` access
511
+ # only in key policies. If you must grant `Decrypt` access in an IAM
512
+ # user policy, you should scope the resource to specific keys or to
513
+ # specific trusted accounts.
514
+ # @option params [required, String, IO] :ciphertext_blob
515
+ # Ciphertext to be decrypted. The blob includes metadata.
516
+ # @option params [Hash<String,String>] :encryption_context
517
+ # The encryption context. If this was specified in the Encrypt function,
518
+ # it must be specified here or the decryption operation will fail. For
519
+ # more information, see [Encryption Context][1].
520
+ #
521
+ #
522
+ #
523
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html
524
+ # @option params [Array<String>] :grant_tokens
525
+ # A list of grant tokens.
526
+ #
527
+ # For more information, see [Grant Tokens][1] in the *AWS Key Management
528
+ # Service Developer Guide*.
529
+ #
530
+ #
531
+ #
532
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
533
+ # @return [Types::DecryptResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
534
+ #
535
+ # * {Types::DecryptResponse#key_id #KeyId} => String
536
+ # * {Types::DecryptResponse#plaintext #Plaintext} => String
537
+ #
538
+ # @example Request syntax with placeholder values
539
+ # resp = client.decrypt({
540
+ # ciphertext_blob: "data", # required
541
+ # encryption_context: {
542
+ # "EncryptionContextKey" => "EncryptionContextValue",
543
+ # },
544
+ # grant_tokens: ["GrantTokenType"],
545
+ # })
546
+ #
547
+ # @example Response structure
548
+ # resp.key_id #=> String
549
+ # resp.plaintext #=> String
550
+ # @overload decrypt(params = {})
551
+ # @param [Hash] params ({})
552
+ def decrypt(params = {}, options = {})
553
+ req = build_request(:decrypt, params)
554
+ req.send_request(options)
555
+ end
556
+
557
+ # Deletes the specified alias. To map an alias to a different key, call
558
+ # UpdateAlias.
559
+ # @option params [required, String] :alias_name
560
+ # The alias to be deleted. The name must start with the word "alias"
561
+ # followed by a forward slash (alias/). Aliases that begin with
562
+ # "alias/AWS" are reserved.
563
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
564
+ #
565
+ # @example Request syntax with placeholder values
566
+ # resp = client.delete_alias({
567
+ # alias_name: "AliasNameType", # required
568
+ # })
569
+ # @overload delete_alias(params = {})
570
+ # @param [Hash] params ({})
571
+ def delete_alias(params = {}, options = {})
572
+ req = build_request(:delete_alias, params)
573
+ req.send_request(options)
574
+ end
575
+
576
+ # Deletes key material that you previously imported and makes the
577
+ # specified customer master key (CMK) unusable. For more information
578
+ # about importing key material into AWS KMS, see [Importing Key
579
+ # Material][1] in the *AWS Key Management Service Developer Guide*.
580
+ #
581
+ # When the specified CMK is in the `PendingDeletion` state, this
582
+ # operation does not change the CMK's state. Otherwise, it changes the
583
+ # CMK's state to `PendingImport`.
584
+ #
585
+ # After you delete key material, you can use ImportKeyMaterial to
586
+ # reimport the same key material into the CMK.
587
+ #
588
+ #
589
+ #
590
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
591
+ # @option params [required, String] :key_id
592
+ # The identifier of the CMK whose key material to delete. The CMK's
593
+ # `Origin` must be `EXTERNAL`.
594
+ #
595
+ # A valid identifier is the unique key ID or the Amazon Resource Name
596
+ # (ARN) of the CMK. Examples:
597
+ #
598
+ # * Unique key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
599
+ #
600
+ # * Key ARN:
601
+ # `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
602
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
603
+ #
604
+ # @example Request syntax with placeholder values
605
+ # resp = client.delete_imported_key_material({
606
+ # key_id: "KeyIdType", # required
607
+ # })
608
+ # @overload delete_imported_key_material(params = {})
609
+ # @param [Hash] params ({})
610
+ def delete_imported_key_material(params = {}, options = {})
611
+ req = build_request(:delete_imported_key_material, params)
612
+ req.send_request(options)
613
+ end
614
+
615
+ # Provides detailed information about the specified customer master key.
616
+ # @option params [required, String] :key_id
617
+ # A unique identifier for the customer master key. This value can be a
618
+ # globally unique identifier, a fully specified ARN to either an alias
619
+ # or a key, or an alias name prefixed by "alias/".
620
+ #
621
+ # * Key ARN Example -
622
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
623
+ #
624
+ # * Alias ARN Example -
625
+ # arn:aws:kms:us-east-1:123456789012:alias/MyAliasName
626
+ #
627
+ # * Globally Unique Key ID Example -
628
+ # 12345678-1234-1234-1234-123456789012
629
+ #
630
+ # * Alias Name Example - alias/MyAliasName
631
+ # @option params [Array<String>] :grant_tokens
632
+ # A list of grant tokens.
633
+ #
634
+ # For more information, see [Grant Tokens][1] in the *AWS Key Management
635
+ # Service Developer Guide*.
636
+ #
637
+ #
638
+ #
639
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
640
+ # @return [Types::DescribeKeyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
641
+ #
642
+ # * {Types::DescribeKeyResponse#key_metadata #KeyMetadata} => Types::KeyMetadata
643
+ #
644
+ # @example Request syntax with placeholder values
645
+ # resp = client.describe_key({
646
+ # key_id: "KeyIdType", # required
647
+ # grant_tokens: ["GrantTokenType"],
648
+ # })
649
+ #
650
+ # @example Response structure
651
+ # resp.key_metadata.aws_account_id #=> String
652
+ # resp.key_metadata.key_id #=> String
653
+ # resp.key_metadata.arn #=> String
654
+ # resp.key_metadata.creation_date #=> Time
655
+ # resp.key_metadata.enabled #=> Boolean
656
+ # resp.key_metadata.description #=> String
657
+ # resp.key_metadata.key_usage #=> String, one of "ENCRYPT_DECRYPT"
658
+ # resp.key_metadata.key_state #=> String, one of "Enabled", "Disabled", "PendingDeletion", "PendingImport"
659
+ # resp.key_metadata.deletion_date #=> Time
660
+ # resp.key_metadata.valid_to #=> Time
661
+ # resp.key_metadata.origin #=> String, one of "AWS_KMS", "EXTERNAL"
662
+ # resp.key_metadata.expiration_model #=> String, one of "KEY_MATERIAL_EXPIRES", "KEY_MATERIAL_DOES_NOT_EXPIRE"
663
+ # @overload describe_key(params = {})
664
+ # @param [Hash] params ({})
665
+ def describe_key(params = {}, options = {})
666
+ req = build_request(:describe_key, params)
667
+ req.send_request(options)
668
+ end
669
+
670
+ # Sets the state of a customer master key (CMK) to disabled, thereby
671
+ # preventing its use for cryptographic operations. For more information
672
+ # about how key state affects the use of a CMK, see [How Key State
673
+ # Affects the Use of a Customer Master Key][1] in the *AWS Key
674
+ # Management Service Developer Guide*.
675
+ #
676
+ #
677
+ #
678
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
679
+ # @option params [required, String] :key_id
680
+ # A unique identifier for the CMK.
681
+ #
682
+ # Use the CMK's unique identifier or its Amazon Resource Name (ARN).
683
+ # For example:
684
+ #
685
+ # * Unique ID: 1234abcd-12ab-34cd-56ef-1234567890ab
686
+ #
687
+ # * ARN:
688
+ # arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
689
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
690
+ #
691
+ # @example Request syntax with placeholder values
692
+ # resp = client.disable_key({
693
+ # key_id: "KeyIdType", # required
694
+ # })
695
+ # @overload disable_key(params = {})
696
+ # @param [Hash] params ({})
697
+ def disable_key(params = {}, options = {})
698
+ req = build_request(:disable_key, params)
699
+ req.send_request(options)
700
+ end
701
+
702
+ # Disables rotation of the specified key.
703
+ # @option params [required, String] :key_id
704
+ # A unique identifier for the customer master key. This value can be a
705
+ # globally unique identifier or the fully specified ARN to a key.
706
+ #
707
+ # * Key ARN Example -
708
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
709
+ #
710
+ # * Globally Unique Key ID Example -
711
+ # 12345678-1234-1234-1234-123456789012
712
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
713
+ #
714
+ # @example Request syntax with placeholder values
715
+ # resp = client.disable_key_rotation({
716
+ # key_id: "KeyIdType", # required
717
+ # })
718
+ # @overload disable_key_rotation(params = {})
719
+ # @param [Hash] params ({})
720
+ def disable_key_rotation(params = {}, options = {})
721
+ req = build_request(:disable_key_rotation, params)
722
+ req.send_request(options)
723
+ end
724
+
725
+ # Marks a key as enabled, thereby permitting its use.
726
+ # @option params [required, String] :key_id
727
+ # A unique identifier for the customer master key. This value can be a
728
+ # globally unique identifier or the fully specified ARN to a key.
729
+ #
730
+ # * Key ARN Example -
731
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
732
+ #
733
+ # * Globally Unique Key ID Example -
734
+ # 12345678-1234-1234-1234-123456789012
735
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
736
+ #
737
+ # @example Request syntax with placeholder values
738
+ # resp = client.enable_key({
739
+ # key_id: "KeyIdType", # required
740
+ # })
741
+ # @overload enable_key(params = {})
742
+ # @param [Hash] params ({})
743
+ def enable_key(params = {}, options = {})
744
+ req = build_request(:enable_key, params)
745
+ req.send_request(options)
746
+ end
747
+
748
+ # Enables rotation of the specified customer master key.
749
+ # @option params [required, String] :key_id
750
+ # A unique identifier for the customer master key. This value can be a
751
+ # globally unique identifier or the fully specified ARN to a key.
752
+ #
753
+ # * Key ARN Example -
754
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
755
+ #
756
+ # * Globally Unique Key ID Example -
757
+ # 12345678-1234-1234-1234-123456789012
758
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
759
+ #
760
+ # @example Request syntax with placeholder values
761
+ # resp = client.enable_key_rotation({
762
+ # key_id: "KeyIdType", # required
763
+ # })
764
+ # @overload enable_key_rotation(params = {})
765
+ # @param [Hash] params ({})
766
+ def enable_key_rotation(params = {}, options = {})
767
+ req = build_request(:enable_key_rotation, params)
768
+ req.send_request(options)
769
+ end
770
+
771
+ # Encrypts plaintext into ciphertext by using a customer master key. The
772
+ # `Encrypt` function has two primary use cases:
773
+ #
774
+ # * You can encrypt up to 4 KB of arbitrary data such as an RSA key, a
775
+ # database password, or other sensitive customer information.
776
+ #
777
+ # * If you are moving encrypted data from one region to another, you can
778
+ # use this API to encrypt in the new region the plaintext data key
779
+ # that was used to encrypt the data in the original region. This
780
+ # provides you with an encrypted copy of the data key that can be
781
+ # decrypted in the new region and used there to decrypt the encrypted
782
+ # data.
783
+ #
784
+ # Unless you are moving encrypted data from one region to another, you
785
+ # don't use this function to encrypt a generated data key within a
786
+ # region. You retrieve data keys already encrypted by calling the
787
+ # GenerateDataKey or GenerateDataKeyWithoutPlaintext function. Data keys
788
+ # don't need to be encrypted again by calling `Encrypt`.
789
+ #
790
+ # If you want to encrypt data locally in your application, you can use
791
+ # the `GenerateDataKey` function to return a plaintext data encryption
792
+ # key and a copy of the key encrypted under the customer master key
793
+ # (CMK) of your choosing.
794
+ # @option params [required, String] :key_id
795
+ # A unique identifier for the customer master key. This value can be a
796
+ # globally unique identifier, a fully specified ARN to either an alias
797
+ # or a key, or an alias name prefixed by "alias/".
798
+ #
799
+ # * Key ARN Example -
800
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
801
+ #
802
+ # * Alias ARN Example -
803
+ # arn:aws:kms:us-east-1:123456789012:alias/MyAliasName
804
+ #
805
+ # * Globally Unique Key ID Example -
806
+ # 12345678-1234-1234-1234-123456789012
807
+ #
808
+ # * Alias Name Example - alias/MyAliasName
809
+ # @option params [required, String, IO] :plaintext
810
+ # Data to be encrypted.
811
+ # @option params [Hash<String,String>] :encryption_context
812
+ # Name-value pair that specifies the encryption context to be used for
813
+ # authenticated encryption. If used here, the same value must be
814
+ # supplied to the `Decrypt` API or decryption will fail. For more
815
+ # information, see [Encryption Context][1].
816
+ #
817
+ #
818
+ #
819
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html
820
+ # @option params [Array<String>] :grant_tokens
821
+ # A list of grant tokens.
822
+ #
823
+ # For more information, see [Grant Tokens][1] in the *AWS Key Management
824
+ # Service Developer Guide*.
825
+ #
826
+ #
827
+ #
828
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
829
+ # @return [Types::EncryptResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
830
+ #
831
+ # * {Types::EncryptResponse#ciphertext_blob #CiphertextBlob} => String
832
+ # * {Types::EncryptResponse#key_id #KeyId} => String
833
+ #
834
+ # @example Request syntax with placeholder values
835
+ # resp = client.encrypt({
836
+ # key_id: "KeyIdType", # required
837
+ # plaintext: "data", # required
838
+ # encryption_context: {
839
+ # "EncryptionContextKey" => "EncryptionContextValue",
840
+ # },
841
+ # grant_tokens: ["GrantTokenType"],
842
+ # })
843
+ #
844
+ # @example Response structure
845
+ # resp.ciphertext_blob #=> String
846
+ # resp.key_id #=> String
847
+ # @overload encrypt(params = {})
848
+ # @param [Hash] params ({})
849
+ def encrypt(params = {}, options = {})
850
+ req = build_request(:encrypt, params)
851
+ req.send_request(options)
852
+ end
853
+
854
+ # Returns a data encryption key that you can use in your application to
855
+ # encrypt data locally.
856
+ #
857
+ # You must specify the customer master key (CMK) under which to generate
858
+ # the data key. You must also specify the length of the data key using
859
+ # either the `KeySpec` or `NumberOfBytes` field. You must specify one
860
+ # field or the other, but not both. For common key lengths (128-bit and
861
+ # 256-bit symmetric keys), we recommend that you use `KeySpec`.
862
+ #
863
+ # This operation returns a plaintext copy of the data key in the
864
+ # `Plaintext` field of the response, and an encrypted copy of the data
865
+ # key in the `CiphertextBlob` field. The data key is encrypted under the
866
+ # CMK specified in the `KeyId` field of the request.
867
+ #
868
+ # We recommend that you use the following pattern to encrypt data
869
+ # locally in your application:
870
+ #
871
+ # 1. Use this operation (`GenerateDataKey`) to retrieve a data
872
+ # encryption key.
873
+ #
874
+ # 2. Use the plaintext data encryption key (returned in the `Plaintext`
875
+ # field of the response) to encrypt data locally, then erase the
876
+ # plaintext data key from memory.
877
+ #
878
+ # 3. Store the encrypted data key (returned in the `CiphertextBlob`
879
+ # field of the response) alongside the locally encrypted data.
880
+ #
881
+ # To decrypt data locally:
882
+ #
883
+ # 1. Use the Decrypt operation to decrypt the encrypted data key into a
884
+ # plaintext copy of the data key.
885
+ #
886
+ # 2. Use the plaintext data key to decrypt data locally, then erase the
887
+ # plaintext data key from memory.
888
+ #
889
+ # To return only an encrypted copy of the data key, use
890
+ # GenerateDataKeyWithoutPlaintext. To return an arbitrary unpredictable
891
+ # byte string, use GenerateRandom.
892
+ #
893
+ # If you use the optional `EncryptionContext` field, you must store at
894
+ # least enough information to be able to reconstruct the full encryption
895
+ # context when you later send the ciphertext to the Decrypt operation.
896
+ # It is a good practice to choose an encryption context that you can
897
+ # reconstruct on the fly to better secure the ciphertext. For more
898
+ # information, see [Encryption Context][1] in the *AWS Key Management
899
+ # Service Developer Guide*.
900
+ #
901
+ #
902
+ #
903
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html
904
+ # @option params [required, String] :key_id
905
+ # The identifier of the CMK under which to generate and encrypt the data
906
+ # encryption key.
907
+ #
908
+ # A valid identifier is the unique key ID or the Amazon Resource Name
909
+ # (ARN) of the CMK, or the alias name or ARN of an alias that points to
910
+ # the CMK. Examples:
911
+ #
912
+ # * Unique key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
913
+ #
914
+ # * CMK ARN:
915
+ # `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
916
+ #
917
+ # * Alias name: `alias/ExampleAlias`
918
+ #
919
+ # * Alias ARN: `arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias`
920
+ # @option params [Hash<String,String>] :encryption_context
921
+ # A set of key-value pairs that represents additional authenticated
922
+ # data.
923
+ #
924
+ # For more information, see [Encryption Context][1] in the *AWS Key
925
+ # Management Service Developer Guide*.
926
+ #
927
+ #
928
+ #
929
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html
930
+ # @option params [Integer] :number_of_bytes
931
+ # The length of the data encryption key in bytes. For example, use the
932
+ # value 64 to generate a 512-bit data key (64 bytes is 512 bits). For
933
+ # common key lengths (128-bit and 256-bit symmetric keys), we recommend
934
+ # that you use the `KeySpec` field instead of this one.
935
+ # @option params [String] :key_spec
936
+ # The length of the data encryption key. Use `AES_128` to generate a
937
+ # 128-bit symmetric key, or `AES_256` to generate a 256-bit symmetric
938
+ # key.
939
+ # @option params [Array<String>] :grant_tokens
940
+ # A list of grant tokens.
941
+ #
942
+ # For more information, see [Grant Tokens][1] in the *AWS Key Management
943
+ # Service Developer Guide*.
944
+ #
945
+ #
946
+ #
947
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
948
+ # @return [Types::GenerateDataKeyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
949
+ #
950
+ # * {Types::GenerateDataKeyResponse#ciphertext_blob #CiphertextBlob} => String
951
+ # * {Types::GenerateDataKeyResponse#plaintext #Plaintext} => String
952
+ # * {Types::GenerateDataKeyResponse#key_id #KeyId} => String
953
+ #
954
+ # @example Request syntax with placeholder values
955
+ # resp = client.generate_data_key({
956
+ # key_id: "KeyIdType", # required
957
+ # encryption_context: {
958
+ # "EncryptionContextKey" => "EncryptionContextValue",
959
+ # },
960
+ # number_of_bytes: 1,
961
+ # key_spec: "AES_256", # accepts AES_256, AES_128
962
+ # grant_tokens: ["GrantTokenType"],
963
+ # })
964
+ #
965
+ # @example Response structure
966
+ # resp.ciphertext_blob #=> String
967
+ # resp.plaintext #=> String
968
+ # resp.key_id #=> String
969
+ # @overload generate_data_key(params = {})
970
+ # @param [Hash] params ({})
971
+ def generate_data_key(params = {}, options = {})
972
+ req = build_request(:generate_data_key, params)
973
+ req.send_request(options)
974
+ end
975
+
976
+ # Returns a data encryption key encrypted under a customer master key
977
+ # (CMK). This operation is identical to GenerateDataKey but returns only
978
+ # the encrypted copy of the data key.
979
+ #
980
+ # This operation is useful in a system that has multiple components with
981
+ # different degrees of trust. For example, consider a system that stores
982
+ # encrypted data in containers. Each container stores the encrypted data
983
+ # and an encrypted copy of the data key. One component of the system,
984
+ # called the *control plane*, creates new containers. When it creates a
985
+ # new container, it uses this operation
986
+ # (`GenerateDataKeyWithoutPlaintext`) to get an encrypted data key and
987
+ # then stores it in the container. Later, a different component of the
988
+ # system, called the *data plane*, puts encrypted data into the
989
+ # containers. To do this, it passes the encrypted data key to the
990
+ # Decrypt operation, then uses the returned plaintext data key to
991
+ # encrypt data, and finally stores the encrypted data in the container.
992
+ # In this system, the control plane never sees the plaintext data key.
993
+ # @option params [required, String] :key_id
994
+ # The identifier of the CMK under which to generate and encrypt the data
995
+ # encryption key.
996
+ #
997
+ # A valid identifier is the unique key ID or the Amazon Resource Name
998
+ # (ARN) of the CMK, or the alias name or ARN of an alias that points to
999
+ # the CMK. Examples:
1000
+ #
1001
+ # * Unique key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1002
+ #
1003
+ # * CMK ARN:
1004
+ # `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1005
+ #
1006
+ # * Alias name: `alias/ExampleAlias`
1007
+ #
1008
+ # * Alias ARN: `arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias`
1009
+ # @option params [Hash<String,String>] :encryption_context
1010
+ # A set of key-value pairs that represents additional authenticated
1011
+ # data.
1012
+ #
1013
+ # For more information, see [Encryption Context][1] in the *AWS Key
1014
+ # Management Service Developer Guide*.
1015
+ #
1016
+ #
1017
+ #
1018
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html
1019
+ # @option params [String] :key_spec
1020
+ # The length of the data encryption key. Use `AES_128` to generate a
1021
+ # 128-bit symmetric key, or `AES_256` to generate a 256-bit symmetric
1022
+ # key.
1023
+ # @option params [Integer] :number_of_bytes
1024
+ # The length of the data encryption key in bytes. For example, use the
1025
+ # value 64 to generate a 512-bit data key (64 bytes is 512 bits). For
1026
+ # common key lengths (128-bit and 256-bit symmetric keys), we recommend
1027
+ # that you use the `KeySpec` field instead of this one.
1028
+ # @option params [Array<String>] :grant_tokens
1029
+ # A list of grant tokens.
1030
+ #
1031
+ # For more information, see [Grant Tokens][1] in the *AWS Key Management
1032
+ # Service Developer Guide*.
1033
+ #
1034
+ #
1035
+ #
1036
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
1037
+ # @return [Types::GenerateDataKeyWithoutPlaintextResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1038
+ #
1039
+ # * {Types::GenerateDataKeyWithoutPlaintextResponse#ciphertext_blob #CiphertextBlob} => String
1040
+ # * {Types::GenerateDataKeyWithoutPlaintextResponse#key_id #KeyId} => String
1041
+ #
1042
+ # @example Request syntax with placeholder values
1043
+ # resp = client.generate_data_key_without_plaintext({
1044
+ # key_id: "KeyIdType", # required
1045
+ # encryption_context: {
1046
+ # "EncryptionContextKey" => "EncryptionContextValue",
1047
+ # },
1048
+ # key_spec: "AES_256", # accepts AES_256, AES_128
1049
+ # number_of_bytes: 1,
1050
+ # grant_tokens: ["GrantTokenType"],
1051
+ # })
1052
+ #
1053
+ # @example Response structure
1054
+ # resp.ciphertext_blob #=> String
1055
+ # resp.key_id #=> String
1056
+ # @overload generate_data_key_without_plaintext(params = {})
1057
+ # @param [Hash] params ({})
1058
+ def generate_data_key_without_plaintext(params = {}, options = {})
1059
+ req = build_request(:generate_data_key_without_plaintext, params)
1060
+ req.send_request(options)
1061
+ end
1062
+
1063
+ # Generates an unpredictable byte string.
1064
+ # @option params [Integer] :number_of_bytes
1065
+ # The length of the byte string.
1066
+ # @return [Types::GenerateRandomResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1067
+ #
1068
+ # * {Types::GenerateRandomResponse#plaintext #Plaintext} => String
1069
+ #
1070
+ # @example Request syntax with placeholder values
1071
+ # resp = client.generate_random({
1072
+ # number_of_bytes: 1,
1073
+ # })
1074
+ #
1075
+ # @example Response structure
1076
+ # resp.plaintext #=> String
1077
+ # @overload generate_random(params = {})
1078
+ # @param [Hash] params ({})
1079
+ def generate_random(params = {}, options = {})
1080
+ req = build_request(:generate_random, params)
1081
+ req.send_request(options)
1082
+ end
1083
+
1084
+ # Retrieves a policy attached to the specified key.
1085
+ # @option params [required, String] :key_id
1086
+ # A unique identifier for the customer master key. This value can be a
1087
+ # globally unique identifier or the fully specified ARN to a key.
1088
+ #
1089
+ # * Key ARN Example -
1090
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1091
+ #
1092
+ # * Globally Unique Key ID Example -
1093
+ # 12345678-1234-1234-1234-123456789012
1094
+ # @option params [required, String] :policy_name
1095
+ # String that contains the name of the policy. Currently, this must be
1096
+ # "default". Policy names can be discovered by calling
1097
+ # ListKeyPolicies.
1098
+ # @return [Types::GetKeyPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1099
+ #
1100
+ # * {Types::GetKeyPolicyResponse#policy #Policy} => String
1101
+ #
1102
+ # @example Request syntax with placeholder values
1103
+ # resp = client.get_key_policy({
1104
+ # key_id: "KeyIdType", # required
1105
+ # policy_name: "PolicyNameType", # required
1106
+ # })
1107
+ #
1108
+ # @example Response structure
1109
+ # resp.policy #=> String
1110
+ # @overload get_key_policy(params = {})
1111
+ # @param [Hash] params ({})
1112
+ def get_key_policy(params = {}, options = {})
1113
+ req = build_request(:get_key_policy, params)
1114
+ req.send_request(options)
1115
+ end
1116
+
1117
+ # Retrieves a Boolean value that indicates whether key rotation is
1118
+ # enabled for the specified key.
1119
+ # @option params [required, String] :key_id
1120
+ # A unique identifier for the customer master key. This value can be a
1121
+ # globally unique identifier or the fully specified ARN to a key.
1122
+ #
1123
+ # * Key ARN Example -
1124
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1125
+ #
1126
+ # * Globally Unique Key ID Example -
1127
+ # 12345678-1234-1234-1234-123456789012
1128
+ # @return [Types::GetKeyRotationStatusResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1129
+ #
1130
+ # * {Types::GetKeyRotationStatusResponse#key_rotation_enabled #KeyRotationEnabled} => Boolean
1131
+ #
1132
+ # @example Request syntax with placeholder values
1133
+ # resp = client.get_key_rotation_status({
1134
+ # key_id: "KeyIdType", # required
1135
+ # })
1136
+ #
1137
+ # @example Response structure
1138
+ # resp.key_rotation_enabled #=> Boolean
1139
+ # @overload get_key_rotation_status(params = {})
1140
+ # @param [Hash] params ({})
1141
+ def get_key_rotation_status(params = {}, options = {})
1142
+ req = build_request(:get_key_rotation_status, params)
1143
+ req.send_request(options)
1144
+ end
1145
+
1146
+ # Returns the items you need in order to import key material into AWS
1147
+ # KMS from your existing key management infrastructure. For more
1148
+ # information about importing key material into AWS KMS, see [Importing
1149
+ # Key Material][1] in the *AWS Key Management Service Developer Guide*.
1150
+ #
1151
+ # You must specify the key ID of the customer master key (CMK) into
1152
+ # which you will import key material. This CMK's `Origin` must be
1153
+ # `EXTERNAL`. You must also specify the wrapping algorithm and type of
1154
+ # wrapping key (public key) that you will use to encrypt the key
1155
+ # material.
1156
+ #
1157
+ # This operation returns a public key and an import token. Use the
1158
+ # public key to encrypt the key material. Store the import token to send
1159
+ # with a subsequent ImportKeyMaterial request. The public key and import
1160
+ # token from the same response must be used together. These items are
1161
+ # valid for 24 hours, after which they cannot be used for a subsequent
1162
+ # ImportKeyMaterial request. To retrieve new ones, send another
1163
+ # `GetParametersForImport` request.
1164
+ #
1165
+ #
1166
+ #
1167
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1168
+ # @option params [required, String] :key_id
1169
+ # The identifier of the CMK into which you will import key material. The
1170
+ # CMK's `Origin` must be `EXTERNAL`.
1171
+ #
1172
+ # A valid identifier is the unique key ID or the Amazon Resource Name
1173
+ # (ARN) of the CMK. Examples:
1174
+ #
1175
+ # * Unique key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1176
+ #
1177
+ # * Key ARN:
1178
+ # `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1179
+ # @option params [required, String] :wrapping_algorithm
1180
+ # The algorithm you will use to encrypt the key material before
1181
+ # importing it with ImportKeyMaterial. For more information, see
1182
+ # [Encrypt the Key Material][1] in the *AWS Key Management Service
1183
+ # Developer Guide*.
1184
+ #
1185
+ #
1186
+ #
1187
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-encrypt-key-material.html
1188
+ # @option params [required, String] :wrapping_key_spec
1189
+ # The type of wrapping key (public key) to return in the response. Only
1190
+ # 2048-bit RSA public keys are supported.
1191
+ # @return [Types::GetParametersForImportResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1192
+ #
1193
+ # * {Types::GetParametersForImportResponse#key_id #KeyId} => String
1194
+ # * {Types::GetParametersForImportResponse#import_token #ImportToken} => String
1195
+ # * {Types::GetParametersForImportResponse#public_key #PublicKey} => String
1196
+ # * {Types::GetParametersForImportResponse#parameters_valid_to #ParametersValidTo} => Time
1197
+ #
1198
+ # @example Request syntax with placeholder values
1199
+ # resp = client.get_parameters_for_import({
1200
+ # key_id: "KeyIdType", # required
1201
+ # wrapping_algorithm: "RSAES_PKCS1_V1_5", # required, accepts RSAES_PKCS1_V1_5, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
1202
+ # wrapping_key_spec: "RSA_2048", # required, accepts RSA_2048
1203
+ # })
1204
+ #
1205
+ # @example Response structure
1206
+ # resp.key_id #=> String
1207
+ # resp.import_token #=> String
1208
+ # resp.public_key #=> String
1209
+ # resp.parameters_valid_to #=> Time
1210
+ # @overload get_parameters_for_import(params = {})
1211
+ # @param [Hash] params ({})
1212
+ def get_parameters_for_import(params = {}, options = {})
1213
+ req = build_request(:get_parameters_for_import, params)
1214
+ req.send_request(options)
1215
+ end
1216
+
1217
+ # Imports key material into an AWS KMS customer master key (CMK) from
1218
+ # your existing key management infrastructure. For more information
1219
+ # about importing key material into AWS KMS, see [Importing Key
1220
+ # Material][1] in the *AWS Key Management Service Developer Guide*.
1221
+ #
1222
+ # You must specify the key ID of the CMK to import the key material
1223
+ # into. This CMK's `Origin` must be `EXTERNAL`. You must also send an
1224
+ # import token and the encrypted key material. Send the import token
1225
+ # that you received in the same GetParametersForImport response that
1226
+ # contained the public key that you used to encrypt the key material.
1227
+ # You must also specify whether the key material expires and if so,
1228
+ # when. When the key material expires, AWS KMS deletes the key material
1229
+ # and the CMK becomes unusable. To use the CMK again, you can reimport
1230
+ # the same key material. If you set an expiration date, you can change
1231
+ # it only by reimporting the same key material and specifying a new
1232
+ # expiration date.
1233
+ #
1234
+ # When this operation is successful, the specified CMK's key state
1235
+ # changes to `Enabled`, and you can use the CMK.
1236
+ #
1237
+ # After you successfully import key material into a CMK, you can
1238
+ # reimport the same key material into that CMK, but you cannot import
1239
+ # different key material.
1240
+ #
1241
+ #
1242
+ #
1243
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1244
+ # @option params [required, String] :key_id
1245
+ # The identifier of the CMK to import the key material into. The CMK's
1246
+ # `Origin` must be `EXTERNAL`.
1247
+ #
1248
+ # A valid identifier is the unique key ID or the Amazon Resource Name
1249
+ # (ARN) of the CMK. Examples:
1250
+ #
1251
+ # * Unique key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1252
+ #
1253
+ # * Key ARN:
1254
+ # `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1255
+ # @option params [required, String, IO] :import_token
1256
+ # The import token that you received in the response to a previous
1257
+ # GetParametersForImport request. It must be from the same response that
1258
+ # contained the public key that you used to encrypt the key material.
1259
+ # @option params [required, String, IO] :encrypted_key_material
1260
+ # The encrypted key material to import. It must be encrypted with the
1261
+ # public key that you received in the response to a previous
1262
+ # GetParametersForImport request, using the wrapping algorithm that you
1263
+ # specified in that request.
1264
+ # @option params [Time,DateTime,Date,Integer,String] :valid_to
1265
+ # The time at which the imported key material expires. When the key
1266
+ # material expires, AWS KMS deletes the key material and the CMK becomes
1267
+ # unusable. You must omit this parameter when the `ExpirationModel`
1268
+ # parameter is set to `KEY_MATERIAL_DOES_NOT_EXPIRE`. Otherwise it is
1269
+ # required.
1270
+ # @option params [String] :expiration_model
1271
+ # Specifies whether the key material expires. The default is
1272
+ # `KEY_MATERIAL_EXPIRES`, in which case you must include the `ValidTo`
1273
+ # parameter. When this parameter is set to
1274
+ # `KEY_MATERIAL_DOES_NOT_EXPIRE`, you must omit the `ValidTo` parameter.
1275
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1276
+ #
1277
+ # @example Request syntax with placeholder values
1278
+ # resp = client.import_key_material({
1279
+ # key_id: "KeyIdType", # required
1280
+ # import_token: "data", # required
1281
+ # encrypted_key_material: "data", # required
1282
+ # valid_to: Time.now,
1283
+ # expiration_model: "KEY_MATERIAL_EXPIRES", # accepts KEY_MATERIAL_EXPIRES, KEY_MATERIAL_DOES_NOT_EXPIRE
1284
+ # })
1285
+ # @overload import_key_material(params = {})
1286
+ # @param [Hash] params ({})
1287
+ def import_key_material(params = {}, options = {})
1288
+ req = build_request(:import_key_material, params)
1289
+ req.send_request(options)
1290
+ end
1291
+
1292
+ # Lists all of the key aliases in the account.
1293
+ # @option params [Integer] :limit
1294
+ # When paginating results, specify the maximum number of items to return
1295
+ # in the response. If additional items exist beyond the number you
1296
+ # specify, the `Truncated` element in the response is set to true.
1297
+ #
1298
+ # This value is optional. If you include a value, it must be between 1
1299
+ # and 100, inclusive. If you do not include a value, it defaults to 50.
1300
+ # @option params [String] :marker
1301
+ # Use this parameter only when paginating results and only in a
1302
+ # subsequent request after you receive a response with truncated
1303
+ # results. Set it to the value of `NextMarker` from the response you
1304
+ # just received.
1305
+ # @return [Types::ListAliasesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1306
+ #
1307
+ # * {Types::ListAliasesResponse#aliases #Aliases} => Array&lt;Types::AliasListEntry&gt;
1308
+ # * {Types::ListAliasesResponse#next_marker #NextMarker} => String
1309
+ # * {Types::ListAliasesResponse#truncated #Truncated} => Boolean
1310
+ #
1311
+ # @example Request syntax with placeholder values
1312
+ # resp = client.list_aliases({
1313
+ # limit: 1,
1314
+ # marker: "MarkerType",
1315
+ # })
1316
+ #
1317
+ # @example Response structure
1318
+ # resp.aliases #=> Array
1319
+ # resp.aliases[0].alias_name #=> String
1320
+ # resp.aliases[0].alias_arn #=> String
1321
+ # resp.aliases[0].target_key_id #=> String
1322
+ # resp.next_marker #=> String
1323
+ # resp.truncated #=> Boolean
1324
+ # @overload list_aliases(params = {})
1325
+ # @param [Hash] params ({})
1326
+ def list_aliases(params = {}, options = {})
1327
+ req = build_request(:list_aliases, params)
1328
+ req.send_request(options)
1329
+ end
1330
+
1331
+ # List the grants for a specified key.
1332
+ # @option params [Integer] :limit
1333
+ # When paginating results, specify the maximum number of items to return
1334
+ # in the response. If additional items exist beyond the number you
1335
+ # specify, the `Truncated` element in the response is set to true.
1336
+ #
1337
+ # This value is optional. If you include a value, it must be between 1
1338
+ # and 100, inclusive. If you do not include a value, it defaults to 50.
1339
+ # @option params [String] :marker
1340
+ # Use this parameter only when paginating results and only in a
1341
+ # subsequent request after you receive a response with truncated
1342
+ # results. Set it to the value of `NextMarker` from the response you
1343
+ # just received.
1344
+ # @option params [required, String] :key_id
1345
+ # A unique identifier for the customer master key. This value can be a
1346
+ # globally unique identifier or the fully specified ARN to a key.
1347
+ #
1348
+ # * Key ARN Example -
1349
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1350
+ #
1351
+ # * Globally Unique Key ID Example -
1352
+ # 12345678-1234-1234-1234-123456789012
1353
+ # @return [Types::ListGrantsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1354
+ #
1355
+ # * {Types::ListGrantsResponse#grants #Grants} => Array&lt;Types::GrantListEntry&gt;
1356
+ # * {Types::ListGrantsResponse#next_marker #NextMarker} => String
1357
+ # * {Types::ListGrantsResponse#truncated #Truncated} => Boolean
1358
+ #
1359
+ # @example Request syntax with placeholder values
1360
+ # resp = client.list_grants({
1361
+ # limit: 1,
1362
+ # marker: "MarkerType",
1363
+ # key_id: "KeyIdType", # required
1364
+ # })
1365
+ #
1366
+ # @example Response structure
1367
+ # resp.grants #=> Array
1368
+ # resp.grants[0].key_id #=> String
1369
+ # resp.grants[0].grant_id #=> String
1370
+ # resp.grants[0].name #=> String
1371
+ # resp.grants[0].creation_date #=> Time
1372
+ # resp.grants[0].grantee_principal #=> String
1373
+ # resp.grants[0].retiring_principal #=> String
1374
+ # resp.grants[0].issuing_account #=> String
1375
+ # resp.grants[0].operations #=> Array
1376
+ # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "RetireGrant", "DescribeKey"
1377
+ # resp.grants[0].constraints.encryption_context_subset #=> Hash
1378
+ # resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
1379
+ # resp.grants[0].constraints.encryption_context_equals #=> Hash
1380
+ # resp.grants[0].constraints.encryption_context_equals["EncryptionContextKey"] #=> String
1381
+ # resp.next_marker #=> String
1382
+ # resp.truncated #=> Boolean
1383
+ # @overload list_grants(params = {})
1384
+ # @param [Hash] params ({})
1385
+ def list_grants(params = {}, options = {})
1386
+ req = build_request(:list_grants, params)
1387
+ req.send_request(options)
1388
+ end
1389
+
1390
+ # Retrieves a list of policies attached to a key.
1391
+ # @option params [required, String] :key_id
1392
+ # A unique identifier for the customer master key. This value can be a
1393
+ # globally unique identifier, a fully specified ARN to either an alias
1394
+ # or a key, or an alias name prefixed by "alias/".
1395
+ #
1396
+ # * Key ARN Example -
1397
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1398
+ #
1399
+ # * Alias ARN Example -
1400
+ # arn:aws:kms:us-east-1:123456789012:alias/MyAliasName
1401
+ #
1402
+ # * Globally Unique Key ID Example -
1403
+ # 12345678-1234-1234-1234-123456789012
1404
+ #
1405
+ # * Alias Name Example - alias/MyAliasName
1406
+ # @option params [Integer] :limit
1407
+ # When paginating results, specify the maximum number of items to return
1408
+ # in the response. If additional items exist beyond the number you
1409
+ # specify, the `Truncated` element in the response is set to true.
1410
+ #
1411
+ # This value is optional. If you include a value, it must be between 1
1412
+ # and 1000, inclusive. If you do not include a value, it defaults to
1413
+ # 100.
1414
+ #
1415
+ # Currently only 1 policy can be attached to a key.
1416
+ # @option params [String] :marker
1417
+ # Use this parameter only when paginating results and only in a
1418
+ # subsequent request after you receive a response with truncated
1419
+ # results. Set it to the value of `NextMarker` from the response you
1420
+ # just received.
1421
+ # @return [Types::ListKeyPoliciesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1422
+ #
1423
+ # * {Types::ListKeyPoliciesResponse#policy_names #PolicyNames} => Array&lt;String&gt;
1424
+ # * {Types::ListKeyPoliciesResponse#next_marker #NextMarker} => String
1425
+ # * {Types::ListKeyPoliciesResponse#truncated #Truncated} => Boolean
1426
+ #
1427
+ # @example Request syntax with placeholder values
1428
+ # resp = client.list_key_policies({
1429
+ # key_id: "KeyIdType", # required
1430
+ # limit: 1,
1431
+ # marker: "MarkerType",
1432
+ # })
1433
+ #
1434
+ # @example Response structure
1435
+ # resp.policy_names #=> Array
1436
+ # resp.policy_names[0] #=> String
1437
+ # resp.next_marker #=> String
1438
+ # resp.truncated #=> Boolean
1439
+ # @overload list_key_policies(params = {})
1440
+ # @param [Hash] params ({})
1441
+ def list_key_policies(params = {}, options = {})
1442
+ req = build_request(:list_key_policies, params)
1443
+ req.send_request(options)
1444
+ end
1445
+
1446
+ # Lists the customer master keys.
1447
+ # @option params [Integer] :limit
1448
+ # When paginating results, specify the maximum number of items to return
1449
+ # in the response. If additional items exist beyond the number you
1450
+ # specify, the `Truncated` element in the response is set to true.
1451
+ #
1452
+ # This value is optional. If you include a value, it must be between 1
1453
+ # and 1000, inclusive. If you do not include a value, it defaults to
1454
+ # 100.
1455
+ # @option params [String] :marker
1456
+ # Use this parameter only when paginating results and only in a
1457
+ # subsequent request after you receive a response with truncated
1458
+ # results. Set it to the value of `NextMarker` from the response you
1459
+ # just received.
1460
+ # @return [Types::ListKeysResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1461
+ #
1462
+ # * {Types::ListKeysResponse#keys #Keys} => Array&lt;Types::KeyListEntry&gt;
1463
+ # * {Types::ListKeysResponse#next_marker #NextMarker} => String
1464
+ # * {Types::ListKeysResponse#truncated #Truncated} => Boolean
1465
+ #
1466
+ # @example Request syntax with placeholder values
1467
+ # resp = client.list_keys({
1468
+ # limit: 1,
1469
+ # marker: "MarkerType",
1470
+ # })
1471
+ #
1472
+ # @example Response structure
1473
+ # resp.keys #=> Array
1474
+ # resp.keys[0].key_id #=> String
1475
+ # resp.keys[0].key_arn #=> String
1476
+ # resp.next_marker #=> String
1477
+ # resp.truncated #=> Boolean
1478
+ # @overload list_keys(params = {})
1479
+ # @param [Hash] params ({})
1480
+ def list_keys(params = {}, options = {})
1481
+ req = build_request(:list_keys, params)
1482
+ req.send_request(options)
1483
+ end
1484
+
1485
+ # Returns a list of all grants for which the grant's
1486
+ # `RetiringPrincipal` matches the one specified.
1487
+ #
1488
+ # A typical use is to list all grants that you are able to retire. To
1489
+ # retire a grant, use RetireGrant.
1490
+ # @option params [Integer] :limit
1491
+ # When paginating results, specify the maximum number of items to return
1492
+ # in the response. If additional items exist beyond the number you
1493
+ # specify, the `Truncated` element in the response is set to true.
1494
+ #
1495
+ # This value is optional. If you include a value, it must be between 1
1496
+ # and 100, inclusive. If you do not include a value, it defaults to 50.
1497
+ # @option params [String] :marker
1498
+ # Use this parameter only when paginating results and only in a
1499
+ # subsequent request after you receive a response with truncated
1500
+ # results. Set it to the value of `NextMarker` from the response you
1501
+ # just received.
1502
+ # @option params [required, String] :retiring_principal
1503
+ # The retiring principal for which to list grants.
1504
+ #
1505
+ # To specify the retiring principal, use the [Amazon Resource Name
1506
+ # (ARN)][1] of an AWS principal. Valid AWS principals include AWS
1507
+ # accounts (root), IAM users, federated users, and assumed role users.
1508
+ # For examples of the ARN syntax for specifying a principal, see [AWS
1509
+ # Identity and Access Management (IAM)][2] in the Example ARNs section
1510
+ # of the *Amazon Web Services General Reference*.
1511
+ #
1512
+ #
1513
+ #
1514
+ # [1]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
1515
+ # [2]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam
1516
+ # @return [Types::ListGrantsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1517
+ #
1518
+ # * {Types::ListGrantsResponse#grants #Grants} => Array&lt;Types::GrantListEntry&gt;
1519
+ # * {Types::ListGrantsResponse#next_marker #NextMarker} => String
1520
+ # * {Types::ListGrantsResponse#truncated #Truncated} => Boolean
1521
+ #
1522
+ # @example Request syntax with placeholder values
1523
+ # resp = client.list_retirable_grants({
1524
+ # limit: 1,
1525
+ # marker: "MarkerType",
1526
+ # retiring_principal: "PrincipalIdType", # required
1527
+ # })
1528
+ #
1529
+ # @example Response structure
1530
+ # resp.grants #=> Array
1531
+ # resp.grants[0].key_id #=> String
1532
+ # resp.grants[0].grant_id #=> String
1533
+ # resp.grants[0].name #=> String
1534
+ # resp.grants[0].creation_date #=> Time
1535
+ # resp.grants[0].grantee_principal #=> String
1536
+ # resp.grants[0].retiring_principal #=> String
1537
+ # resp.grants[0].issuing_account #=> String
1538
+ # resp.grants[0].operations #=> Array
1539
+ # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "RetireGrant", "DescribeKey"
1540
+ # resp.grants[0].constraints.encryption_context_subset #=> Hash
1541
+ # resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
1542
+ # resp.grants[0].constraints.encryption_context_equals #=> Hash
1543
+ # resp.grants[0].constraints.encryption_context_equals["EncryptionContextKey"] #=> String
1544
+ # resp.next_marker #=> String
1545
+ # resp.truncated #=> Boolean
1546
+ # @overload list_retirable_grants(params = {})
1547
+ # @param [Hash] params ({})
1548
+ def list_retirable_grants(params = {}, options = {})
1549
+ req = build_request(:list_retirable_grants, params)
1550
+ req.send_request(options)
1551
+ end
1552
+
1553
+ # Attaches a key policy to the specified customer master key (CMK).
1554
+ #
1555
+ # For more information about key policies, see [Key Policies][1] in the
1556
+ # *AWS Key Management Service Developer Guide*.
1557
+ #
1558
+ #
1559
+ #
1560
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html
1561
+ # @option params [required, String] :key_id
1562
+ # A unique identifier for the CMK.
1563
+ #
1564
+ # Use the CMK's unique identifier or its Amazon Resource Name (ARN).
1565
+ # For example:
1566
+ #
1567
+ # * Unique ID: 1234abcd-12ab-34cd-56ef-1234567890ab
1568
+ #
1569
+ # * ARN:
1570
+ # arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
1571
+ # @option params [required, String] :policy_name
1572
+ # The name of the key policy.
1573
+ #
1574
+ # This value must be `default`.
1575
+ # @option params [required, String] :policy
1576
+ # The key policy to attach to the CMK.
1577
+ #
1578
+ # If you do not set `BypassPolicyLockoutSafetyCheck` to true, the policy
1579
+ # must meet the following criteria:
1580
+ #
1581
+ # * It must allow the principal making the `PutKeyPolicy` request to
1582
+ # make a subsequent `PutKeyPolicy` request on the CMK. This reduces
1583
+ # the likelihood that the CMK becomes unmanageable. For more
1584
+ # information, refer to the scenario in the [Default Key Policy][1]
1585
+ # section in the *AWS Key Management Service Developer Guide*.
1586
+ #
1587
+ # * The principal(s) specified in the key policy must exist and be
1588
+ # visible to AWS KMS. When you create a new AWS principal (for
1589
+ # example, an IAM user or role), you might need to enforce a delay
1590
+ # before specifying the new principal in a key policy because the new
1591
+ # principal might not immediately be visible to AWS KMS. For more
1592
+ # information, see [Changes that I make are not always immediately
1593
+ # visible][2] in the *IAM User Guide*.
1594
+ #
1595
+ # The policy size limit is 32 KiB (32768 bytes).
1596
+ #
1597
+ #
1598
+ #
1599
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
1600
+ # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency
1601
+ # @option params [Boolean] :bypass_policy_lockout_safety_check
1602
+ # A flag to indicate whether to bypass the key policy lockout safety
1603
+ # check.
1604
+ #
1605
+ # Setting this value to true increases the likelihood that the CMK
1606
+ # becomes unmanageable. Do not set this value to true indiscriminately.
1607
+ #
1608
+ # For more information, refer to the scenario in the [Default Key
1609
+ # Policy][1] section in the *AWS Key Management Service Developer
1610
+ # Guide*.
1611
+ #
1612
+ # Use this parameter only when you intend to prevent the principal
1613
+ # making the request from making a subsequent `PutKeyPolicy` request on
1614
+ # the CMK.
1615
+ #
1616
+ # The default value is false.
1617
+ #
1618
+ #
1619
+ #
1620
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
1621
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1622
+ #
1623
+ # @example Request syntax with placeholder values
1624
+ # resp = client.put_key_policy({
1625
+ # key_id: "KeyIdType", # required
1626
+ # policy_name: "PolicyNameType", # required
1627
+ # policy: "PolicyType", # required
1628
+ # bypass_policy_lockout_safety_check: false,
1629
+ # })
1630
+ # @overload put_key_policy(params = {})
1631
+ # @param [Hash] params ({})
1632
+ def put_key_policy(params = {}, options = {})
1633
+ req = build_request(:put_key_policy, params)
1634
+ req.send_request(options)
1635
+ end
1636
+
1637
+ # Encrypts data on the server side with a new customer master key
1638
+ # without exposing the plaintext of the data on the client side. The
1639
+ # data is first decrypted and then encrypted. This operation can also be
1640
+ # used to change the encryption context of a ciphertext.
1641
+ #
1642
+ # Unlike other actions, `ReEncrypt` is authorized twice - once as
1643
+ # `ReEncryptFrom` on the source key and once as `ReEncryptTo` on the
1644
+ # destination key. We therefore recommend that you include the
1645
+ # `"action":"kms:ReEncrypt*"` statement in your key policies to permit
1646
+ # re-encryption from or to the key. The statement is included
1647
+ # automatically when you authorize use of the key through the console
1648
+ # but must be included manually when you set a policy by using the
1649
+ # PutKeyPolicy function.
1650
+ # @option params [required, String, IO] :ciphertext_blob
1651
+ # Ciphertext of the data to re-encrypt.
1652
+ # @option params [Hash<String,String>] :source_encryption_context
1653
+ # Encryption context used to encrypt and decrypt the data specified in
1654
+ # the `CiphertextBlob` parameter.
1655
+ # @option params [required, String] :destination_key_id
1656
+ # A unique identifier for the customer master key used to re-encrypt the
1657
+ # data. This value can be a globally unique identifier, a fully
1658
+ # specified ARN to either an alias or a key, or an alias name prefixed
1659
+ # by "alias/".
1660
+ #
1661
+ # * Key ARN Example -
1662
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1663
+ #
1664
+ # * Alias ARN Example -
1665
+ # arn:aws:kms:us-east-1:123456789012:alias/MyAliasName
1666
+ #
1667
+ # * Globally Unique Key ID Example -
1668
+ # 12345678-1234-1234-1234-123456789012
1669
+ #
1670
+ # * Alias Name Example - alias/MyAliasName
1671
+ # @option params [Hash<String,String>] :destination_encryption_context
1672
+ # Encryption context to be used when the data is re-encrypted.
1673
+ # @option params [Array<String>] :grant_tokens
1674
+ # A list of grant tokens.
1675
+ #
1676
+ # For more information, see [Grant Tokens][1] in the *AWS Key Management
1677
+ # Service Developer Guide*.
1678
+ #
1679
+ #
1680
+ #
1681
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
1682
+ # @return [Types::ReEncryptResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1683
+ #
1684
+ # * {Types::ReEncryptResponse#ciphertext_blob #CiphertextBlob} => String
1685
+ # * {Types::ReEncryptResponse#source_key_id #SourceKeyId} => String
1686
+ # * {Types::ReEncryptResponse#key_id #KeyId} => String
1687
+ #
1688
+ # @example Request syntax with placeholder values
1689
+ # resp = client.re_encrypt({
1690
+ # ciphertext_blob: "data", # required
1691
+ # source_encryption_context: {
1692
+ # "EncryptionContextKey" => "EncryptionContextValue",
1693
+ # },
1694
+ # destination_key_id: "KeyIdType", # required
1695
+ # destination_encryption_context: {
1696
+ # "EncryptionContextKey" => "EncryptionContextValue",
1697
+ # },
1698
+ # grant_tokens: ["GrantTokenType"],
1699
+ # })
1700
+ #
1701
+ # @example Response structure
1702
+ # resp.ciphertext_blob #=> String
1703
+ # resp.source_key_id #=> String
1704
+ # resp.key_id #=> String
1705
+ # @overload re_encrypt(params = {})
1706
+ # @param [Hash] params ({})
1707
+ def re_encrypt(params = {}, options = {})
1708
+ req = build_request(:re_encrypt, params)
1709
+ req.send_request(options)
1710
+ end
1711
+
1712
+ # Retires a grant. You can retire a grant when you're done using it to
1713
+ # clean up. You should revoke a grant when you intend to actively deny
1714
+ # operations that depend on it. The following are permitted to call this
1715
+ # API:
1716
+ #
1717
+ # * The account that created the grant
1718
+ #
1719
+ # * The `RetiringPrincipal`, if present
1720
+ #
1721
+ # * The `GranteePrincipal`, if `RetireGrant` is a grantee operation
1722
+ #
1723
+ # The grant to retire must be identified by its grant token or by a
1724
+ # combination of the key ARN and the grant ID. A grant token is a unique
1725
+ # variable-length base64-encoded string. A grant ID is a 64 character
1726
+ # unique identifier of a grant. Both are returned by the `CreateGrant`
1727
+ # function.
1728
+ # @option params [String] :grant_token
1729
+ # Token that identifies the grant to be retired.
1730
+ # @option params [String] :key_id
1731
+ # A unique identifier for the customer master key associated with the
1732
+ # grant. This value can be a globally unique identifier or a fully
1733
+ # specified ARN of the key.
1734
+ #
1735
+ # * Key ARN Example -
1736
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1737
+ #
1738
+ # * Globally Unique Key ID Example -
1739
+ # 12345678-1234-1234-1234-123456789012
1740
+ # @option params [String] :grant_id
1741
+ # Unique identifier of the grant to be retired. The grant ID is returned
1742
+ # by the `CreateGrant` function.
1743
+ #
1744
+ # * Grant ID Example -
1745
+ # 0123456789012345678901234567890123456789012345678901234567890123
1746
+ #
1747
+ # ^
1748
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1749
+ #
1750
+ # @example Request syntax with placeholder values
1751
+ # resp = client.retire_grant({
1752
+ # grant_token: "GrantTokenType",
1753
+ # key_id: "KeyIdType",
1754
+ # grant_id: "GrantIdType",
1755
+ # })
1756
+ # @overload retire_grant(params = {})
1757
+ # @param [Hash] params ({})
1758
+ def retire_grant(params = {}, options = {})
1759
+ req = build_request(:retire_grant, params)
1760
+ req.send_request(options)
1761
+ end
1762
+
1763
+ # Revokes a grant. You can revoke a grant to actively deny operations
1764
+ # that depend on it.
1765
+ # @option params [required, String] :key_id
1766
+ # A unique identifier for the customer master key associated with the
1767
+ # grant. This value can be a globally unique identifier or the fully
1768
+ # specified ARN to a key.
1769
+ #
1770
+ # * Key ARN Example -
1771
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1772
+ #
1773
+ # * Globally Unique Key ID Example -
1774
+ # 12345678-1234-1234-1234-123456789012
1775
+ # @option params [required, String] :grant_id
1776
+ # Identifier of the grant to be revoked.
1777
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1778
+ #
1779
+ # @example Request syntax with placeholder values
1780
+ # resp = client.revoke_grant({
1781
+ # key_id: "KeyIdType", # required
1782
+ # grant_id: "GrantIdType", # required
1783
+ # })
1784
+ # @overload revoke_grant(params = {})
1785
+ # @param [Hash] params ({})
1786
+ def revoke_grant(params = {}, options = {})
1787
+ req = build_request(:revoke_grant, params)
1788
+ req.send_request(options)
1789
+ end
1790
+
1791
+ # Schedules the deletion of a customer master key (CMK). You may provide
1792
+ # a waiting period, specified in days, before deletion occurs. If you do
1793
+ # not provide a waiting period, the default period of 30 days is used.
1794
+ # When this operation is successful, the state of the CMK changes to
1795
+ # `PendingDeletion`. Before the waiting period ends, you can use
1796
+ # CancelKeyDeletion to cancel the deletion of the CMK. After the waiting
1797
+ # period ends, AWS KMS deletes the CMK and all AWS KMS data associated
1798
+ # with it, including all aliases that point to it.
1799
+ #
1800
+ # Deleting a CMK is a destructive and potentially dangerous operation.
1801
+ # When a CMK is deleted, all data that was encrypted under the CMK is
1802
+ # rendered unrecoverable. To restrict the use of a CMK without deleting
1803
+ # it, use DisableKey.
1804
+ #
1805
+ # For more information about scheduling a CMK for deletion, see
1806
+ # [Deleting Customer Master Keys][1] in the *AWS Key Management Service
1807
+ # Developer Guide*.
1808
+ #
1809
+ #
1810
+ #
1811
+ # [1]: http://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html
1812
+ # @option params [required, String] :key_id
1813
+ # The unique identifier for the customer master key (CMK) to delete.
1814
+ #
1815
+ # To specify this value, use the unique key ID or the Amazon Resource
1816
+ # Name (ARN) of the CMK. Examples:
1817
+ #
1818
+ # * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
1819
+ #
1820
+ # * Key ARN:
1821
+ # arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
1822
+ #
1823
+ # To obtain the unique key ID and key ARN for a given CMK, use ListKeys
1824
+ # or DescribeKey.
1825
+ # @option params [Integer] :pending_window_in_days
1826
+ # The waiting period, specified in number of days. After the waiting
1827
+ # period ends, AWS KMS deletes the customer master key (CMK).
1828
+ #
1829
+ # This value is optional. If you include a value, it must be between 7
1830
+ # and 30, inclusive. If you do not include a value, it defaults to 30.
1831
+ # @return [Types::ScheduleKeyDeletionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1832
+ #
1833
+ # * {Types::ScheduleKeyDeletionResponse#key_id #KeyId} => String
1834
+ # * {Types::ScheduleKeyDeletionResponse#deletion_date #DeletionDate} => Time
1835
+ #
1836
+ # @example Request syntax with placeholder values
1837
+ # resp = client.schedule_key_deletion({
1838
+ # key_id: "KeyIdType", # required
1839
+ # pending_window_in_days: 1,
1840
+ # })
1841
+ #
1842
+ # @example Response structure
1843
+ # resp.key_id #=> String
1844
+ # resp.deletion_date #=> Time
1845
+ # @overload schedule_key_deletion(params = {})
1846
+ # @param [Hash] params ({})
1847
+ def schedule_key_deletion(params = {}, options = {})
1848
+ req = build_request(:schedule_key_deletion, params)
1849
+ req.send_request(options)
1850
+ end
1851
+
1852
+ # Updates an alias to map it to a different key.
1853
+ #
1854
+ # An alias is not a property of a key. Therefore, an alias can be mapped
1855
+ # to and unmapped from an existing key without changing the properties
1856
+ # of the key.
1857
+ #
1858
+ # An alias name can contain only alphanumeric characters, forward
1859
+ # slashes (/), underscores (\_), and dashes (-). An alias must start
1860
+ # with the word "alias" followed by a forward slash (alias/). An alias
1861
+ # that begins with "aws" after the forward slash (alias/aws...) is
1862
+ # reserved by Amazon Web Services (AWS).
1863
+ #
1864
+ # The alias and the key it is mapped to must be in the same AWS account
1865
+ # and the same region.
1866
+ # @option params [required, String] :alias_name
1867
+ # String that contains the name of the alias to be modified. The name
1868
+ # must start with the word "alias" followed by a forward slash
1869
+ # (alias/). Aliases that begin with "alias/aws" are reserved.
1870
+ # @option params [required, String] :target_key_id
1871
+ # Unique identifier of the customer master key to be mapped to the
1872
+ # alias. This value can be a globally unique identifier or the fully
1873
+ # specified ARN of a key.
1874
+ #
1875
+ # * Key ARN Example -
1876
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1877
+ #
1878
+ # * Globally Unique Key ID Example -
1879
+ # 12345678-1234-1234-1234-123456789012
1880
+ #
1881
+ # You can call ListAliases to verify that the alias is mapped to the
1882
+ # correct `TargetKeyId`.
1883
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1884
+ #
1885
+ # @example Request syntax with placeholder values
1886
+ # resp = client.update_alias({
1887
+ # alias_name: "AliasNameType", # required
1888
+ # target_key_id: "KeyIdType", # required
1889
+ # })
1890
+ # @overload update_alias(params = {})
1891
+ # @param [Hash] params ({})
1892
+ def update_alias(params = {}, options = {})
1893
+ req = build_request(:update_alias, params)
1894
+ req.send_request(options)
1895
+ end
1896
+
1897
+ # Updates the description of a key.
1898
+ # @option params [required, String] :key_id
1899
+ # A unique identifier for the customer master key. This value can be a
1900
+ # globally unique identifier or the fully specified ARN to a key.
1901
+ #
1902
+ # * Key ARN Example -
1903
+ # arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
1904
+ #
1905
+ # * Globally Unique Key ID Example -
1906
+ # 12345678-1234-1234-1234-123456789012
1907
+ # @option params [required, String] :description
1908
+ # New description for the key.
1909
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1910
+ #
1911
+ # @example Request syntax with placeholder values
1912
+ # resp = client.update_key_description({
1913
+ # key_id: "KeyIdType", # required
1914
+ # description: "DescriptionType", # required
1915
+ # })
1916
+ # @overload update_key_description(params = {})
1917
+ # @param [Hash] params ({})
1918
+ def update_key_description(params = {}, options = {})
1919
+ req = build_request(:update_key_description, params)
1920
+ req.send_request(options)
1921
+ end
1922
+
1923
+ # @!endgroup
1924
+
1925
+ # @param params ({})
1926
+ # @api private
1927
+ def build_request(operation_name, params = {})
1928
+ handlers = @handlers.for(operation_name)
1929
+ context = Seahorse::Client::RequestContext.new(
1930
+ operation_name: operation_name,
1931
+ operation: config.api.operation(operation_name),
1932
+ client: self,
1933
+ params: params,
1934
+ config: config)
1935
+ context[:gem_name] = 'aws-sdk-kms'
1936
+ context[:gem_version] = '1.0.0.rc1'
1937
+ Seahorse::Client::Request.new(handlers, context)
1938
+ end
1939
+
1940
+ # @api private
1941
+ # @deprecated
1942
+ def waiter_names
1943
+ []
1944
+ end
1945
+
1946
+ class << self
1947
+
1948
+ # @api private
1949
+ attr_reader :identifier
1950
+
1951
+ # @api private
1952
+ def errors_module
1953
+ Errors
1954
+ end
1955
+
1956
+ end
1957
+ end
1958
+ end
1959
+ end