aws-sdk-kms 1.24.0 → 1.29.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -47,6 +47,8 @@ module Aws::KMS
47
47
  CustomKeyStoreNotFoundException = Shapes::StructureShape.new(name: 'CustomKeyStoreNotFoundException')
48
48
  CustomKeyStoresList = Shapes::ListShape.new(name: 'CustomKeyStoresList')
49
49
  CustomKeyStoresListEntry = Shapes::StructureShape.new(name: 'CustomKeyStoresListEntry')
50
+ CustomerMasterKeySpec = Shapes::StringShape.new(name: 'CustomerMasterKeySpec')
51
+ DataKeyPairSpec = Shapes::StringShape.new(name: 'DataKeyPairSpec')
50
52
  DataKeySpec = Shapes::StringShape.new(name: 'DataKeySpec')
51
53
  DateType = Shapes::TimestampShape.new(name: 'DateType')
52
54
  DecryptRequest = Shapes::StructureShape.new(name: 'DecryptRequest')
@@ -70,12 +72,18 @@ module Aws::KMS
70
72
  EnableKeyRotationRequest = Shapes::StructureShape.new(name: 'EnableKeyRotationRequest')
71
73
  EncryptRequest = Shapes::StructureShape.new(name: 'EncryptRequest')
72
74
  EncryptResponse = Shapes::StructureShape.new(name: 'EncryptResponse')
75
+ EncryptionAlgorithmSpec = Shapes::StringShape.new(name: 'EncryptionAlgorithmSpec')
76
+ EncryptionAlgorithmSpecList = Shapes::ListShape.new(name: 'EncryptionAlgorithmSpecList')
73
77
  EncryptionContextKey = Shapes::StringShape.new(name: 'EncryptionContextKey')
74
78
  EncryptionContextType = Shapes::MapShape.new(name: 'EncryptionContextType')
75
79
  EncryptionContextValue = Shapes::StringShape.new(name: 'EncryptionContextValue')
76
80
  ErrorMessageType = Shapes::StringShape.new(name: 'ErrorMessageType')
77
81
  ExpirationModelType = Shapes::StringShape.new(name: 'ExpirationModelType')
78
82
  ExpiredImportTokenException = Shapes::StructureShape.new(name: 'ExpiredImportTokenException')
83
+ GenerateDataKeyPairRequest = Shapes::StructureShape.new(name: 'GenerateDataKeyPairRequest')
84
+ GenerateDataKeyPairResponse = Shapes::StructureShape.new(name: 'GenerateDataKeyPairResponse')
85
+ GenerateDataKeyPairWithoutPlaintextRequest = Shapes::StructureShape.new(name: 'GenerateDataKeyPairWithoutPlaintextRequest')
86
+ GenerateDataKeyPairWithoutPlaintextResponse = Shapes::StructureShape.new(name: 'GenerateDataKeyPairWithoutPlaintextResponse')
79
87
  GenerateDataKeyRequest = Shapes::StructureShape.new(name: 'GenerateDataKeyRequest')
80
88
  GenerateDataKeyResponse = Shapes::StructureShape.new(name: 'GenerateDataKeyResponse')
81
89
  GenerateDataKeyWithoutPlaintextRequest = Shapes::StructureShape.new(name: 'GenerateDataKeyWithoutPlaintextRequest')
@@ -88,6 +96,8 @@ module Aws::KMS
88
96
  GetKeyRotationStatusResponse = Shapes::StructureShape.new(name: 'GetKeyRotationStatusResponse')
89
97
  GetParametersForImportRequest = Shapes::StructureShape.new(name: 'GetParametersForImportRequest')
90
98
  GetParametersForImportResponse = Shapes::StructureShape.new(name: 'GetParametersForImportResponse')
99
+ GetPublicKeyRequest = Shapes::StructureShape.new(name: 'GetPublicKeyRequest')
100
+ GetPublicKeyResponse = Shapes::StructureShape.new(name: 'GetPublicKeyResponse')
91
101
  GrantConstraints = Shapes::StructureShape.new(name: 'GrantConstraints')
92
102
  GrantIdType = Shapes::StringShape.new(name: 'GrantIdType')
93
103
  GrantList = Shapes::ListShape.new(name: 'GrantList')
@@ -99,6 +109,7 @@ module Aws::KMS
99
109
  GrantTokenType = Shapes::StringShape.new(name: 'GrantTokenType')
100
110
  ImportKeyMaterialRequest = Shapes::StructureShape.new(name: 'ImportKeyMaterialRequest')
101
111
  ImportKeyMaterialResponse = Shapes::StructureShape.new(name: 'ImportKeyMaterialResponse')
112
+ IncorrectKeyException = Shapes::StructureShape.new(name: 'IncorrectKeyException')
102
113
  IncorrectKeyMaterialException = Shapes::StructureShape.new(name: 'IncorrectKeyMaterialException')
103
114
  IncorrectTrustAnchorException = Shapes::StructureShape.new(name: 'IncorrectTrustAnchorException')
104
115
  InvalidAliasNameException = Shapes::StructureShape.new(name: 'InvalidAliasNameException')
@@ -110,6 +121,7 @@ module Aws::KMS
110
121
  InvalidKeyUsageException = Shapes::StructureShape.new(name: 'InvalidKeyUsageException')
111
122
  InvalidMarkerException = Shapes::StructureShape.new(name: 'InvalidMarkerException')
112
123
  KMSInternalException = Shapes::StructureShape.new(name: 'KMSInternalException')
124
+ KMSInvalidSignatureException = Shapes::StructureShape.new(name: 'KMSInvalidSignatureException')
113
125
  KMSInvalidStateException = Shapes::StructureShape.new(name: 'KMSInvalidStateException')
114
126
  KeyIdType = Shapes::StringShape.new(name: 'KeyIdType')
115
127
  KeyList = Shapes::ListShape.new(name: 'KeyList')
@@ -135,6 +147,7 @@ module Aws::KMS
135
147
  ListRetirableGrantsRequest = Shapes::StructureShape.new(name: 'ListRetirableGrantsRequest')
136
148
  MalformedPolicyDocumentException = Shapes::StructureShape.new(name: 'MalformedPolicyDocumentException')
137
149
  MarkerType = Shapes::StringShape.new(name: 'MarkerType')
150
+ MessageType = Shapes::StringShape.new(name: 'MessageType')
138
151
  NotFoundException = Shapes::StructureShape.new(name: 'NotFoundException')
139
152
  NumberOfBytesType = Shapes::IntegerShape.new(name: 'NumberOfBytesType')
140
153
  OriginType = Shapes::StringShape.new(name: 'OriginType')
@@ -144,6 +157,7 @@ module Aws::KMS
144
157
  PolicyNameType = Shapes::StringShape.new(name: 'PolicyNameType')
145
158
  PolicyType = Shapes::StringShape.new(name: 'PolicyType')
146
159
  PrincipalIdType = Shapes::StringShape.new(name: 'PrincipalIdType')
160
+ PublicKeyType = Shapes::BlobShape.new(name: 'PublicKeyType')
147
161
  PutKeyPolicyRequest = Shapes::StructureShape.new(name: 'PutKeyPolicyRequest')
148
162
  ReEncryptRequest = Shapes::StructureShape.new(name: 'ReEncryptRequest')
149
163
  ReEncryptResponse = Shapes::StructureShape.new(name: 'ReEncryptResponse')
@@ -151,6 +165,10 @@ module Aws::KMS
151
165
  RevokeGrantRequest = Shapes::StructureShape.new(name: 'RevokeGrantRequest')
152
166
  ScheduleKeyDeletionRequest = Shapes::StructureShape.new(name: 'ScheduleKeyDeletionRequest')
153
167
  ScheduleKeyDeletionResponse = Shapes::StructureShape.new(name: 'ScheduleKeyDeletionResponse')
168
+ SignRequest = Shapes::StructureShape.new(name: 'SignRequest')
169
+ SignResponse = Shapes::StructureShape.new(name: 'SignResponse')
170
+ SigningAlgorithmSpec = Shapes::StringShape.new(name: 'SigningAlgorithmSpec')
171
+ SigningAlgorithmSpecList = Shapes::ListShape.new(name: 'SigningAlgorithmSpecList')
154
172
  Tag = Shapes::StructureShape.new(name: 'Tag')
155
173
  TagException = Shapes::StructureShape.new(name: 'TagException')
156
174
  TagKeyList = Shapes::ListShape.new(name: 'TagKeyList')
@@ -165,6 +183,8 @@ module Aws::KMS
165
183
  UpdateCustomKeyStoreRequest = Shapes::StructureShape.new(name: 'UpdateCustomKeyStoreRequest')
166
184
  UpdateCustomKeyStoreResponse = Shapes::StructureShape.new(name: 'UpdateCustomKeyStoreResponse')
167
185
  UpdateKeyDescriptionRequest = Shapes::StructureShape.new(name: 'UpdateKeyDescriptionRequest')
186
+ VerifyRequest = Shapes::StructureShape.new(name: 'VerifyRequest')
187
+ VerifyResponse = Shapes::StructureShape.new(name: 'VerifyResponse')
168
188
  WrappingKeySpec = Shapes::StringShape.new(name: 'WrappingKeySpec')
169
189
 
170
190
  AliasList.member = Shapes::ShapeRef.new(shape: AliasListEntry)
@@ -232,6 +252,7 @@ module Aws::KMS
232
252
  CreateKeyRequest.add_member(:policy, Shapes::ShapeRef.new(shape: PolicyType, location_name: "Policy"))
233
253
  CreateKeyRequest.add_member(:description, Shapes::ShapeRef.new(shape: DescriptionType, location_name: "Description"))
234
254
  CreateKeyRequest.add_member(:key_usage, Shapes::ShapeRef.new(shape: KeyUsageType, location_name: "KeyUsage"))
255
+ CreateKeyRequest.add_member(:customer_master_key_spec, Shapes::ShapeRef.new(shape: CustomerMasterKeySpec, location_name: "CustomerMasterKeySpec"))
235
256
  CreateKeyRequest.add_member(:origin, Shapes::ShapeRef.new(shape: OriginType, location_name: "Origin"))
236
257
  CreateKeyRequest.add_member(:custom_key_store_id, Shapes::ShapeRef.new(shape: CustomKeyStoreIdType, location_name: "CustomKeyStoreId"))
237
258
  CreateKeyRequest.add_member(:bypass_policy_lockout_safety_check, Shapes::ShapeRef.new(shape: BooleanType, location_name: "BypassPolicyLockoutSafetyCheck"))
@@ -267,10 +288,13 @@ module Aws::KMS
267
288
  DecryptRequest.add_member(:ciphertext_blob, Shapes::ShapeRef.new(shape: CiphertextType, required: true, location_name: "CiphertextBlob"))
268
289
  DecryptRequest.add_member(:encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContext"))
269
290
  DecryptRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
291
+ DecryptRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
292
+ DecryptRequest.add_member(:encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "EncryptionAlgorithm"))
270
293
  DecryptRequest.struct_class = Types::DecryptRequest
271
294
 
272
295
  DecryptResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
273
296
  DecryptResponse.add_member(:plaintext, Shapes::ShapeRef.new(shape: PlaintextType, location_name: "Plaintext"))
297
+ DecryptResponse.add_member(:encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "EncryptionAlgorithm"))
274
298
  DecryptResponse.struct_class = Types::DecryptResponse
275
299
 
276
300
  DeleteAliasRequest.add_member(:alias_name, Shapes::ShapeRef.new(shape: AliasNameType, required: true, location_name: "AliasName"))
@@ -329,18 +353,47 @@ module Aws::KMS
329
353
  EncryptRequest.add_member(:plaintext, Shapes::ShapeRef.new(shape: PlaintextType, required: true, location_name: "Plaintext"))
330
354
  EncryptRequest.add_member(:encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContext"))
331
355
  EncryptRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
356
+ EncryptRequest.add_member(:encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "EncryptionAlgorithm"))
332
357
  EncryptRequest.struct_class = Types::EncryptRequest
333
358
 
334
359
  EncryptResponse.add_member(:ciphertext_blob, Shapes::ShapeRef.new(shape: CiphertextType, location_name: "CiphertextBlob"))
335
360
  EncryptResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
361
+ EncryptResponse.add_member(:encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "EncryptionAlgorithm"))
336
362
  EncryptResponse.struct_class = Types::EncryptResponse
337
363
 
364
+ EncryptionAlgorithmSpecList.member = Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec)
365
+
338
366
  EncryptionContextType.key = Shapes::ShapeRef.new(shape: EncryptionContextKey)
339
367
  EncryptionContextType.value = Shapes::ShapeRef.new(shape: EncryptionContextValue)
340
368
 
341
369
  ExpiredImportTokenException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
342
370
  ExpiredImportTokenException.struct_class = Types::ExpiredImportTokenException
343
371
 
372
+ GenerateDataKeyPairRequest.add_member(:encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContext"))
373
+ GenerateDataKeyPairRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "KeyId"))
374
+ GenerateDataKeyPairRequest.add_member(:key_pair_spec, Shapes::ShapeRef.new(shape: DataKeyPairSpec, required: true, location_name: "KeyPairSpec"))
375
+ GenerateDataKeyPairRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
376
+ GenerateDataKeyPairRequest.struct_class = Types::GenerateDataKeyPairRequest
377
+
378
+ GenerateDataKeyPairResponse.add_member(:private_key_ciphertext_blob, Shapes::ShapeRef.new(shape: CiphertextType, location_name: "PrivateKeyCiphertextBlob"))
379
+ GenerateDataKeyPairResponse.add_member(:private_key_plaintext, Shapes::ShapeRef.new(shape: PlaintextType, location_name: "PrivateKeyPlaintext"))
380
+ GenerateDataKeyPairResponse.add_member(:public_key, Shapes::ShapeRef.new(shape: PublicKeyType, location_name: "PublicKey"))
381
+ GenerateDataKeyPairResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
382
+ GenerateDataKeyPairResponse.add_member(:key_pair_spec, Shapes::ShapeRef.new(shape: DataKeyPairSpec, location_name: "KeyPairSpec"))
383
+ GenerateDataKeyPairResponse.struct_class = Types::GenerateDataKeyPairResponse
384
+
385
+ GenerateDataKeyPairWithoutPlaintextRequest.add_member(:encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContext"))
386
+ GenerateDataKeyPairWithoutPlaintextRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "KeyId"))
387
+ GenerateDataKeyPairWithoutPlaintextRequest.add_member(:key_pair_spec, Shapes::ShapeRef.new(shape: DataKeyPairSpec, required: true, location_name: "KeyPairSpec"))
388
+ GenerateDataKeyPairWithoutPlaintextRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
389
+ GenerateDataKeyPairWithoutPlaintextRequest.struct_class = Types::GenerateDataKeyPairWithoutPlaintextRequest
390
+
391
+ GenerateDataKeyPairWithoutPlaintextResponse.add_member(:private_key_ciphertext_blob, Shapes::ShapeRef.new(shape: CiphertextType, location_name: "PrivateKeyCiphertextBlob"))
392
+ GenerateDataKeyPairWithoutPlaintextResponse.add_member(:public_key, Shapes::ShapeRef.new(shape: PublicKeyType, location_name: "PublicKey"))
393
+ GenerateDataKeyPairWithoutPlaintextResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
394
+ GenerateDataKeyPairWithoutPlaintextResponse.add_member(:key_pair_spec, Shapes::ShapeRef.new(shape: DataKeyPairSpec, location_name: "KeyPairSpec"))
395
+ GenerateDataKeyPairWithoutPlaintextResponse.struct_class = Types::GenerateDataKeyPairWithoutPlaintextResponse
396
+
344
397
  GenerateDataKeyRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "KeyId"))
345
398
  GenerateDataKeyRequest.add_member(:encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContext"))
346
399
  GenerateDataKeyRequest.add_member(:number_of_bytes, Shapes::ShapeRef.new(shape: NumberOfBytesType, location_name: "NumberOfBytes"))
@@ -395,6 +448,18 @@ module Aws::KMS
395
448
  GetParametersForImportResponse.add_member(:parameters_valid_to, Shapes::ShapeRef.new(shape: DateType, location_name: "ParametersValidTo"))
396
449
  GetParametersForImportResponse.struct_class = Types::GetParametersForImportResponse
397
450
 
451
+ GetPublicKeyRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "KeyId"))
452
+ GetPublicKeyRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
453
+ GetPublicKeyRequest.struct_class = Types::GetPublicKeyRequest
454
+
455
+ GetPublicKeyResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
456
+ GetPublicKeyResponse.add_member(:public_key, Shapes::ShapeRef.new(shape: PublicKeyType, location_name: "PublicKey"))
457
+ GetPublicKeyResponse.add_member(:customer_master_key_spec, Shapes::ShapeRef.new(shape: CustomerMasterKeySpec, location_name: "CustomerMasterKeySpec"))
458
+ GetPublicKeyResponse.add_member(:key_usage, Shapes::ShapeRef.new(shape: KeyUsageType, location_name: "KeyUsage"))
459
+ GetPublicKeyResponse.add_member(:encryption_algorithms, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpecList, location_name: "EncryptionAlgorithms"))
460
+ GetPublicKeyResponse.add_member(:signing_algorithms, Shapes::ShapeRef.new(shape: SigningAlgorithmSpecList, location_name: "SigningAlgorithms"))
461
+ GetPublicKeyResponse.struct_class = Types::GetPublicKeyResponse
462
+
398
463
  GrantConstraints.add_member(:encryption_context_subset, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContextSubset"))
399
464
  GrantConstraints.add_member(:encryption_context_equals, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "EncryptionContextEquals"))
400
465
  GrantConstraints.struct_class = Types::GrantConstraints
@@ -425,6 +490,9 @@ module Aws::KMS
425
490
 
426
491
  ImportKeyMaterialResponse.struct_class = Types::ImportKeyMaterialResponse
427
492
 
493
+ IncorrectKeyException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
494
+ IncorrectKeyException.struct_class = Types::IncorrectKeyException
495
+
428
496
  IncorrectKeyMaterialException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
429
497
  IncorrectKeyMaterialException.struct_class = Types::IncorrectKeyMaterialException
430
498
 
@@ -458,6 +526,9 @@ module Aws::KMS
458
526
  KMSInternalException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
459
527
  KMSInternalException.struct_class = Types::KMSInternalException
460
528
 
529
+ KMSInvalidSignatureException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
530
+ KMSInvalidSignatureException.struct_class = Types::KMSInvalidSignatureException
531
+
461
532
  KMSInvalidStateException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
462
533
  KMSInvalidStateException.struct_class = Types::KMSInvalidStateException
463
534
 
@@ -482,6 +553,9 @@ module Aws::KMS
482
553
  KeyMetadata.add_member(:cloud_hsm_cluster_id, Shapes::ShapeRef.new(shape: CloudHsmClusterIdType, location_name: "CloudHsmClusterId"))
483
554
  KeyMetadata.add_member(:expiration_model, Shapes::ShapeRef.new(shape: ExpirationModelType, location_name: "ExpirationModel"))
484
555
  KeyMetadata.add_member(:key_manager, Shapes::ShapeRef.new(shape: KeyManagerType, location_name: "KeyManager"))
556
+ KeyMetadata.add_member(:customer_master_key_spec, Shapes::ShapeRef.new(shape: CustomerMasterKeySpec, location_name: "CustomerMasterKeySpec"))
557
+ KeyMetadata.add_member(:encryption_algorithms, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpecList, location_name: "EncryptionAlgorithms"))
558
+ KeyMetadata.add_member(:signing_algorithms, Shapes::ShapeRef.new(shape: SigningAlgorithmSpecList, location_name: "SigningAlgorithms"))
485
559
  KeyMetadata.struct_class = Types::KeyMetadata
486
560
 
487
561
  KeyUnavailableException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessageType, location_name: "message"))
@@ -560,14 +634,19 @@ module Aws::KMS
560
634
 
561
635
  ReEncryptRequest.add_member(:ciphertext_blob, Shapes::ShapeRef.new(shape: CiphertextType, required: true, location_name: "CiphertextBlob"))
562
636
  ReEncryptRequest.add_member(:source_encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "SourceEncryptionContext"))
637
+ ReEncryptRequest.add_member(:source_key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "SourceKeyId"))
563
638
  ReEncryptRequest.add_member(:destination_key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "DestinationKeyId"))
564
639
  ReEncryptRequest.add_member(:destination_encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextType, location_name: "DestinationEncryptionContext"))
640
+ ReEncryptRequest.add_member(:source_encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "SourceEncryptionAlgorithm"))
641
+ ReEncryptRequest.add_member(:destination_encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "DestinationEncryptionAlgorithm"))
565
642
  ReEncryptRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
566
643
  ReEncryptRequest.struct_class = Types::ReEncryptRequest
567
644
 
568
645
  ReEncryptResponse.add_member(:ciphertext_blob, Shapes::ShapeRef.new(shape: CiphertextType, location_name: "CiphertextBlob"))
569
646
  ReEncryptResponse.add_member(:source_key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "SourceKeyId"))
570
647
  ReEncryptResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
648
+ ReEncryptResponse.add_member(:source_encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "SourceEncryptionAlgorithm"))
649
+ ReEncryptResponse.add_member(:destination_encryption_algorithm, Shapes::ShapeRef.new(shape: EncryptionAlgorithmSpec, location_name: "DestinationEncryptionAlgorithm"))
571
650
  ReEncryptResponse.struct_class = Types::ReEncryptResponse
572
651
 
573
652
  RetireGrantRequest.add_member(:grant_token, Shapes::ShapeRef.new(shape: GrantTokenType, location_name: "GrantToken"))
@@ -587,6 +666,20 @@ module Aws::KMS
587
666
  ScheduleKeyDeletionResponse.add_member(:deletion_date, Shapes::ShapeRef.new(shape: DateType, location_name: "DeletionDate"))
588
667
  ScheduleKeyDeletionResponse.struct_class = Types::ScheduleKeyDeletionResponse
589
668
 
669
+ SignRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "KeyId"))
670
+ SignRequest.add_member(:message, Shapes::ShapeRef.new(shape: PlaintextType, required: true, location_name: "Message"))
671
+ SignRequest.add_member(:message_type, Shapes::ShapeRef.new(shape: MessageType, location_name: "MessageType"))
672
+ SignRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
673
+ SignRequest.add_member(:signing_algorithm, Shapes::ShapeRef.new(shape: SigningAlgorithmSpec, required: true, location_name: "SigningAlgorithm"))
674
+ SignRequest.struct_class = Types::SignRequest
675
+
676
+ SignResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
677
+ SignResponse.add_member(:signature, Shapes::ShapeRef.new(shape: CiphertextType, location_name: "Signature"))
678
+ SignResponse.add_member(:signing_algorithm, Shapes::ShapeRef.new(shape: SigningAlgorithmSpec, location_name: "SigningAlgorithm"))
679
+ SignResponse.struct_class = Types::SignResponse
680
+
681
+ SigningAlgorithmSpecList.member = Shapes::ShapeRef.new(shape: SigningAlgorithmSpec)
682
+
590
683
  Tag.add_member(:tag_key, Shapes::ShapeRef.new(shape: TagKeyType, required: true, location_name: "TagKey"))
591
684
  Tag.add_member(:tag_value, Shapes::ShapeRef.new(shape: TagValueType, required: true, location_name: "TagValue"))
592
685
  Tag.struct_class = Types::Tag
@@ -625,6 +718,19 @@ module Aws::KMS
625
718
  UpdateKeyDescriptionRequest.add_member(:description, Shapes::ShapeRef.new(shape: DescriptionType, required: true, location_name: "Description"))
626
719
  UpdateKeyDescriptionRequest.struct_class = Types::UpdateKeyDescriptionRequest
627
720
 
721
+ VerifyRequest.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, required: true, location_name: "KeyId"))
722
+ VerifyRequest.add_member(:message, Shapes::ShapeRef.new(shape: PlaintextType, required: true, location_name: "Message"))
723
+ VerifyRequest.add_member(:message_type, Shapes::ShapeRef.new(shape: MessageType, location_name: "MessageType"))
724
+ VerifyRequest.add_member(:signature, Shapes::ShapeRef.new(shape: CiphertextType, required: true, location_name: "Signature"))
725
+ VerifyRequest.add_member(:signing_algorithm, Shapes::ShapeRef.new(shape: SigningAlgorithmSpec, required: true, location_name: "SigningAlgorithm"))
726
+ VerifyRequest.add_member(:grant_tokens, Shapes::ShapeRef.new(shape: GrantTokenList, location_name: "GrantTokens"))
727
+ VerifyRequest.struct_class = Types::VerifyRequest
728
+
729
+ VerifyResponse.add_member(:key_id, Shapes::ShapeRef.new(shape: KeyIdType, location_name: "KeyId"))
730
+ VerifyResponse.add_member(:signature_valid, Shapes::ShapeRef.new(shape: BooleanType, location_name: "SignatureValid"))
731
+ VerifyResponse.add_member(:signing_algorithm, Shapes::ShapeRef.new(shape: SigningAlgorithmSpec, location_name: "SigningAlgorithm"))
732
+ VerifyResponse.struct_class = Types::VerifyResponse
733
+
628
734
 
629
735
  # @api private
630
736
  API = Seahorse::Model::Api.new.tap do |api|
@@ -744,6 +850,8 @@ module Aws::KMS
744
850
  o.errors << Shapes::ShapeRef.new(shape: DisabledException)
745
851
  o.errors << Shapes::ShapeRef.new(shape: InvalidCiphertextException)
746
852
  o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
853
+ o.errors << Shapes::ShapeRef.new(shape: IncorrectKeyException)
854
+ o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
747
855
  o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
748
856
  o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
749
857
  o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
@@ -910,6 +1018,38 @@ module Aws::KMS
910
1018
  o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
911
1019
  end)
912
1020
 
1021
+ api.add_operation(:generate_data_key_pair, Seahorse::Model::Operation.new.tap do |o|
1022
+ o.name = "GenerateDataKeyPair"
1023
+ o.http_method = "POST"
1024
+ o.http_request_uri = "/"
1025
+ o.input = Shapes::ShapeRef.new(shape: GenerateDataKeyPairRequest)
1026
+ o.output = Shapes::ShapeRef.new(shape: GenerateDataKeyPairResponse)
1027
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1028
+ o.errors << Shapes::ShapeRef.new(shape: DisabledException)
1029
+ o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
1030
+ o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
1031
+ o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
1032
+ o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
1033
+ o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
1034
+ o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1035
+ end)
1036
+
1037
+ api.add_operation(:generate_data_key_pair_without_plaintext, Seahorse::Model::Operation.new.tap do |o|
1038
+ o.name = "GenerateDataKeyPairWithoutPlaintext"
1039
+ o.http_method = "POST"
1040
+ o.http_request_uri = "/"
1041
+ o.input = Shapes::ShapeRef.new(shape: GenerateDataKeyPairWithoutPlaintextRequest)
1042
+ o.output = Shapes::ShapeRef.new(shape: GenerateDataKeyPairWithoutPlaintextResponse)
1043
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1044
+ o.errors << Shapes::ShapeRef.new(shape: DisabledException)
1045
+ o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
1046
+ o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
1047
+ o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
1048
+ o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
1049
+ o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
1050
+ o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1051
+ end)
1052
+
913
1053
  api.add_operation(:generate_data_key_without_plaintext, Seahorse::Model::Operation.new.tap do |o|
914
1054
  o.name = "GenerateDataKeyWithoutPlaintext"
915
1055
  o.http_method = "POST"
@@ -979,6 +1119,24 @@ module Aws::KMS
979
1119
  o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
980
1120
  end)
981
1121
 
1122
+ api.add_operation(:get_public_key, Seahorse::Model::Operation.new.tap do |o|
1123
+ o.name = "GetPublicKey"
1124
+ o.http_method = "POST"
1125
+ o.http_request_uri = "/"
1126
+ o.input = Shapes::ShapeRef.new(shape: GetPublicKeyRequest)
1127
+ o.output = Shapes::ShapeRef.new(shape: GetPublicKeyResponse)
1128
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1129
+ o.errors << Shapes::ShapeRef.new(shape: DisabledException)
1130
+ o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
1131
+ o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
1132
+ o.errors << Shapes::ShapeRef.new(shape: UnsupportedOperationException)
1133
+ o.errors << Shapes::ShapeRef.new(shape: InvalidArnException)
1134
+ o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
1135
+ o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
1136
+ o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
1137
+ o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1138
+ end)
1139
+
982
1140
  api.add_operation(:import_key_material, Seahorse::Model::Operation.new.tap do |o|
983
1141
  o.name = "ImportKeyMaterial"
984
1142
  o.http_method = "POST"
@@ -1127,6 +1285,7 @@ module Aws::KMS
1127
1285
  o.errors << Shapes::ShapeRef.new(shape: DisabledException)
1128
1286
  o.errors << Shapes::ShapeRef.new(shape: InvalidCiphertextException)
1129
1287
  o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
1288
+ o.errors << Shapes::ShapeRef.new(shape: IncorrectKeyException)
1130
1289
  o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
1131
1290
  o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
1132
1291
  o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
@@ -1176,6 +1335,22 @@ module Aws::KMS
1176
1335
  o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1177
1336
  end)
1178
1337
 
1338
+ api.add_operation(:sign, Seahorse::Model::Operation.new.tap do |o|
1339
+ o.name = "Sign"
1340
+ o.http_method = "POST"
1341
+ o.http_request_uri = "/"
1342
+ o.input = Shapes::ShapeRef.new(shape: SignRequest)
1343
+ o.output = Shapes::ShapeRef.new(shape: SignResponse)
1344
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1345
+ o.errors << Shapes::ShapeRef.new(shape: DisabledException)
1346
+ o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
1347
+ o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
1348
+ o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
1349
+ o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
1350
+ o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
1351
+ o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1352
+ end)
1353
+
1179
1354
  api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o|
1180
1355
  o.name = "TagResource"
1181
1356
  o.http_method = "POST"
@@ -1222,6 +1397,7 @@ module Aws::KMS
1222
1397
  o.input = Shapes::ShapeRef.new(shape: UpdateCustomKeyStoreRequest)
1223
1398
  o.output = Shapes::ShapeRef.new(shape: UpdateCustomKeyStoreResponse)
1224
1399
  o.errors << Shapes::ShapeRef.new(shape: CustomKeyStoreNotFoundException)
1400
+ o.errors << Shapes::ShapeRef.new(shape: CustomKeyStoreNameInUseException)
1225
1401
  o.errors << Shapes::ShapeRef.new(shape: CloudHsmClusterNotFoundException)
1226
1402
  o.errors << Shapes::ShapeRef.new(shape: CloudHsmClusterNotRelatedException)
1227
1403
  o.errors << Shapes::ShapeRef.new(shape: CustomKeyStoreInvalidStateException)
@@ -1242,6 +1418,23 @@ module Aws::KMS
1242
1418
  o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
1243
1419
  o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1244
1420
  end)
1421
+
1422
+ api.add_operation(:verify, Seahorse::Model::Operation.new.tap do |o|
1423
+ o.name = "Verify"
1424
+ o.http_method = "POST"
1425
+ o.http_request_uri = "/"
1426
+ o.input = Shapes::ShapeRef.new(shape: VerifyRequest)
1427
+ o.output = Shapes::ShapeRef.new(shape: VerifyResponse)
1428
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1429
+ o.errors << Shapes::ShapeRef.new(shape: DisabledException)
1430
+ o.errors << Shapes::ShapeRef.new(shape: KeyUnavailableException)
1431
+ o.errors << Shapes::ShapeRef.new(shape: DependencyTimeoutException)
1432
+ o.errors << Shapes::ShapeRef.new(shape: InvalidKeyUsageException)
1433
+ o.errors << Shapes::ShapeRef.new(shape: InvalidGrantTokenException)
1434
+ o.errors << Shapes::ShapeRef.new(shape: KMSInternalException)
1435
+ o.errors << Shapes::ShapeRef.new(shape: KMSInvalidStateException)
1436
+ o.errors << Shapes::ShapeRef.new(shape: KMSInvalidSignatureException)
1437
+ end)
1245
1438
  end
1246
1439
 
1247
1440
  end
@@ -218,6 +218,22 @@ module Aws::KMS
218
218
 
219
219
  end
220
220
 
221
+ class IncorrectKeyException < ServiceError
222
+
223
+ # @param [Seahorse::Client::RequestContext] context
224
+ # @param [String] message
225
+ # @param [Aws::KMS::Types::IncorrectKeyException] data
226
+ def initialize(context, message, data = Aws::EmptyStructure.new)
227
+ super(context, message, data)
228
+ end
229
+
230
+ # @return [String]
231
+ def message
232
+ @message || @data[:message]
233
+ end
234
+
235
+ end
236
+
221
237
  class IncorrectKeyMaterialException < ServiceError
222
238
 
223
239
  # @param [Seahorse::Client::RequestContext] context
@@ -394,6 +410,22 @@ module Aws::KMS
394
410
 
395
411
  end
396
412
 
413
+ class KMSInvalidSignatureException < ServiceError
414
+
415
+ # @param [Seahorse::Client::RequestContext] context
416
+ # @param [String] message
417
+ # @param [Aws::KMS::Types::KMSInvalidSignatureException] data
418
+ def initialize(context, message, data = Aws::EmptyStructure.new)
419
+ super(context, message, data)
420
+ end
421
+
422
+ # @return [String]
423
+ def message
424
+ @message || @data[:message]
425
+ end
426
+
427
+ end
428
+
397
429
  class KMSInvalidStateException < ServiceError
398
430
 
399
431
  # @param [Seahorse::Client::RequestContext] context
@@ -324,6 +324,9 @@ module Aws::KMS
324
324
  # in the specified AWS CloudHSM cluster. AWS KMS logs into the cluster
325
325
  # as this user to manage key material on your behalf.
326
326
  #
327
+ # The password must be a string of 7 to 32 characters. Its value is
328
+ # case sensitive.
329
+ #
327
330
  # This parameter tells AWS KMS the `kmsuser` account password; it does
328
331
  # not change the password in the AWS CloudHSM cluster.
329
332
  #
@@ -360,7 +363,7 @@ module Aws::KMS
360
363
  # key_id: "KeyIdType", # required
361
364
  # grantee_principal: "PrincipalIdType", # required
362
365
  # retiring_principal: "PrincipalIdType",
363
- # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, CreateGrant, RetireGrant, DescribeKey
366
+ # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext
364
367
  # constraints: {
365
368
  # encryption_context_subset: {
366
369
  # "EncryptionContextKey" => "EncryptionContextValue",
@@ -515,7 +518,8 @@ module Aws::KMS
515
518
  # {
516
519
  # policy: "PolicyType",
517
520
  # description: "DescriptionType",
518
- # key_usage: "ENCRYPT_DECRYPT", # accepts ENCRYPT_DECRYPT
521
+ # key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT
522
+ # 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
519
523
  # origin: "AWS_KMS", # accepts AWS_KMS, EXTERNAL, AWS_CLOUDHSM
520
524
  # custom_key_store_id: "CustomKeyStoreIdType",
521
525
  # bypass_policy_lockout_safety_check: false,
@@ -554,7 +558,7 @@ module Aws::KMS
554
558
  # policy to the CMK. For more information, see [Default Key Policy][3]
555
559
  # in the *AWS Key Management Service Developer Guide*.
556
560
  #
557
- # The key policy size limit is 32 kilobytes (32768 bytes).
561
+ # The key policy size quota is 32 kilobytes (32768 bytes).
558
562
  #
559
563
  #
560
564
  #
@@ -571,28 +575,101 @@ module Aws::KMS
571
575
  # @return [String]
572
576
  #
573
577
  # @!attribute [rw] key_usage
574
- # The cryptographic operations for which you can use the CMK. The only
575
- # valid value is `ENCRYPT_DECRYPT`, which means you can use the CMK to
576
- # encrypt and decrypt data.
578
+ # Determines the cryptographic operations for which you can use the
579
+ # CMK. The default value is `ENCRYPT_DECRYPT`. This parameter is
580
+ # required only for asymmetric CMKs. You can't change the `KeyUsage`
581
+ # value after the CMK is created.
582
+ #
583
+ # Select only one valid value.
584
+ #
585
+ # * For symmetric CMKs, omit the parameter or specify
586
+ # `ENCRYPT_DECRYPT`.
587
+ #
588
+ # * For asymmetric CMKs with RSA key material, specify
589
+ # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
590
+ #
591
+ # * For asymmetric CMKs with ECC key material, specify `SIGN_VERIFY`.
592
+ # @return [String]
593
+ #
594
+ # @!attribute [rw] customer_master_key_spec
595
+ # Specifies the type of CMK to create. The default value,
596
+ # `SYMMETRIC_DEFAULT`, creates a CMK with a 256-bit symmetric key for
597
+ # encryption and decryption. For help choosing a key spec for your
598
+ # CMK, see [How to Choose Your CMK Configuration][1] in the *AWS Key
599
+ # Management Service Developer Guide*.
600
+ #
601
+ # The `CustomerMasterKeySpec` determines whether the CMK contains a
602
+ # symmetric key or an asymmetric key pair. It also determines the
603
+ # encryption algorithms or signing algorithms that the CMK supports.
604
+ # You can't change the `CustomerMasterKeySpec` after the CMK is
605
+ # created. To further restrict the algorithms that can be used with
606
+ # the CMK, use a condition key in its key policy or IAM policy. For
607
+ # more information, see [kms:EncryptionAlgorithm][2] or [kms:Signing
608
+ # Algorithm][3] in the *AWS Key Management Service Developer Guide*.
609
+ #
610
+ # [AWS services that are integrated with AWS KMS][4] use symmetric
611
+ # CMKs to protect your data. These services do not support asymmetric
612
+ # CMKs. For help determining whether a CMK is symmetric or asymmetric,
613
+ # see [Identifying Symmetric and Asymmetric CMKs][5] in the *AWS Key
614
+ # Management Service Developer Guide*.
615
+ #
616
+ # AWS KMS supports the following key specs for CMKs:
617
+ #
618
+ # * Symmetric key (default)
619
+ #
620
+ # * `SYMMETRIC_DEFAULT` (AES-256-GCM)
621
+ #
622
+ # ^
623
+ #
624
+ # * Asymmetric RSA key pairs
625
+ #
626
+ # * `RSA_2048`
627
+ #
628
+ # * `RSA_3072`
629
+ #
630
+ # * `RSA_4096`
631
+ #
632
+ # * Asymmetric NIST-recommended elliptic curve key pairs
633
+ #
634
+ # * `ECC_NIST_P256` (secp256r1)
635
+ #
636
+ # * `ECC_NIST_P384` (secp384r1)
637
+ #
638
+ # * `ECC_NIST_P521` (secp521r1)
639
+ #
640
+ # * Other asymmetric elliptic curve key pairs
641
+ #
642
+ # * `ECC_SECG_P256K1` (secp256k1), commonly used for
643
+ # cryptocurrencies.
644
+ #
645
+ # ^
646
+ #
647
+ #
648
+ #
649
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html
650
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-algorithm
651
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-signing-algorithm
652
+ # [4]: http://aws.amazon.com/kms/features/#AWS_Service_Integration
653
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html
577
654
  # @return [String]
578
655
  #
579
656
  # @!attribute [rw] origin
580
657
  # The source of the key material for the CMK. You cannot change the
581
- # origin after you create the CMK.
582
- #
583
- # The default is `AWS_KMS`, which means AWS KMS creates the key
584
- # material in its own key store.
658
+ # origin after you create the CMK. The default is `AWS_KMS`, which
659
+ # means AWS KMS creates the key material.
585
660
  #
586
661
  # When the parameter value is `EXTERNAL`, AWS KMS creates a CMK
587
662
  # without key material so that you can import key material from your
588
663
  # existing key management infrastructure. For more information about
589
664
  # importing key material into AWS KMS, see [Importing Key Material][1]
590
- # in the *AWS Key Management Service Developer Guide*.
665
+ # in the *AWS Key Management Service Developer Guide*. This value is
666
+ # valid only for symmetric CMKs.
591
667
  #
592
668
  # When the parameter value is `AWS_CLOUDHSM`, AWS KMS creates the CMK
593
669
  # in an AWS KMS [custom key store][2] and creates its key material in
594
670
  # the associated AWS CloudHSM cluster. You must also use the
595
- # `CustomKeyStoreId` parameter to identify the custom key store.
671
+ # `CustomKeyStoreId` parameter to identify the custom key store. This
672
+ # value is valid only for symmetric CMKs.
596
673
  #
597
674
  #
598
675
  #
@@ -608,6 +685,9 @@ module Aws::KMS
608
685
  # associated with the custom key store must have at least two active
609
686
  # HSMs, each in a different Availability Zone in the Region.
610
687
  #
688
+ # This parameter is valid only for symmetric CMKs. You cannot create
689
+ # an asymmetric CMK in a custom key store.
690
+ #
611
691
  # To find the ID of a custom key store, use the
612
692
  # DescribeCustomKeyStores operation.
613
693
  #
@@ -648,12 +728,20 @@ module Aws::KMS
648
728
  #
649
729
  # @!attribute [rw] tags
650
730
  # One or more tags. Each tag consists of a tag key and a tag value.
651
- # Tag keys and tag values are both required, but tag values can be
652
- # empty (null) strings.
731
+ # Both the tag key and the tag value are required, but the tag value
732
+ # can be an empty (null) string.
733
+ #
734
+ # When you add tags to an AWS resource, AWS generates a cost
735
+ # allocation report with usage and costs aggregated by tags. For
736
+ # information about adding, changing, deleting and listing tags for
737
+ # CMKs, see [Tagging Keys][1].
738
+ #
739
+ # Use this parameter to tag the CMK when it is created. To add tags to
740
+ # an existing CMK, use the TagResource operation.
653
741
  #
654
- # Use this parameter to tag the CMK when it is created. Alternately,
655
- # you can omit this parameter and instead tag the CMK after it is
656
- # created using TagResource.
742
+ #
743
+ #
744
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html
657
745
  # @return [Array<Types::Tag>]
658
746
  #
659
747
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKeyRequest AWS API Documentation
@@ -662,6 +750,7 @@ module Aws::KMS
662
750
  :policy,
663
751
  :description,
664
752
  :key_usage,
753
+ :customer_master_key_spec,
665
754
  :origin,
666
755
  :custom_key_store_id,
667
756
  :bypass_policy_lockout_safety_check,
@@ -791,9 +880,10 @@ module Aws::KMS
791
880
  # AWS CloudHSM cluster is active and contains at least one active HSM.
792
881
  #
793
882
  # A value of `FAILED` indicates that an attempt to connect was
794
- # unsuccessful. For help resolving a connection failure, see
795
- # [Troubleshooting a Custom Key Store][1] in the *AWS Key Management
796
- # Service Developer Guide*.
883
+ # unsuccessful. The `ConnectionErrorCode` field in the response
884
+ # indicates the cause of the failure. For help resolving a connection
885
+ # failure, see [Troubleshooting a Custom Key Store][1] in the *AWS Key
886
+ # Management Service Developer Guide*.
797
887
  #
798
888
  #
799
889
  #
@@ -801,7 +891,12 @@ module Aws::KMS
801
891
  # @return [String]
802
892
  #
803
893
  # @!attribute [rw] connection_error_code
804
- # Describes the connection error. Valid values are:
894
+ # Describes the connection error. This field appears in the response
895
+ # only when the `ConnectionState` is `FAILED`. For help resolving
896
+ # these errors, see [How to Fix a Connection Failure][1] in *AWS Key
897
+ # Management Service Developer Guide*.
898
+ #
899
+ # Valid values are:
805
900
  #
806
901
  # * `CLUSTER_NOT_FOUND` - AWS KMS cannot find the AWS CloudHSM cluster
807
902
  # with the specified cluster ID.
@@ -817,23 +912,49 @@ module Aws::KMS
817
912
  # again.
818
913
  #
819
914
  # * `INVALID_CREDENTIALS` - AWS KMS does not have the correct password
820
- # for the `kmsuser` crypto user in the AWS CloudHSM cluster.
915
+ # for the `kmsuser` crypto user in the AWS CloudHSM cluster. Before
916
+ # you can connect your custom key store to its AWS CloudHSM cluster,
917
+ # you must change the `kmsuser` account password and update the key
918
+ # store password value for the custom key store.
821
919
  #
822
920
  # * `NETWORK_ERRORS` - Network errors are preventing AWS KMS from
823
921
  # connecting to the custom key store.
824
922
  #
923
+ # * `SUBNET_NOT_FOUND` - A subnet in the AWS CloudHSM cluster
924
+ # configuration was deleted. If AWS KMS cannot find all of the
925
+ # subnets that were configured for the cluster when the custom key
926
+ # store was created, attempts to connect fail. To fix this error,
927
+ # create a cluster from a backup and associate it with your custom
928
+ # key store. This process includes selecting a VPC and subnets. For
929
+ # details, see [How to Fix a Connection Failure][1] in the *AWS Key
930
+ # Management Service Developer Guide*.
931
+ #
825
932
  # * `USER_LOCKED_OUT` - The `kmsuser` CU account is locked out of the
826
933
  # associated AWS CloudHSM cluster due to too many failed password
827
934
  # attempts. Before you can connect your custom key store to its AWS
828
935
  # CloudHSM cluster, you must change the `kmsuser` account password
829
- # and update the password value for the custom key store.
936
+ # and update the key store password value for the custom key store.
830
937
  #
831
- # For help with connection failures, see [Troubleshooting Custom Key
832
- # Stores][1] in the *AWS Key Management Service Developer Guide*.
938
+ # * `USER_LOGGED_IN` - The `kmsuser` CU account is logged into the the
939
+ # associated AWS CloudHSM cluster. This prevents AWS KMS from
940
+ # rotating the `kmsuser` account password and logging into the
941
+ # cluster. Before you can connect your custom key store to its AWS
942
+ # CloudHSM cluster, you must log the `kmsuser` CU out of the
943
+ # cluster. If you changed the `kmsuser` password to log into the
944
+ # cluster, you must also and update the key store password value for
945
+ # the custom key store. For help, see [How to Log Out and
946
+ # Reconnect][2] in the *AWS Key Management Service Developer Guide*.
833
947
  #
948
+ # * `USER_NOT_FOUND` - AWS KMS cannot find a `kmsuser` CU account in
949
+ # the associated AWS CloudHSM cluster. Before you can connect your
950
+ # custom key store to its AWS CloudHSM cluster, you must create a
951
+ # `kmsuser` CU account in the cluster, and then update the key store
952
+ # password value for the custom key store.
834
953
  #
835
954
  #
836
- # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html
955
+ #
956
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#fix-keystore-failed
957
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#login-kmsuser-2
837
958
  # @return [String]
838
959
  #
839
960
  # @!attribute [rw] creation_date
@@ -862,6 +983,8 @@ module Aws::KMS
862
983
  # "EncryptionContextKey" => "EncryptionContextValue",
863
984
  # },
864
985
  # grant_tokens: ["GrantTokenType"],
986
+ # key_id: "KeyIdType",
987
+ # encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
865
988
  # }
866
989
  #
867
990
  # @!attribute [rw] ciphertext_blob
@@ -869,9 +992,20 @@ module Aws::KMS
869
992
  # @return [String]
870
993
  #
871
994
  # @!attribute [rw] encryption_context
872
- # The encryption context. If this was specified in the Encrypt
873
- # function, it must be specified here or the decryption operation will
874
- # fail. For more information, see [Encryption Context][1].
995
+ # Specifies the encryption context to use when decrypting the data. An
996
+ # encryption context is valid only for cryptographic operations with a
997
+ # symmetric CMK. The standard asymmetric encryption algorithms that
998
+ # AWS KMS uses do not support an encryption context.
999
+ #
1000
+ # An *encryption context* is a collection of non-secret key-value
1001
+ # pairs that represents additional authenticated data. When you use an
1002
+ # encryption context to encrypt data, you must specify the same (an
1003
+ # exact case-sensitive match) encryption context to decrypt the data.
1004
+ # An encryption context is optional when encrypting with a symmetric
1005
+ # CMK, but it is highly recommended.
1006
+ #
1007
+ # For more information, see [Encryption Context][1] in the *AWS Key
1008
+ # Management Service Developer Guide*.
875
1009
  #
876
1010
  #
877
1011
  #
@@ -889,30 +1023,83 @@ module Aws::KMS
889
1023
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
890
1024
  # @return [Array<String>]
891
1025
  #
1026
+ # @!attribute [rw] key_id
1027
+ # Specifies the customer master key (CMK) that AWS KMS will use to
1028
+ # decrypt the ciphertext. Enter a key ID of the CMK that was used to
1029
+ # encrypt the ciphertext.
1030
+ #
1031
+ # If you specify a `KeyId` value, the `Decrypt` operation succeeds
1032
+ # only if the specified CMK was used to encrypt the ciphertext.
1033
+ #
1034
+ # This parameter is required only when the ciphertext was encrypted
1035
+ # under an asymmetric CMK. Otherwise, AWS KMS uses the metadata that
1036
+ # it adds to the ciphertext blob to determine which CMK was used to
1037
+ # encrypt the ciphertext. However, you can use this parameter to
1038
+ # ensure that a particular CMK (of any kind) is used to decrypt the
1039
+ # ciphertext.
1040
+ #
1041
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
1042
+ # name, or alias ARN. When using an alias name, prefix it with
1043
+ # `"alias/"`.
1044
+ #
1045
+ # For example:
1046
+ #
1047
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1048
+ #
1049
+ # * Key ARN:
1050
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1051
+ #
1052
+ # * Alias name: `alias/ExampleAlias`
1053
+ #
1054
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
1055
+ #
1056
+ # To get the key ID and key ARN for a CMK, use ListKeys or
1057
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
1058
+ # @return [String]
1059
+ #
1060
+ # @!attribute [rw] encryption_algorithm
1061
+ # Specifies the encryption algorithm that will be used to decrypt the
1062
+ # ciphertext. Specify the same algorithm that was used to encrypt the
1063
+ # data. If you specify a different algorithm, the `Decrypt` operation
1064
+ # fails.
1065
+ #
1066
+ # This parameter is required only when the ciphertext was encrypted
1067
+ # under an asymmetric CMK. The default value, `SYMMETRIC_DEFAULT`,
1068
+ # represents the only supported algorithm that is valid for symmetric
1069
+ # CMKs.
1070
+ # @return [String]
1071
+ #
892
1072
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DecryptRequest AWS API Documentation
893
1073
  #
894
1074
  class DecryptRequest < Struct.new(
895
1075
  :ciphertext_blob,
896
1076
  :encryption_context,
897
- :grant_tokens)
1077
+ :grant_tokens,
1078
+ :key_id,
1079
+ :encryption_algorithm)
898
1080
  include Aws::Structure
899
1081
  end
900
1082
 
901
1083
  # @!attribute [rw] key_id
902
- # ARN of the key used to perform the decryption. This value is
903
- # returned if no errors are encountered during the operation.
1084
+ # The ARN of the customer master key that was used to perform the
1085
+ # decryption.
904
1086
  # @return [String]
905
1087
  #
906
1088
  # @!attribute [rw] plaintext
907
1089
  # Decrypted plaintext data. When you use the HTTP API or the AWS CLI,
908
- # the value is Base64-encoded. Otherwise, it is not encoded.
1090
+ # the value is Base64-encoded. Otherwise, it is not Base64-encoded.
1091
+ # @return [String]
1092
+ #
1093
+ # @!attribute [rw] encryption_algorithm
1094
+ # The encryption algorithm that was used to decrypt the ciphertext.
909
1095
  # @return [String]
910
1096
  #
911
1097
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DecryptResponse AWS API Documentation
912
1098
  #
913
1099
  class DecryptResponse < Struct.new(
914
1100
  :key_id,
915
- :plaintext)
1101
+ :plaintext,
1102
+ :encryption_algorithm)
916
1103
  include Aws::Structure
917
1104
  end
918
1105
 
@@ -1186,7 +1373,9 @@ module Aws::KMS
1186
1373
  # }
1187
1374
  #
1188
1375
  # @!attribute [rw] key_id
1189
- # A unique identifier for the customer master key (CMK).
1376
+ # Identifies a symmetric customer master key (CMK). You cannot enable
1377
+ # automatic rotation of [asymmetric CMKs][1], CMKs with [imported key
1378
+ # material][2], or CMKs in a [custom key store][3].
1190
1379
  #
1191
1380
  # Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
1192
1381
  #
@@ -1199,6 +1388,12 @@ module Aws::KMS
1199
1388
  #
1200
1389
  # To get the key ID and key ARN for a CMK, use ListKeys or
1201
1390
  # DescribeKey.
1391
+ #
1392
+ #
1393
+ #
1394
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks
1395
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
1396
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1202
1397
  # @return [String]
1203
1398
  #
1204
1399
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotationRequest AWS API Documentation
@@ -1282,7 +1477,9 @@ module Aws::KMS
1282
1477
  # }
1283
1478
  #
1284
1479
  # @!attribute [rw] key_id
1285
- # A unique identifier for the customer master key (CMK).
1480
+ # Identifies a symmetric customer master key (CMK). You cannot enable
1481
+ # automatic rotation of asymmetric CMKs, CMKs with imported key
1482
+ # material, or CMKs in a [custom key store][1].
1286
1483
  #
1287
1484
  # Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
1288
1485
  #
@@ -1295,6 +1492,10 @@ module Aws::KMS
1295
1492
  #
1296
1493
  # To get the key ID and key ARN for a CMK, use ListKeys or
1297
1494
  # DescribeKey.
1495
+ #
1496
+ #
1497
+ #
1498
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
1298
1499
  # @return [String]
1299
1500
  #
1300
1501
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotationRequest AWS API Documentation
@@ -1314,6 +1515,7 @@ module Aws::KMS
1314
1515
  # "EncryptionContextKey" => "EncryptionContextValue",
1315
1516
  # },
1316
1517
  # grant_tokens: ["GrantTokenType"],
1518
+ # encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
1317
1519
  # }
1318
1520
  #
1319
1521
  # @!attribute [rw] key_id
@@ -1344,10 +1546,20 @@ module Aws::KMS
1344
1546
  # @return [String]
1345
1547
  #
1346
1548
  # @!attribute [rw] encryption_context
1347
- # Name-value pair that specifies the encryption context to be used for
1348
- # authenticated encryption. If used here, the same value must be
1349
- # supplied to the `Decrypt` API or decryption will fail. For more
1350
- # information, see [Encryption Context][1].
1549
+ # Specifies the encryption context that will be used to encrypt the
1550
+ # data. An encryption context is valid only for cryptographic
1551
+ # operations with a symmetric CMK. The standard asymmetric encryption
1552
+ # algorithms that AWS KMS uses do not support an encryption context.
1553
+ #
1554
+ # An *encryption context* is a collection of non-secret key-value
1555
+ # pairs that represents additional authenticated data. When you use an
1556
+ # encryption context to encrypt data, you must specify the same (an
1557
+ # exact case-sensitive match) encryption context to decrypt the data.
1558
+ # An encryption context is optional when encrypting with a symmetric
1559
+ # CMK, but it is highly recommended.
1560
+ #
1561
+ # For more information, see [Encryption Context][1] in the *AWS Key
1562
+ # Management Service Developer Guide*.
1351
1563
  #
1352
1564
  #
1353
1565
  #
@@ -1365,37 +1577,54 @@ module Aws::KMS
1365
1577
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
1366
1578
  # @return [Array<String>]
1367
1579
  #
1580
+ # @!attribute [rw] encryption_algorithm
1581
+ # Specifies the encryption algorithm that AWS KMS will use to encrypt
1582
+ # the plaintext message. The algorithm must be compatible with the CMK
1583
+ # that you specify.
1584
+ #
1585
+ # This parameter is required only for asymmetric CMKs. The default
1586
+ # value, `SYMMETRIC_DEFAULT`, is the algorithm used for symmetric
1587
+ # CMKs. If you are using an asymmetric CMK, we recommend
1588
+ # RSAES\_OAEP\_SHA\_256.
1589
+ # @return [String]
1590
+ #
1368
1591
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EncryptRequest AWS API Documentation
1369
1592
  #
1370
1593
  class EncryptRequest < Struct.new(
1371
1594
  :key_id,
1372
1595
  :plaintext,
1373
1596
  :encryption_context,
1374
- :grant_tokens)
1597
+ :grant_tokens,
1598
+ :encryption_algorithm)
1375
1599
  include Aws::Structure
1376
1600
  end
1377
1601
 
1378
1602
  # @!attribute [rw] ciphertext_blob
1379
1603
  # The encrypted plaintext. When you use the HTTP API or the AWS CLI,
1380
- # the value is Base64-encoded. Otherwise, it is not encoded.
1604
+ # the value is Base64-encoded. Otherwise, it is not Base64-encoded.
1381
1605
  # @return [String]
1382
1606
  #
1383
1607
  # @!attribute [rw] key_id
1384
1608
  # The ID of the key used during encryption.
1385
1609
  # @return [String]
1386
1610
  #
1611
+ # @!attribute [rw] encryption_algorithm
1612
+ # The encryption algorithm that was used to encrypt the plaintext.
1613
+ # @return [String]
1614
+ #
1387
1615
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EncryptResponse AWS API Documentation
1388
1616
  #
1389
1617
  class EncryptResponse < Struct.new(
1390
1618
  :ciphertext_blob,
1391
- :key_id)
1619
+ :key_id,
1620
+ :encryption_algorithm)
1392
1621
  include Aws::Structure
1393
1622
  end
1394
1623
 
1395
- # The request was rejected because the provided import token is expired.
1396
- # Use GetParametersForImport to get a new import token and public key,
1397
- # use the new public key to encrypt the key material, and then try the
1398
- # request again.
1624
+ # The request was rejected because the specified import token is
1625
+ # expired. Use GetParametersForImport to get a new import token and
1626
+ # public key, use the new public key to encrypt the key material, and
1627
+ # then try the request again.
1399
1628
  #
1400
1629
  # @!attribute [rw] message
1401
1630
  # @return [String]
@@ -1407,6 +1636,259 @@ module Aws::KMS
1407
1636
  include Aws::Structure
1408
1637
  end
1409
1638
 
1639
+ # @note When making an API call, you may pass GenerateDataKeyPairRequest
1640
+ # data as a hash:
1641
+ #
1642
+ # {
1643
+ # encryption_context: {
1644
+ # "EncryptionContextKey" => "EncryptionContextValue",
1645
+ # },
1646
+ # key_id: "KeyIdType", # required
1647
+ # key_pair_spec: "RSA_2048", # required, accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1
1648
+ # grant_tokens: ["GrantTokenType"],
1649
+ # }
1650
+ #
1651
+ # @!attribute [rw] encryption_context
1652
+ # Specifies the encryption context that will be used when encrypting
1653
+ # the private key in the data key pair.
1654
+ #
1655
+ # An *encryption context* is a collection of non-secret key-value
1656
+ # pairs that represents additional authenticated data. When you use an
1657
+ # encryption context to encrypt data, you must specify the same (an
1658
+ # exact case-sensitive match) encryption context to decrypt the data.
1659
+ # An encryption context is optional when encrypting with a symmetric
1660
+ # CMK, but it is highly recommended.
1661
+ #
1662
+ # For more information, see [Encryption Context][1] in the *AWS Key
1663
+ # Management Service Developer Guide*.
1664
+ #
1665
+ #
1666
+ #
1667
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
1668
+ # @return [Hash<String,String>]
1669
+ #
1670
+ # @!attribute [rw] key_id
1671
+ # Specifies the symmetric CMK that encrypts the private key in the
1672
+ # data key pair. You cannot specify an asymmetric CMKs.
1673
+ #
1674
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
1675
+ # name, or alias ARN. When using an alias name, prefix it with
1676
+ # `"alias/"`. To specify a CMK in a different AWS account, you must
1677
+ # use the key ARN or alias ARN.
1678
+ #
1679
+ # For example:
1680
+ #
1681
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1682
+ #
1683
+ # * Key ARN:
1684
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1685
+ #
1686
+ # * Alias name: `alias/ExampleAlias`
1687
+ #
1688
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
1689
+ #
1690
+ # To get the key ID and key ARN for a CMK, use ListKeys or
1691
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
1692
+ # @return [String]
1693
+ #
1694
+ # @!attribute [rw] key_pair_spec
1695
+ # Determines the type of data key pair that is generated.
1696
+ #
1697
+ # The AWS KMS rule that restricts the use of asymmetric RSA CMKs to
1698
+ # encrypt and decrypt or to sign and verify (but not both), and the
1699
+ # rule that permits you to use ECC CMKs only to sign and verify, are
1700
+ # not effective outside of AWS KMS.
1701
+ # @return [String]
1702
+ #
1703
+ # @!attribute [rw] grant_tokens
1704
+ # A list of grant tokens.
1705
+ #
1706
+ # For more information, see [Grant Tokens][1] in the *AWS Key
1707
+ # Management Service Developer Guide*.
1708
+ #
1709
+ #
1710
+ #
1711
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
1712
+ # @return [Array<String>]
1713
+ #
1714
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyPairRequest AWS API Documentation
1715
+ #
1716
+ class GenerateDataKeyPairRequest < Struct.new(
1717
+ :encryption_context,
1718
+ :key_id,
1719
+ :key_pair_spec,
1720
+ :grant_tokens)
1721
+ include Aws::Structure
1722
+ end
1723
+
1724
+ # @!attribute [rw] private_key_ciphertext_blob
1725
+ # The encrypted copy of the private key. When you use the HTTP API or
1726
+ # the AWS CLI, the value is Base64-encoded. Otherwise, it is not
1727
+ # Base64-encoded.
1728
+ # @return [String]
1729
+ #
1730
+ # @!attribute [rw] private_key_plaintext
1731
+ # The plaintext copy of the private key. When you use the HTTP API or
1732
+ # the AWS CLI, the value is Base64-encoded. Otherwise, it is not
1733
+ # Base64-encoded.
1734
+ # @return [String]
1735
+ #
1736
+ # @!attribute [rw] public_key
1737
+ # The public key (in plaintext).
1738
+ # @return [String]
1739
+ #
1740
+ # @!attribute [rw] key_id
1741
+ # The identifier of the CMK that encrypted the private key.
1742
+ # @return [String]
1743
+ #
1744
+ # @!attribute [rw] key_pair_spec
1745
+ # The type of data key pair that was generated.
1746
+ # @return [String]
1747
+ #
1748
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyPairResponse AWS API Documentation
1749
+ #
1750
+ class GenerateDataKeyPairResponse < Struct.new(
1751
+ :private_key_ciphertext_blob,
1752
+ :private_key_plaintext,
1753
+ :public_key,
1754
+ :key_id,
1755
+ :key_pair_spec)
1756
+ include Aws::Structure
1757
+ end
1758
+
1759
+ # @note When making an API call, you may pass GenerateDataKeyPairWithoutPlaintextRequest
1760
+ # data as a hash:
1761
+ #
1762
+ # {
1763
+ # encryption_context: {
1764
+ # "EncryptionContextKey" => "EncryptionContextValue",
1765
+ # },
1766
+ # key_id: "KeyIdType", # required
1767
+ # key_pair_spec: "RSA_2048", # required, accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1
1768
+ # grant_tokens: ["GrantTokenType"],
1769
+ # }
1770
+ #
1771
+ # @!attribute [rw] encryption_context
1772
+ # Specifies the encryption context that will be used when encrypting
1773
+ # the private key in the data key pair.
1774
+ #
1775
+ # An *encryption context* is a collection of non-secret key-value
1776
+ # pairs that represents additional authenticated data. When you use an
1777
+ # encryption context to encrypt data, you must specify the same (an
1778
+ # exact case-sensitive match) encryption context to decrypt the data.
1779
+ # An encryption context is optional when encrypting with a symmetric
1780
+ # CMK, but it is highly recommended.
1781
+ #
1782
+ # For more information, see [Encryption Context][1] in the *AWS Key
1783
+ # Management Service Developer Guide*.
1784
+ #
1785
+ #
1786
+ #
1787
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
1788
+ # @return [Hash<String,String>]
1789
+ #
1790
+ # @!attribute [rw] key_id
1791
+ # Specifies the CMK that encrypts the private key in the data key
1792
+ # pair. You must specify a symmetric CMK. You cannot use an asymmetric
1793
+ # CMK. To get the type of your CMK, use the DescribeKey operation.
1794
+ #
1795
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
1796
+ # name, or alias ARN. When using an alias name, prefix it with
1797
+ # `"alias/"`.
1798
+ #
1799
+ # For example:
1800
+ #
1801
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1802
+ #
1803
+ # * Key ARN:
1804
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1805
+ #
1806
+ # * Alias name: `alias/ExampleAlias`
1807
+ #
1808
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
1809
+ #
1810
+ # To get the key ID and key ARN for a CMK, use ListKeys or
1811
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
1812
+ # @return [String]
1813
+ #
1814
+ # @!attribute [rw] key_pair_spec
1815
+ # Determines the type of data key pair that is generated.
1816
+ #
1817
+ # The AWS KMS rule that restricts the use of asymmetric RSA CMKs to
1818
+ # encrypt and decrypt or to sign and verify (but not both), and the
1819
+ # rule that permits you to use ECC CMKs only to sign and verify, are
1820
+ # not effective outside of AWS KMS.
1821
+ # @return [String]
1822
+ #
1823
+ # @!attribute [rw] grant_tokens
1824
+ # A list of grant tokens.
1825
+ #
1826
+ # For more information, see [Grant Tokens][1] in the *AWS Key
1827
+ # Management Service Developer Guide*.
1828
+ #
1829
+ #
1830
+ #
1831
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
1832
+ # @return [Array<String>]
1833
+ #
1834
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyPairWithoutPlaintextRequest AWS API Documentation
1835
+ #
1836
+ class GenerateDataKeyPairWithoutPlaintextRequest < Struct.new(
1837
+ :encryption_context,
1838
+ :key_id,
1839
+ :key_pair_spec,
1840
+ :grant_tokens)
1841
+ include Aws::Structure
1842
+ end
1843
+
1844
+ # @!attribute [rw] private_key_ciphertext_blob
1845
+ # The encrypted copy of the private key. When you use the HTTP API or
1846
+ # the AWS CLI, the value is Base64-encoded. Otherwise, it is not
1847
+ # Base64-encoded.
1848
+ # @return [String]
1849
+ #
1850
+ # @!attribute [rw] public_key
1851
+ # The public key (in plaintext).
1852
+ # @return [String]
1853
+ #
1854
+ # @!attribute [rw] key_id
1855
+ # Specifies the CMK that encrypted the private key in the data key
1856
+ # pair. You must specify a symmetric CMK. You cannot use an asymmetric
1857
+ # CMK. To get the type of your CMK, use the DescribeKey operation.
1858
+ #
1859
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
1860
+ # name, or alias ARN. When using an alias name, prefix it with
1861
+ # `"alias/"`.
1862
+ #
1863
+ # For example:
1864
+ #
1865
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
1866
+ #
1867
+ # * Key ARN:
1868
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
1869
+ #
1870
+ # * Alias name: `alias/ExampleAlias`
1871
+ #
1872
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
1873
+ #
1874
+ # To get the key ID and key ARN for a CMK, use ListKeys or
1875
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
1876
+ # @return [String]
1877
+ #
1878
+ # @!attribute [rw] key_pair_spec
1879
+ # The type of data key pair that was generated.
1880
+ # @return [String]
1881
+ #
1882
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyPairWithoutPlaintextResponse AWS API Documentation
1883
+ #
1884
+ class GenerateDataKeyPairWithoutPlaintextResponse < Struct.new(
1885
+ :private_key_ciphertext_blob,
1886
+ :public_key,
1887
+ :key_id,
1888
+ :key_pair_spec)
1889
+ include Aws::Structure
1890
+ end
1891
+
1410
1892
  # @note When making an API call, you may pass GenerateDataKeyRequest
1411
1893
  # data as a hash:
1412
1894
  #
@@ -1421,7 +1903,7 @@ module Aws::KMS
1421
1903
  # }
1422
1904
  #
1423
1905
  # @!attribute [rw] key_id
1424
- # An identifier for the CMK that encrypts the data key.
1906
+ # Identifies the symmetric CMK that encrypts the data key.
1425
1907
  #
1426
1908
  # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
1427
1909
  # name, or alias ARN. When using an alias name, prefix it with
@@ -1444,8 +1926,15 @@ module Aws::KMS
1444
1926
  # @return [String]
1445
1927
  #
1446
1928
  # @!attribute [rw] encryption_context
1447
- # A set of key-value pairs that represents additional authenticated
1448
- # data.
1929
+ # Specifies the encryption context that will be used when encrypting
1930
+ # the data key.
1931
+ #
1932
+ # An *encryption context* is a collection of non-secret key-value
1933
+ # pairs that represents additional authenticated data. When you use an
1934
+ # encryption context to encrypt data, you must specify the same (an
1935
+ # exact case-sensitive match) encryption context to decrypt the data.
1936
+ # An encryption context is optional when encrypting with a symmetric
1937
+ # CMK, but it is highly recommended.
1449
1938
  #
1450
1939
  # For more information, see [Encryption Context][1] in the *AWS Key
1451
1940
  # Management Service Developer Guide*.
@@ -1456,15 +1945,22 @@ module Aws::KMS
1456
1945
  # @return [Hash<String,String>]
1457
1946
  #
1458
1947
  # @!attribute [rw] number_of_bytes
1459
- # The length of the data key in bytes. For example, use the value 64
1460
- # to generate a 512-bit data key (64 bytes is 512 bits). For common
1461
- # key lengths (128-bit and 256-bit symmetric keys), we recommend that
1462
- # you use the `KeySpec` field instead of this one.
1948
+ # Specifies the length of the data key in bytes. For example, use the
1949
+ # value 64 to generate a 512-bit data key (64 bytes is 512 bits). For
1950
+ # 128-bit (16-byte) and 256-bit (32-byte) data keys, use the `KeySpec`
1951
+ # parameter.
1952
+ #
1953
+ # You must specify either the `KeySpec` or the `NumberOfBytes`
1954
+ # parameter (but not both) in every `GenerateDataKey` request.
1463
1955
  # @return [Integer]
1464
1956
  #
1465
1957
  # @!attribute [rw] key_spec
1466
- # The length of the data key. Use `AES_128` to generate a 128-bit
1467
- # symmetric key, or `AES_256` to generate a 256-bit symmetric key.
1958
+ # Specifies the length of the data key. Use `AES_128` to generate a
1959
+ # 128-bit symmetric key, or `AES_256` to generate a 256-bit symmetric
1960
+ # key.
1961
+ #
1962
+ # You must specify either the `KeySpec` or the `NumberOfBytes`
1963
+ # parameter (but not both) in every `GenerateDataKey` request.
1468
1964
  # @return [String]
1469
1965
  #
1470
1966
  # @!attribute [rw] grant_tokens
@@ -1491,14 +1987,15 @@ module Aws::KMS
1491
1987
 
1492
1988
  # @!attribute [rw] ciphertext_blob
1493
1989
  # The encrypted copy of the data key. When you use the HTTP API or the
1494
- # AWS CLI, the value is Base64-encoded. Otherwise, it is not encoded.
1990
+ # AWS CLI, the value is Base64-encoded. Otherwise, it is not
1991
+ # Base64-encoded.
1495
1992
  # @return [String]
1496
1993
  #
1497
1994
  # @!attribute [rw] plaintext
1498
1995
  # The plaintext data key. When you use the HTTP API or the AWS CLI,
1499
- # the value is Base64-encoded. Otherwise, it is not encoded. Use this
1500
- # data key to encrypt your data outside of KMS. Then, remove it from
1501
- # memory as soon as possible.
1996
+ # the value is Base64-encoded. Otherwise, it is not Base64-encoded.
1997
+ # Use this data key to encrypt your data outside of KMS. Then, remove
1998
+ # it from memory as soon as possible.
1502
1999
  # @return [String]
1503
2000
  #
1504
2001
  # @!attribute [rw] key_id
@@ -1528,8 +2025,8 @@ module Aws::KMS
1528
2025
  # }
1529
2026
  #
1530
2027
  # @!attribute [rw] key_id
1531
- # The identifier of the customer master key (CMK) that encrypts the
1532
- # data key.
2028
+ # The identifier of the symmetric customer master key (CMK) that
2029
+ # encrypts the data key.
1533
2030
  #
1534
2031
  # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
1535
2032
  # name, or alias ARN. When using an alias name, prefix it with
@@ -1552,8 +2049,15 @@ module Aws::KMS
1552
2049
  # @return [String]
1553
2050
  #
1554
2051
  # @!attribute [rw] encryption_context
1555
- # A set of key-value pairs that represents additional authenticated
1556
- # data.
2052
+ # Specifies the encryption context that will be used when encrypting
2053
+ # the data key.
2054
+ #
2055
+ # An *encryption context* is a collection of non-secret key-value
2056
+ # pairs that represents additional authenticated data. When you use an
2057
+ # encryption context to encrypt data, you must specify the same (an
2058
+ # exact case-sensitive match) encryption context to decrypt the data.
2059
+ # An encryption context is optional when encrypting with a symmetric
2060
+ # CMK, but it is highly recommended.
1557
2061
  #
1558
2062
  # For more information, see [Encryption Context][1] in the *AWS Key
1559
2063
  # Management Service Developer Guide*.
@@ -1599,7 +2103,7 @@ module Aws::KMS
1599
2103
 
1600
2104
  # @!attribute [rw] ciphertext_blob
1601
2105
  # The encrypted data key. When you use the HTTP API or the AWS CLI,
1602
- # the value is Base64-encoded. Otherwise, it is not encoded.
2106
+ # the value is Base64-encoded. Otherwise, it is not Base64-encoded.
1603
2107
  # @return [String]
1604
2108
  #
1605
2109
  # @!attribute [rw] key_id
@@ -1646,7 +2150,7 @@ module Aws::KMS
1646
2150
 
1647
2151
  # @!attribute [rw] plaintext
1648
2152
  # The random byte string. When you use the HTTP API or the AWS CLI,
1649
- # the value is Base64-encoded. Otherwise, it is not encoded.
2153
+ # the value is Base64-encoded. Otherwise, it is not Base64-encoded.
1650
2154
  # @return [String]
1651
2155
  #
1652
2156
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateRandomResponse AWS API Documentation
@@ -1756,8 +2260,8 @@ module Aws::KMS
1756
2260
  # }
1757
2261
  #
1758
2262
  # @!attribute [rw] key_id
1759
- # The identifier of the CMK into which you will import key material.
1760
- # The CMK's `Origin` must be `EXTERNAL`.
2263
+ # The identifier of the symmetric CMK into which you will import key
2264
+ # material. The `Origin` of the CMK must be `EXTERNAL`.
1761
2265
  #
1762
2266
  # Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
1763
2267
  #
@@ -1803,29 +2307,142 @@ module Aws::KMS
1803
2307
  # `GetParametersForImport` request.
1804
2308
  # @return [String]
1805
2309
  #
1806
- # @!attribute [rw] import_token
1807
- # The import token to send in a subsequent ImportKeyMaterial request.
2310
+ # @!attribute [rw] import_token
2311
+ # The import token to send in a subsequent ImportKeyMaterial request.
2312
+ # @return [String]
2313
+ #
2314
+ # @!attribute [rw] public_key
2315
+ # The public key to use to encrypt the key material before importing
2316
+ # it with ImportKeyMaterial.
2317
+ # @return [String]
2318
+ #
2319
+ # @!attribute [rw] parameters_valid_to
2320
+ # The time at which the import token and public key are no longer
2321
+ # valid. After this time, you cannot use them to make an
2322
+ # ImportKeyMaterial request and you must send another
2323
+ # `GetParametersForImport` request to get new ones.
2324
+ # @return [Time]
2325
+ #
2326
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImportResponse AWS API Documentation
2327
+ #
2328
+ class GetParametersForImportResponse < Struct.new(
2329
+ :key_id,
2330
+ :import_token,
2331
+ :public_key,
2332
+ :parameters_valid_to)
2333
+ include Aws::Structure
2334
+ end
2335
+
2336
+ # @note When making an API call, you may pass GetPublicKeyRequest
2337
+ # data as a hash:
2338
+ #
2339
+ # {
2340
+ # key_id: "KeyIdType", # required
2341
+ # grant_tokens: ["GrantTokenType"],
2342
+ # }
2343
+ #
2344
+ # @!attribute [rw] key_id
2345
+ # Identifies the asymmetric CMK that includes the public key.
2346
+ #
2347
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
2348
+ # name, or alias ARN. When using an alias name, prefix it with
2349
+ # `"alias/"`. To specify a CMK in a different AWS account, you must
2350
+ # use the key ARN or alias ARN.
2351
+ #
2352
+ # For example:
2353
+ #
2354
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
2355
+ #
2356
+ # * Key ARN:
2357
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
2358
+ #
2359
+ # * Alias name: `alias/ExampleAlias`
2360
+ #
2361
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
2362
+ #
2363
+ # To get the key ID and key ARN for a CMK, use ListKeys or
2364
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
2365
+ # @return [String]
2366
+ #
2367
+ # @!attribute [rw] grant_tokens
2368
+ # A list of grant tokens.
2369
+ #
2370
+ # For more information, see [Grant Tokens][1] in the *AWS Key
2371
+ # Management Service Developer Guide*.
2372
+ #
2373
+ #
2374
+ #
2375
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
2376
+ # @return [Array<String>]
2377
+ #
2378
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetPublicKeyRequest AWS API Documentation
2379
+ #
2380
+ class GetPublicKeyRequest < Struct.new(
2381
+ :key_id,
2382
+ :grant_tokens)
2383
+ include Aws::Structure
2384
+ end
2385
+
2386
+ # @!attribute [rw] key_id
2387
+ # The identifier of the asymmetric CMK from which the public key was
2388
+ # downloaded.
2389
+ # @return [String]
2390
+ #
2391
+ # @!attribute [rw] public_key
2392
+ # The exported public key.
2393
+ #
2394
+ # The value is a DER-encoded X.509 public key, also known as
2395
+ # `SubjectPublicKeyInfo` (SPKI), as defined in [RFC 5280][1]. When you
2396
+ # use the HTTP API or the AWS CLI, the value is Base64-encoded.
2397
+ # Otherwise, it is not Base64-encoded.
2398
+ #
2399
+ #
2400
+ #
2401
+ #
2402
+ #
2403
+ # [1]: https://tools.ietf.org/html/rfc5280
2404
+ # @return [String]
2405
+ #
2406
+ # @!attribute [rw] customer_master_key_spec
2407
+ # The type of the of the public key that was downloaded.
1808
2408
  # @return [String]
1809
2409
  #
1810
- # @!attribute [rw] public_key
1811
- # The public key to use to encrypt the key material before importing
1812
- # it with ImportKeyMaterial.
2410
+ # @!attribute [rw] key_usage
2411
+ # The permitted use of the public key. Valid values are
2412
+ # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
2413
+ #
2414
+ # This information is critical. If a public key with `SIGN_VERIFY` key
2415
+ # usage encrypts data outside of AWS KMS, the ciphertext cannot be
2416
+ # decrypted.
1813
2417
  # @return [String]
1814
2418
  #
1815
- # @!attribute [rw] parameters_valid_to
1816
- # The time at which the import token and public key are no longer
1817
- # valid. After this time, you cannot use them to make an
1818
- # ImportKeyMaterial request and you must send another
1819
- # `GetParametersForImport` request to get new ones.
1820
- # @return [Time]
2419
+ # @!attribute [rw] encryption_algorithms
2420
+ # The encryption algorithms that AWS KMS supports for this key.
1821
2421
  #
1822
- # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImportResponse AWS API Documentation
2422
+ # This information is critical. If a public key encrypts data outside
2423
+ # of AWS KMS by using an unsupported encryption algorithm, the
2424
+ # ciphertext cannot be decrypted.
1823
2425
  #
1824
- class GetParametersForImportResponse < Struct.new(
2426
+ # This field appears in the response only when the `KeyUsage` of the
2427
+ # public key is `ENCRYPT_DECRYPT`.
2428
+ # @return [Array<String>]
2429
+ #
2430
+ # @!attribute [rw] signing_algorithms
2431
+ # The signing algorithms that AWS KMS supports for this key.
2432
+ #
2433
+ # This field appears in the response only when the `KeyUsage` of the
2434
+ # public key is `SIGN_VERIFY`.
2435
+ # @return [Array<String>]
2436
+ #
2437
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetPublicKeyResponse AWS API Documentation
2438
+ #
2439
+ class GetPublicKeyResponse < Struct.new(
1825
2440
  :key_id,
1826
- :import_token,
1827
2441
  :public_key,
1828
- :parameters_valid_to)
2442
+ :customer_master_key_spec,
2443
+ :key_usage,
2444
+ :encryption_algorithms,
2445
+ :signing_algorithms)
1829
2446
  include Aws::Structure
1830
2447
  end
1831
2448
 
@@ -1974,8 +2591,10 @@ module Aws::KMS
1974
2591
  # }
1975
2592
  #
1976
2593
  # @!attribute [rw] key_id
1977
- # The identifier of the CMK to import the key material into. The
1978
- # CMK's `Origin` must be `EXTERNAL`.
2594
+ # The identifier of the symmetric CMK that receives the imported key
2595
+ # material. The CMK's `Origin` must be `EXTERNAL`. This must be the
2596
+ # same CMK specified in the `KeyID` parameter of the corresponding
2597
+ # GetParametersForImport request.
1979
2598
  #
1980
2599
  # Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
1981
2600
  #
@@ -1998,10 +2617,10 @@ module Aws::KMS
1998
2617
  # @return [String]
1999
2618
  #
2000
2619
  # @!attribute [rw] encrypted_key_material
2001
- # The encrypted key material to import. It must be encrypted with the
2002
- # public key that you received in the response to a previous
2003
- # GetParametersForImport request, using the wrapping algorithm that
2004
- # you specified in that request.
2620
+ # The encrypted key material to import. The key material must be
2621
+ # encrypted with the public wrapping key that GetParametersForImport
2622
+ # returned, using the wrapping algorithm that you specified in the
2623
+ # same `GetParametersForImport` request.
2005
2624
  # @return [String]
2006
2625
  #
2007
2626
  # @!attribute [rw] valid_to
@@ -2035,9 +2654,24 @@ module Aws::KMS
2035
2654
  #
2036
2655
  class ImportKeyMaterialResponse < Aws::EmptyStructure; end
2037
2656
 
2038
- # The request was rejected because the provided key material is invalid
2039
- # or is not the same key material that was previously imported into this
2040
- # customer master key (CMK).
2657
+ # The request was rejected because the specified CMK cannot decrypt the
2658
+ # data. The `KeyId` in a Decrypt request and the `SourceKeyId` in a
2659
+ # ReEncrypt request must identify the same CMK that was used to encrypt
2660
+ # the ciphertext.
2661
+ #
2662
+ # @!attribute [rw] message
2663
+ # @return [String]
2664
+ #
2665
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/IncorrectKeyException AWS API Documentation
2666
+ #
2667
+ class IncorrectKeyException < Struct.new(
2668
+ :message)
2669
+ include Aws::Structure
2670
+ end
2671
+
2672
+ # The request was rejected because the key material in the request is,
2673
+ # expired, invalid, or is not the same key material that was previously
2674
+ # imported into this customer master key (CMK).
2041
2675
  #
2042
2676
  # @!attribute [rw] message
2043
2677
  # @return [String]
@@ -2096,10 +2730,13 @@ module Aws::KMS
2096
2730
  include Aws::Structure
2097
2731
  end
2098
2732
 
2099
- # The request was rejected because the specified ciphertext, or
2100
- # additional authenticated data incorporated into the ciphertext, such
2101
- # as the encryption context, is corrupted, missing, or otherwise
2102
- # invalid.
2733
+ # From the Decrypt or ReEncrypt operation, the request was rejected
2734
+ # because the specified ciphertext, or additional authenticated data
2735
+ # incorporated into the ciphertext, such as the encryption context, is
2736
+ # corrupted, missing, or otherwise invalid.
2737
+ #
2738
+ # From the ImportKeyMaterial operation, the request was rejected because
2739
+ # AWS KMS could not decrypt the encrypted (wrapped) key material.
2103
2740
  #
2104
2741
  # @!attribute [rw] message
2105
2742
  # @return [String]
@@ -2149,8 +2786,22 @@ module Aws::KMS
2149
2786
  include Aws::Structure
2150
2787
  end
2151
2788
 
2152
- # The request was rejected because the specified `KeySpec` value is not
2153
- # valid.
2789
+ # The request was rejected for one of the following reasons:
2790
+ #
2791
+ # * The `KeyUsage` value of the CMK is incompatible with the API
2792
+ # operation.
2793
+ #
2794
+ # * The encryption algorithm or signing algorithm specified for the
2795
+ # operation is incompatible with the type of key material in the CMK
2796
+ # `(CustomerMasterKeySpec`).
2797
+ #
2798
+ # For encrypting, decrypting, re-encrypting, and generating data keys,
2799
+ # the `KeyUsage` must be `ENCRYPT_DECRYPT`. For signing and verifying,
2800
+ # the `KeyUsage` must be `SIGN_VERIFY`. To find the `KeyUsage` of a CMK,
2801
+ # use the DescribeKey operation.
2802
+ #
2803
+ # To find the encryption or signing algorithms supported for a
2804
+ # particular CMK, use the DescribeKey operation.
2154
2805
  #
2155
2806
  # @!attribute [rw] message
2156
2807
  # @return [String]
@@ -2188,12 +2839,27 @@ module Aws::KMS
2188
2839
  include Aws::Structure
2189
2840
  end
2190
2841
 
2842
+ # The request was rejected because the signature verification failed.
2843
+ # Signature verification fails when it cannot confirm that signature was
2844
+ # produced by signing the specified message with the specified CMK and
2845
+ # signing algorithm.
2846
+ #
2847
+ # @!attribute [rw] message
2848
+ # @return [String]
2849
+ #
2850
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KMSInvalidSignatureException AWS API Documentation
2851
+ #
2852
+ class KMSInvalidSignatureException < Struct.new(
2853
+ :message)
2854
+ include Aws::Structure
2855
+ end
2856
+
2191
2857
  # The request was rejected because the state of the specified resource
2192
2858
  # is not valid for this request.
2193
2859
  #
2194
2860
  # For more information about how key state affects the use of a CMK, see
2195
- # [How Key State Affects Use of a Customer Master Key][1] in the *AWS
2196
- # Key Management Service Developer Guide*.
2861
+ # [How Key State Affects Use of a Customer Master Key][1] in the <i>
2862
+ # <i>AWS Key Management Service Developer Guide</i> </i>.
2197
2863
  #
2198
2864
  #
2199
2865
  #
@@ -2264,9 +2930,7 @@ module Aws::KMS
2264
2930
  # @return [String]
2265
2931
  #
2266
2932
  # @!attribute [rw] key_usage
2267
- # The cryptographic operations for which you can use the CMK. The only
2268
- # valid value is `ENCRYPT_DECRYPT`, which means you can use the CMK to
2269
- # encrypt and decrypt data.
2933
+ # The cryptographic operations for which you can use the CMK.
2270
2934
  # @return [String]
2271
2935
  #
2272
2936
  # @!attribute [rw] key_state
@@ -2342,6 +3006,26 @@ module Aws::KMS
2342
3006
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys
2343
3007
  # @return [String]
2344
3008
  #
3009
+ # @!attribute [rw] customer_master_key_spec
3010
+ # Describes the type of key material in the CMK.
3011
+ # @return [String]
3012
+ #
3013
+ # @!attribute [rw] encryption_algorithms
3014
+ # A list of encryption algorithms that the CMK supports. You cannot
3015
+ # use the CMK with other encryption algorithms within AWS KMS.
3016
+ #
3017
+ # This field appears only when the `KeyUsage` of the CMK is
3018
+ # `ENCRYPT_DECRYPT`.
3019
+ # @return [Array<String>]
3020
+ #
3021
+ # @!attribute [rw] signing_algorithms
3022
+ # A list of signing algorithms that the CMK supports. You cannot use
3023
+ # the CMK with other signing algorithms within AWS KMS.
3024
+ #
3025
+ # This field appears only when the `KeyUsage` of the CMK is
3026
+ # `SIGN_VERIFY`.
3027
+ # @return [Array<String>]
3028
+ #
2345
3029
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KeyMetadata AWS API Documentation
2346
3030
  #
2347
3031
  class KeyMetadata < Struct.new(
@@ -2359,12 +3043,15 @@ module Aws::KMS
2359
3043
  :custom_key_store_id,
2360
3044
  :cloud_hsm_cluster_id,
2361
3045
  :expiration_model,
2362
- :key_manager)
3046
+ :key_manager,
3047
+ :customer_master_key_spec,
3048
+ :encryption_algorithms,
3049
+ :signing_algorithms)
2363
3050
  include Aws::Structure
2364
3051
  end
2365
3052
 
2366
3053
  # The request was rejected because the specified CMK was not available.
2367
- # The request can be retried.
3054
+ # You can retry the request.
2368
3055
  #
2369
3056
  # @!attribute [rw] message
2370
3057
  # @return [String]
@@ -2376,8 +3063,8 @@ module Aws::KMS
2376
3063
  include Aws::Structure
2377
3064
  end
2378
3065
 
2379
- # The request was rejected because a limit was exceeded. For more
2380
- # information, see [Limits][1] in the *AWS Key Management Service
3066
+ # The request was rejected because a quota was exceeded. For more
3067
+ # information, see [Quotas][1] in the *AWS Key Management Service
2381
3068
  # Developer Guide*.
2382
3069
  #
2383
3070
  #
@@ -2881,12 +3568,15 @@ module Aws::KMS
2881
3568
  # visible][2] in the *AWS Identity and Access Management User
2882
3569
  # Guide*.
2883
3570
  #
2884
- # The key policy size limit is 32 kilobytes (32768 bytes).
3571
+ # The key policy cannot exceed 32 kilobytes (32768 bytes). For more
3572
+ # information, see [Resource Quotas][3] in the *AWS Key Management
3573
+ # Service Developer Guide*.
2885
3574
  #
2886
3575
  #
2887
3576
  #
2888
3577
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
2889
3578
  # [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency
3579
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/resource-limits.html
2890
3580
  # @return [String]
2891
3581
  #
2892
3582
  # @!attribute [rw] bypass_policy_lockout_safety_check
@@ -2929,10 +3619,13 @@ module Aws::KMS
2929
3619
  # source_encryption_context: {
2930
3620
  # "EncryptionContextKey" => "EncryptionContextValue",
2931
3621
  # },
3622
+ # source_key_id: "KeyIdType",
2932
3623
  # destination_key_id: "KeyIdType", # required
2933
3624
  # destination_encryption_context: {
2934
3625
  # "EncryptionContextKey" => "EncryptionContextValue",
2935
3626
  # },
3627
+ # source_encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
3628
+ # destination_encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
2936
3629
  # grant_tokens: ["GrantTokenType"],
2937
3630
  # }
2938
3631
  #
@@ -2941,12 +3634,64 @@ module Aws::KMS
2941
3634
  # @return [String]
2942
3635
  #
2943
3636
  # @!attribute [rw] source_encryption_context
2944
- # Encryption context used to encrypt and decrypt the data specified in
2945
- # the `CiphertextBlob` parameter.
3637
+ # Specifies the encryption context to use to decrypt the ciphertext.
3638
+ # Enter the same encryption context that was used to encrypt the
3639
+ # ciphertext.
3640
+ #
3641
+ # An *encryption context* is a collection of non-secret key-value
3642
+ # pairs that represents additional authenticated data. When you use an
3643
+ # encryption context to encrypt data, you must specify the same (an
3644
+ # exact case-sensitive match) encryption context to decrypt the data.
3645
+ # An encryption context is optional when encrypting with a symmetric
3646
+ # CMK, but it is highly recommended.
3647
+ #
3648
+ # For more information, see [Encryption Context][1] in the *AWS Key
3649
+ # Management Service Developer Guide*.
3650
+ #
3651
+ #
3652
+ #
3653
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
2946
3654
  # @return [Hash<String,String>]
2947
3655
  #
3656
+ # @!attribute [rw] source_key_id
3657
+ # A unique identifier for the CMK that is used to decrypt the
3658
+ # ciphertext before it reencrypts it using the destination CMK.
3659
+ #
3660
+ # This parameter is required only when the ciphertext was encrypted
3661
+ # under an asymmetric CMK. Otherwise, AWS KMS uses the metadata that
3662
+ # it adds to the ciphertext blob to determine which CMK was used to
3663
+ # encrypt the ciphertext. However, you can use this parameter to
3664
+ # ensure that a particular CMK (of any kind) is used to decrypt the
3665
+ # ciphertext before it is reencrypted.
3666
+ #
3667
+ # If you specify a `KeyId` value, the decrypt part of the `ReEncrypt`
3668
+ # operation succeeds only if the specified CMK was used to encrypt the
3669
+ # ciphertext.
3670
+ #
3671
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
3672
+ # name, or alias ARN. When using an alias name, prefix it with
3673
+ # `"alias/"`.
3674
+ #
3675
+ # For example:
3676
+ #
3677
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
3678
+ #
3679
+ # * Key ARN:
3680
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
3681
+ #
3682
+ # * Alias name: `alias/ExampleAlias`
3683
+ #
3684
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
3685
+ #
3686
+ # To get the key ID and key ARN for a CMK, use ListKeys or
3687
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
3688
+ # @return [String]
3689
+ #
2948
3690
  # @!attribute [rw] destination_key_id
2949
3691
  # A unique identifier for the CMK that is used to reencrypt the data.
3692
+ # Specify a symmetric or asymmetric CMK with a `KeyUsage` value of
3693
+ # `ENCRYPT_DECRYPT`. To find the `KeyUsage` value of a CMK, use the
3694
+ # DescribeKey operation.
2950
3695
  #
2951
3696
  # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
2952
3697
  # name, or alias ARN. When using an alias name, prefix it with
@@ -2969,9 +3714,51 @@ module Aws::KMS
2969
3714
  # @return [String]
2970
3715
  #
2971
3716
  # @!attribute [rw] destination_encryption_context
2972
- # Encryption context to use when the data is reencrypted.
3717
+ # Specifies that encryption context to use when the reencrypting the
3718
+ # data.
3719
+ #
3720
+ # A destination encryption context is valid only when the destination
3721
+ # CMK is a symmetric CMK. The standard ciphertext format for
3722
+ # asymmetric CMKs does not include fields for metadata.
3723
+ #
3724
+ # An *encryption context* is a collection of non-secret key-value
3725
+ # pairs that represents additional authenticated data. When you use an
3726
+ # encryption context to encrypt data, you must specify the same (an
3727
+ # exact case-sensitive match) encryption context to decrypt the data.
3728
+ # An encryption context is optional when encrypting with a symmetric
3729
+ # CMK, but it is highly recommended.
3730
+ #
3731
+ # For more information, see [Encryption Context][1] in the *AWS Key
3732
+ # Management Service Developer Guide*.
3733
+ #
3734
+ #
3735
+ #
3736
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
2973
3737
  # @return [Hash<String,String>]
2974
3738
  #
3739
+ # @!attribute [rw] source_encryption_algorithm
3740
+ # Specifies the encryption algorithm that AWS KMS will use to decrypt
3741
+ # the ciphertext before it is reencrypted. The default value,
3742
+ # `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric
3743
+ # CMKs.
3744
+ #
3745
+ # Specify the same algorithm that was used to encrypt the ciphertext.
3746
+ # If you specify a different algorithm, the decrypt attempt fails.
3747
+ #
3748
+ # This parameter is required only when the ciphertext was encrypted
3749
+ # under an asymmetric CMK.
3750
+ # @return [String]
3751
+ #
3752
+ # @!attribute [rw] destination_encryption_algorithm
3753
+ # Specifies the encryption algorithm that AWS KMS will use to reecrypt
3754
+ # the data after it has decrypted it. The default value,
3755
+ # `SYMMETRIC_DEFAULT`, represents the encryption algorithm used for
3756
+ # symmetric CMKs.
3757
+ #
3758
+ # This parameter is required only when the destination CMK is an
3759
+ # asymmetric CMK.
3760
+ # @return [String]
3761
+ #
2975
3762
  # @!attribute [rw] grant_tokens
2976
3763
  # A list of grant tokens.
2977
3764
  #
@@ -2988,15 +3775,18 @@ module Aws::KMS
2988
3775
  class ReEncryptRequest < Struct.new(
2989
3776
  :ciphertext_blob,
2990
3777
  :source_encryption_context,
3778
+ :source_key_id,
2991
3779
  :destination_key_id,
2992
3780
  :destination_encryption_context,
3781
+ :source_encryption_algorithm,
3782
+ :destination_encryption_algorithm,
2993
3783
  :grant_tokens)
2994
3784
  include Aws::Structure
2995
3785
  end
2996
3786
 
2997
3787
  # @!attribute [rw] ciphertext_blob
2998
3788
  # The reencrypted data. When you use the HTTP API or the AWS CLI, the
2999
- # value is Base64-encoded. Otherwise, it is not encoded.
3789
+ # value is Base64-encoded. Otherwise, it is not Base64-encoded.
3000
3790
  # @return [String]
3001
3791
  #
3002
3792
  # @!attribute [rw] source_key_id
@@ -3007,12 +3797,23 @@ module Aws::KMS
3007
3797
  # Unique identifier of the CMK used to reencrypt the data.
3008
3798
  # @return [String]
3009
3799
  #
3800
+ # @!attribute [rw] source_encryption_algorithm
3801
+ # The encryption algorithm that was used to decrypt the ciphertext
3802
+ # before it was reencrypted.
3803
+ # @return [String]
3804
+ #
3805
+ # @!attribute [rw] destination_encryption_algorithm
3806
+ # The encryption algorithm that was used to reencrypt the data.
3807
+ # @return [String]
3808
+ #
3010
3809
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncryptResponse AWS API Documentation
3011
3810
  #
3012
3811
  class ReEncryptResponse < Struct.new(
3013
3812
  :ciphertext_blob,
3014
3813
  :source_key_id,
3015
- :key_id)
3814
+ :key_id,
3815
+ :source_encryption_algorithm,
3816
+ :destination_encryption_algorithm)
3016
3817
  include Aws::Structure
3017
3818
  end
3018
3819
 
@@ -3151,6 +3952,125 @@ module Aws::KMS
3151
3952
  include Aws::Structure
3152
3953
  end
3153
3954
 
3955
+ # @note When making an API call, you may pass SignRequest
3956
+ # data as a hash:
3957
+ #
3958
+ # {
3959
+ # key_id: "KeyIdType", # required
3960
+ # message: "data", # required
3961
+ # message_type: "RAW", # accepts RAW, DIGEST
3962
+ # grant_tokens: ["GrantTokenType"],
3963
+ # signing_algorithm: "RSASSA_PSS_SHA_256", # required, accepts 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
3964
+ # }
3965
+ #
3966
+ # @!attribute [rw] key_id
3967
+ # Identifies an asymmetric CMK. AWS KMS uses the private key in the
3968
+ # asymmetric CMK to sign the message. The `KeyUsage` type of the CMK
3969
+ # must be `SIGN_VERIFY`. To find the `KeyUsage` of a CMK, use the
3970
+ # DescribeKey operation.
3971
+ #
3972
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
3973
+ # name, or alias ARN. When using an alias name, prefix it with
3974
+ # `"alias/"`. To specify a CMK in a different AWS account, you must
3975
+ # use the key ARN or alias ARN.
3976
+ #
3977
+ # For example:
3978
+ #
3979
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
3980
+ #
3981
+ # * Key ARN:
3982
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
3983
+ #
3984
+ # * Alias name: `alias/ExampleAlias`
3985
+ #
3986
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
3987
+ #
3988
+ # To get the key ID and key ARN for a CMK, use ListKeys or
3989
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
3990
+ # @return [String]
3991
+ #
3992
+ # @!attribute [rw] message
3993
+ # Specifies the message or message digest to sign. Messages can be
3994
+ # 0-4096 bytes. To sign a larger message, provide the message digest.
3995
+ #
3996
+ # If you provide a message, AWS KMS generates a hash digest of the
3997
+ # message and then signs it.
3998
+ # @return [String]
3999
+ #
4000
+ # @!attribute [rw] message_type
4001
+ # Tells AWS KMS whether the value of the `Message` parameter is a
4002
+ # message or message digest. The default value, RAW, indicates a
4003
+ # message. To indicate a message digest, enter `DIGEST`.
4004
+ # @return [String]
4005
+ #
4006
+ # @!attribute [rw] grant_tokens
4007
+ # A list of grant tokens.
4008
+ #
4009
+ # For more information, see [Grant Tokens][1] in the *AWS Key
4010
+ # Management Service Developer Guide*.
4011
+ #
4012
+ #
4013
+ #
4014
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
4015
+ # @return [Array<String>]
4016
+ #
4017
+ # @!attribute [rw] signing_algorithm
4018
+ # Specifies the signing algorithm to use when signing the message.
4019
+ #
4020
+ # Choose an algorithm that is compatible with the type and size of the
4021
+ # specified asymmetric CMK.
4022
+ # @return [String]
4023
+ #
4024
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/SignRequest AWS API Documentation
4025
+ #
4026
+ class SignRequest < Struct.new(
4027
+ :key_id,
4028
+ :message,
4029
+ :message_type,
4030
+ :grant_tokens,
4031
+ :signing_algorithm)
4032
+ include Aws::Structure
4033
+ end
4034
+
4035
+ # @!attribute [rw] key_id
4036
+ # The Amazon Resource Name (ARN) of the asymmetric CMK that was used
4037
+ # to sign the message.
4038
+ # @return [String]
4039
+ #
4040
+ # @!attribute [rw] signature
4041
+ # The cryptographic signature that was generated for the message.
4042
+ #
4043
+ # * When used with the supported RSA signing algorithms, the encoding
4044
+ # of this value is defined by [PKCS #1 in RFC 8017][1].
4045
+ #
4046
+ # * When used with the `ECDSA_SHA_256`, `ECDSA_SHA_384`, or
4047
+ # `ECDSA_SHA_512` signing algorithms, this value is a DER-encoded
4048
+ # object as defined by ANS X9.62–2005 and [RFC 3279 Section
4049
+ # 2.2.3][2]. This is the most commonly used signature format and is
4050
+ # appropriate for most uses.
4051
+ #
4052
+ # When you use the HTTP API or the AWS CLI, the value is
4053
+ # Base64-encoded. Otherwise, it is not Base64-encoded.
4054
+ #
4055
+ #
4056
+ #
4057
+ # [1]: https://tools.ietf.org/html/rfc8017
4058
+ # [2]: https://tools.ietf.org/html/rfc3279#section-2.2.3
4059
+ # @return [String]
4060
+ #
4061
+ # @!attribute [rw] signing_algorithm
4062
+ # The signing algorithm that was used to sign the message.
4063
+ # @return [String]
4064
+ #
4065
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/SignResponse AWS API Documentation
4066
+ #
4067
+ class SignResponse < Struct.new(
4068
+ :key_id,
4069
+ :signature,
4070
+ :signing_algorithm)
4071
+ include Aws::Structure
4072
+ end
4073
+
3154
4074
  # A key-value pair. A tag consists of a tag key and a tag value. Tag
3155
4075
  # keys and tag values are both required, but tag values can be empty
3156
4076
  # (null) strings.
@@ -3298,15 +4218,20 @@ module Aws::KMS
3298
4218
  # }
3299
4219
  #
3300
4220
  # @!attribute [rw] alias_name
3301
- # Specifies the name of the alias to change. This value must begin
4221
+ # Identifies the alias that is changing its CMK. This value must begin
3302
4222
  # with `alias/` followed by the alias name, such as
3303
- # `alias/ExampleAlias`.
4223
+ # `alias/ExampleAlias`. You cannot use UpdateAlias to change the alias
4224
+ # name.
3304
4225
  # @return [String]
3305
4226
  #
3306
4227
  # @!attribute [rw] target_key_id
3307
- # Unique identifier of the customer master key (CMK) to be mapped to
3308
- # the alias. When the update operation completes, the alias will point
3309
- # to this CMK.
4228
+ # Identifies the CMK to associate with the alias. When the update
4229
+ # operation completes, the alias will point to this CMK.
4230
+ #
4231
+ # The CMK must be in the same AWS account and Region as the alias.
4232
+ # Also, the new target CMK must be the same type as the current target
4233
+ # CMK (both symmetric or both asymmetric) and they must have the same
4234
+ # key usage.
3310
4235
  #
3311
4236
  # Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
3312
4237
  #
@@ -3431,5 +4356,122 @@ module Aws::KMS
3431
4356
  include Aws::Structure
3432
4357
  end
3433
4358
 
4359
+ # @note When making an API call, you may pass VerifyRequest
4360
+ # data as a hash:
4361
+ #
4362
+ # {
4363
+ # key_id: "KeyIdType", # required
4364
+ # message: "data", # required
4365
+ # message_type: "RAW", # accepts RAW, DIGEST
4366
+ # signature: "data", # required
4367
+ # signing_algorithm: "RSASSA_PSS_SHA_256", # required, accepts 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
4368
+ # grant_tokens: ["GrantTokenType"],
4369
+ # }
4370
+ #
4371
+ # @!attribute [rw] key_id
4372
+ # Identifies the asymmetric CMK that will be used to verify the
4373
+ # signature. This must be the same CMK that was used to generate the
4374
+ # signature. If you specify a different CMK, the signature
4375
+ # verification fails.
4376
+ #
4377
+ # To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
4378
+ # name, or alias ARN. When using an alias name, prefix it with
4379
+ # `"alias/"`. To specify a CMK in a different AWS account, you must
4380
+ # use the key ARN or alias ARN.
4381
+ #
4382
+ # For example:
4383
+ #
4384
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
4385
+ #
4386
+ # * Key ARN:
4387
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
4388
+ #
4389
+ # * Alias name: `alias/ExampleAlias`
4390
+ #
4391
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
4392
+ #
4393
+ # To get the key ID and key ARN for a CMK, use ListKeys or
4394
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
4395
+ # @return [String]
4396
+ #
4397
+ # @!attribute [rw] message
4398
+ # Specifies the message that was signed. You can submit a raw message
4399
+ # of up to 4096 bytes, or a hash digest of the message. If you submit
4400
+ # a digest, use the `MessageType` parameter with a value of `DIGEST`.
4401
+ #
4402
+ # If the message specified here is different from the message that was
4403
+ # signed, the signature verification fails. A message and its hash
4404
+ # digest are considered to be the same message.
4405
+ # @return [String]
4406
+ #
4407
+ # @!attribute [rw] message_type
4408
+ # Tells AWS KMS whether the value of the `Message` parameter is a
4409
+ # message or message digest. The default value, RAW, indicates a
4410
+ # message. To indicate a message digest, enter `DIGEST`.
4411
+ #
4412
+ # Use the `DIGEST` value only when the value of the `Message`
4413
+ # parameter is a message digest. If you use the `DIGEST` value with a
4414
+ # raw message, the security of the verification operation can be
4415
+ # compromised.
4416
+ # @return [String]
4417
+ #
4418
+ # @!attribute [rw] signature
4419
+ # The signature that the `Sign` operation generated.
4420
+ # @return [String]
4421
+ #
4422
+ # @!attribute [rw] signing_algorithm
4423
+ # The signing algorithm that was used to sign the message. If you
4424
+ # submit a different algorithm, the signature verification fails.
4425
+ # @return [String]
4426
+ #
4427
+ # @!attribute [rw] grant_tokens
4428
+ # A list of grant tokens.
4429
+ #
4430
+ # For more information, see [Grant Tokens][1] in the *AWS Key
4431
+ # Management Service Developer Guide*.
4432
+ #
4433
+ #
4434
+ #
4435
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
4436
+ # @return [Array<String>]
4437
+ #
4438
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/VerifyRequest AWS API Documentation
4439
+ #
4440
+ class VerifyRequest < Struct.new(
4441
+ :key_id,
4442
+ :message,
4443
+ :message_type,
4444
+ :signature,
4445
+ :signing_algorithm,
4446
+ :grant_tokens)
4447
+ include Aws::Structure
4448
+ end
4449
+
4450
+ # @!attribute [rw] key_id
4451
+ # The unique identifier for the asymmetric CMK that was used to verify
4452
+ # the signature.
4453
+ # @return [String]
4454
+ #
4455
+ # @!attribute [rw] signature_valid
4456
+ # A Boolean value that indicates whether the signature was verified. A
4457
+ # value of `True` indicates that the `Signature` was produced by
4458
+ # signing the `Message` with the specified `KeyID` and
4459
+ # `SigningAlgorithm.` If the signature is not verified, the `Verify`
4460
+ # operation fails with a `KMSInvalidSignatureException` exception.
4461
+ # @return [Boolean]
4462
+ #
4463
+ # @!attribute [rw] signing_algorithm
4464
+ # The signing algorithm that was used to verify the signature.
4465
+ # @return [String]
4466
+ #
4467
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/VerifyResponse AWS API Documentation
4468
+ #
4469
+ class VerifyResponse < Struct.new(
4470
+ :key_id,
4471
+ :signature_valid,
4472
+ :signing_algorithm)
4473
+ include Aws::Structure
4474
+ end
4475
+
3434
4476
  end
3435
4477
  end