aws-sdk-kms 1.25.0 → 1.26.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/aws-sdk-kms.rb +1 -1
- data/lib/aws-sdk-kms/client.rb +1664 -365
- data/lib/aws-sdk-kms/client_api.rb +186 -0
- data/lib/aws-sdk-kms/errors.rb +16 -0
- data/lib/aws-sdk-kms/types.rb +1068 -112
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d59aaf932f27931fc311148bfc796c86df64701d
|
4
|
+
data.tar.gz: ac1dad7855119f6cddf454fc003e119c2df422dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39eee3a7813574221e57b7a80147d10ee1fdc3ef79cf1d8969b743167de96c63aa934085091f13e62040ec765cdd217815d4be3dc4f31d8aaccc0f9f8e148434
|
7
|
+
data.tar.gz: 872bbe01e8a2ea47976706e4c8e0177b778ef80b85945aca05fbcdd30bf036c345c129d07fa50a28b7000875f957efc4076c84886275bd1adcc12ed268b841c2
|
data/lib/aws-sdk-kms.rb
CHANGED
data/lib/aws-sdk-kms/client.rb
CHANGED
@@ -265,17 +265,17 @@ module Aws::KMS
|
|
265
265
|
# @!group API Operations
|
266
266
|
|
267
267
|
# Cancels the deletion of a customer master key (CMK). When this
|
268
|
-
# operation
|
269
|
-
#
|
270
|
-
#
|
268
|
+
# operation succeeds, the key state of the CMK is `Disabled`. To enable
|
269
|
+
# the CMK, use EnableKey. You cannot perform this operation on a CMK in
|
270
|
+
# a different AWS account.
|
271
271
|
#
|
272
272
|
# For more information about scheduling and canceling deletion of a CMK,
|
273
273
|
# see [Deleting Customer Master Keys][1] in the *AWS Key Management
|
274
274
|
# Service Developer Guide*.
|
275
275
|
#
|
276
|
-
# The
|
277
|
-
# details, see [How Key State Affects Use of a Customer
|
278
|
-
# in the *AWS Key Management Service Developer Guide*.
|
276
|
+
# The CMK that you use for this operation must be in a compatible key
|
277
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
278
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
279
279
|
#
|
280
280
|
#
|
281
281
|
#
|
@@ -405,39 +405,78 @@ module Aws::KMS
|
|
405
405
|
end
|
406
406
|
|
407
407
|
# Creates a display name for a customer managed customer master key
|
408
|
-
# (CMK). You can use an alias to identify a CMK in
|
409
|
-
# such as Encrypt and GenerateDataKey.
|
410
|
-
#
|
411
|
-
#
|
412
|
-
#
|
413
|
-
# simplify
|
414
|
-
#
|
408
|
+
# (CMK). You can use an alias to identify a CMK in cryptographic
|
409
|
+
# operations, such as Encrypt and GenerateDataKey. You can change the
|
410
|
+
# CMK associated with the alias at any time.
|
411
|
+
#
|
412
|
+
# Aliases are easier to remember than key IDs. They can also help to
|
413
|
+
# simplify your applications. For example, if you use an alias in your
|
414
|
+
# code, you can change the CMK your code uses by associating a given
|
415
|
+
# alias with a different CMK.
|
416
|
+
#
|
417
|
+
# To run the same code in multiple AWS regions, use an alias in your
|
418
|
+
# code, such as `alias/ApplicationKey`. Then, in each AWS Region, create
|
419
|
+
# an `alias/ApplicationKey` alias that is associated with a CMK in that
|
420
|
+
# Region. When you run your code, it uses the `alias/ApplicationKey` CMK
|
421
|
+
# for that AWS Region without any Region-specific code.
|
422
|
+
#
|
423
|
+
# This operation does not return a response. To get the alias that you
|
424
|
+
# created, use the ListAliases operation.
|
425
|
+
#
|
426
|
+
# To use aliases successfully, be aware of the following information.
|
427
|
+
#
|
428
|
+
# * Each alias points to only one CMK at a time, although a single CMK
|
429
|
+
# can have multiple aliases. The alias and its associated CMK must be
|
430
|
+
# in the same AWS account and Region.
|
431
|
+
#
|
432
|
+
# * You can associate an alias with any customer managed CMK in the same
|
433
|
+
# AWS account and Region. However, you do not have permission to
|
434
|
+
# associate an alias with an [AWS managed CMK][1] or an [AWS owned
|
435
|
+
# CMK][2].
|
436
|
+
#
|
437
|
+
# * To change the CMK associated with an alias, use the UpdateAlias
|
438
|
+
# operation. The current CMK and the new CMK must be the same type
|
439
|
+
# (both symmetric or both asymmetric) and they must have the same key
|
440
|
+
# usage (`ENCRYPT_DECRYPT` or `SIGN_VERIFY`). This restriction
|
441
|
+
# prevents cryptographic errors in code that uses aliases.
|
442
|
+
#
|
443
|
+
# * The alias name must begin with `alias/` followed by a name, such as
|
444
|
+
# `alias/ExampleAlias`. It can contain only alphanumeric characters,
|
445
|
+
# forward slashes (/), underscores (\_), and dashes (-). The alias
|
446
|
+
# name cannot begin with `alias/aws/`. The `alias/aws/` prefix is
|
447
|
+
# reserved for [AWS managed CMKs][1].
|
448
|
+
#
|
449
|
+
# * The alias name must be unique within an AWS Region. However, you can
|
450
|
+
# use the same alias name in multiple Regions of the same AWS account.
|
451
|
+
# Each instance of the alias is associated with a CMK in its Region.
|
452
|
+
#
|
453
|
+
# * After you create an alias, you cannot change its alias name.
|
454
|
+
# However, you can use the DeleteAlias operation to delete the alias
|
455
|
+
# and then create a new alias with the desired name.
|
456
|
+
#
|
457
|
+
# * You can use an alias name or alias ARN to identify a CMK in AWS KMS
|
458
|
+
# cryptographic operations and in the DescribeKey operation. However,
|
459
|
+
# you cannot use alias names or alias ARNs in API operations that
|
460
|
+
# manage CMKs, such as DisableKey or GetKeyPolicy. For information
|
461
|
+
# about the valid CMK identifiers for each AWS KMS API operation, see
|
462
|
+
# the descriptions of the `KeyId` parameter in the API operation
|
463
|
+
# documentation.
|
415
464
|
#
|
416
465
|
# Because an alias is not a property of a CMK, you can delete and change
|
417
466
|
# the aliases of a CMK without affecting the CMK. Also, aliases do not
|
418
467
|
# appear in the response from the DescribeKey operation. To get the
|
419
|
-
# aliases of
|
420
|
-
#
|
421
|
-
# The alias name must begin with `alias/` followed by a name, such as
|
422
|
-
# `alias/ExampleAlias`. It can contain only alphanumeric characters,
|
423
|
-
# forward slashes (/), underscores (\_), and dashes (-). The alias name
|
424
|
-
# cannot begin with `alias/aws/`. The `alias/aws/` prefix is reserved
|
425
|
-
# for [AWS managed CMKs][1].
|
426
|
-
#
|
427
|
-
# The alias and the CMK it is mapped to must be in the same AWS account
|
428
|
-
# and the same region. You cannot perform this operation on an alias in
|
429
|
-
# a different AWS account.
|
468
|
+
# aliases and alias ARNs of CMKs in each AWS account and Region, use the
|
469
|
+
# ListAliases operation.
|
430
470
|
#
|
431
|
-
#
|
432
|
-
#
|
433
|
-
#
|
434
|
-
# details, see [How Key State Affects Use of a Customer Master Key][2]
|
435
|
-
# in the *AWS Key Management Service Developer Guide*.
|
471
|
+
# The CMK that you use for this operation must be in a compatible key
|
472
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
473
|
+
# Master Key][3] in the *AWS Key Management Service Developer Guide*.
|
436
474
|
#
|
437
475
|
#
|
438
476
|
#
|
439
477
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
|
440
|
-
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/
|
478
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk
|
479
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
441
480
|
#
|
442
481
|
# @option params [required, String] :alias_name
|
443
482
|
# Specifies the alias name. This value must begin with `alias/` followed
|
@@ -581,23 +620,58 @@ module Aws::KMS
|
|
581
620
|
# key policies.
|
582
621
|
#
|
583
622
|
# To create a grant that allows a cryptographic operation only when the
|
584
|
-
#
|
585
|
-
#
|
586
|
-
#
|
623
|
+
# request includes a particular [encryption context][1], use the
|
624
|
+
# `Constraints` parameter. For details, see GrantConstraints.
|
625
|
+
#
|
626
|
+
# You can create grants on symmetric and asymmetric CMKs. However, if
|
627
|
+
# the grant allows an operation that the CMK does not support,
|
628
|
+
# `CreateGrant` fails with a `ValidationException`.
|
629
|
+
#
|
630
|
+
# * Grants for symmetric CMKs cannot allow operations that are not
|
631
|
+
# supported for symmetric CMKs, including Sign, Verify, and
|
632
|
+
# GetPublicKey. (There are limited exceptions to this rule for legacy
|
633
|
+
# operations, but you should not create a grant for an operation that
|
634
|
+
# AWS KMS does not support.)
|
635
|
+
#
|
636
|
+
# * Grants for asymmetric CMKs cannot allow operations that are not
|
637
|
+
# supported for asymmetric CMKs, including operations that [generate
|
638
|
+
# data keys][2] or [data key pairs][3], or operations related to
|
639
|
+
# [automatic key rotation][4], [imported key material][5], or CMKs in
|
640
|
+
# [custom key stores][6].
|
641
|
+
#
|
642
|
+
# * Grants for asymmetric CMKs with a `KeyUsage` of `ENCRYPT_DECRYPT`
|
643
|
+
# cannot allow the Sign or Verify operations. Grants for asymmetric
|
644
|
+
# CMKs with a `KeyUsage` of `SIGN_VERIFY` cannot allow the Encrypt or
|
645
|
+
# Decrypt operations.
|
646
|
+
#
|
647
|
+
# * Grants for asymmetric CMKs cannot include an encryption context
|
648
|
+
# grant constraint. An encryption context is not supported on
|
649
|
+
# asymmetric CMKs.
|
650
|
+
#
|
651
|
+
# For information about symmetric and asymmetric CMKs, see [Using
|
652
|
+
# Symmetric and Asymmetric CMKs][7] in the *AWS Key Management Service
|
653
|
+
# Developer Guide*.
|
587
654
|
#
|
588
655
|
# To perform this operation on a CMK in a different AWS account, specify
|
589
656
|
# the key ARN in the value of the `KeyId` parameter. For more
|
590
|
-
# information about grants, see [Grants][
|
657
|
+
# information about grants, see [Grants][8] in the <i> <i>AWS Key
|
591
658
|
# Management Service Developer Guide</i> </i>.
|
592
659
|
#
|
593
|
-
# The
|
594
|
-
# details, see [How Key State Affects Use of a Customer
|
595
|
-
# in the *AWS Key Management Service Developer Guide*.
|
660
|
+
# The CMK that you use for this operation must be in a compatible key
|
661
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
662
|
+
# Master Key][9] in the *AWS Key Management Service Developer Guide*.
|
596
663
|
#
|
597
664
|
#
|
598
665
|
#
|
599
|
-
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/
|
600
|
-
# [2]: https://docs.aws.amazon.com/kms/latest/
|
666
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
667
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey
|
668
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair
|
669
|
+
# [4]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
|
670
|
+
# [5]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
|
671
|
+
# [6]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
|
672
|
+
# [7]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
|
673
|
+
# [8]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
|
674
|
+
# [9]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
601
675
|
#
|
602
676
|
# @option params [required, String] :key_id
|
603
677
|
# The unique identifier for the customer master key (CMK) that the grant
|
@@ -720,7 +794,7 @@ module Aws::KMS
|
|
720
794
|
# key_id: "KeyIdType", # required
|
721
795
|
# grantee_principal: "PrincipalIdType", # required
|
722
796
|
# retiring_principal: "PrincipalIdType",
|
723
|
-
# operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, CreateGrant, RetireGrant, DescribeKey
|
797
|
+
# operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext
|
724
798
|
# constraints: {
|
725
799
|
# encryption_context_subset: {
|
726
800
|
# "EncryptionContextKey" => "EncryptionContextValue",
|
@@ -747,31 +821,89 @@ module Aws::KMS
|
|
747
821
|
req.send_request(options)
|
748
822
|
end
|
749
823
|
|
750
|
-
# Creates a customer managed [customer master key][1] (CMK) in
|
751
|
-
# account.
|
824
|
+
# Creates a unique customer managed [customer master key][1] (CMK) in
|
825
|
+
# your AWS account and Region. You cannot use this operation to create a
|
826
|
+
# CMK in a different AWS account.
|
752
827
|
#
|
753
|
-
# You can use
|
754
|
-
#
|
755
|
-
#
|
828
|
+
# You can use the `CreateKey` operation to create symmetric or
|
829
|
+
# asymmetric CMKs.
|
830
|
+
#
|
831
|
+
# * **Symmetric CMKs** contain a 256-bit symmetric key that never leaves
|
832
|
+
# AWS KMS unencrypted. To use the CMK, you must call AWS KMS. You can
|
833
|
+
# use a symmetric CMK to encrypt and decrypt small amounts of data,
|
834
|
+
# but they are typically used to generate [data keys][2] or data key
|
835
|
+
# pairs. For details, see GenerateDataKey and GenerateDataKeyPair.
|
836
|
+
#
|
837
|
+
# * **Asymmetric CMKs** can contain an RSA key pair or an Elliptic Curve
|
838
|
+
# (ECC) key pair. The private key in an asymmetric CMK never leaves
|
839
|
+
# AWS KMS unencrypted. However, you can use the GetPublicKey operation
|
840
|
+
# to download the public key so it can be used outside of AWS KMS.
|
841
|
+
# CMKs with RSA key pairs can be used to encrypt or decrypt data or
|
842
|
+
# sign and verify messages (but not both). CMKs with ECC key pairs can
|
843
|
+
# be used only to sign and verify messages.
|
844
|
+
#
|
845
|
+
# For information about symmetric and asymmetric CMKs, see [Using
|
846
|
+
# Symmetric and Asymmetric CMKs][3] in the *AWS Key Management Service
|
847
|
+
# Developer Guide*.
|
756
848
|
#
|
757
|
-
# To create
|
758
|
-
# with a value of `EXTERNAL`.
|
849
|
+
# To create different types of CMKs, use the following guidance:
|
759
850
|
#
|
760
|
-
#
|
761
|
-
# parameter to specify the custom key store. You must also use the
|
762
|
-
# `Origin` parameter with a value of `AWS_CLOUDHSM`. The AWS CloudHSM
|
763
|
-
# cluster that is associated with the custom key store must have at
|
764
|
-
# least two active HSMs in different Availability Zones in the AWS
|
765
|
-
# Region.
|
851
|
+
# Asymmetric CMKs
|
766
852
|
#
|
767
|
-
#
|
768
|
-
#
|
853
|
+
# : To create an asymmetric CMK, use the `CustomerMasterKeySpec`
|
854
|
+
# parameter to specify the type of key material in the CMK. Then, use
|
855
|
+
# the `KeyUsage` parameter to determine whether the CMK will be used
|
856
|
+
# to encrypt and decrypt or sign and verify. You can't change these
|
857
|
+
# properties after the CMK is created.
|
858
|
+
#
|
859
|
+
#
|
860
|
+
#
|
861
|
+
# Symmetric CMKs
|
862
|
+
#
|
863
|
+
# : When creating a symmetric CMK, you don't need to specify the
|
864
|
+
# `CustomerMasterKeySpec` or `KeyUsage` parameters. The default value
|
865
|
+
# for `CustomerMasterKeySpec`, `SYMMETRIC_DEFAULT`, and the default
|
866
|
+
# value for `KeyUsage`, `ENCRYPT_DECRYPT`, are the only valid values
|
867
|
+
# for symmetric CMKs.
|
868
|
+
#
|
869
|
+
#
|
870
|
+
#
|
871
|
+
# Imported Key Material
|
872
|
+
#
|
873
|
+
# : To import your own key material, begin by creating a symmetric CMK
|
874
|
+
# with no key material. To do this, use the `Origin` parameter of
|
875
|
+
# `CreateKey` with a value of `EXTERNAL`. Next, use
|
876
|
+
# GetParametersForImport operation to get a public key and import
|
877
|
+
# token, and use the public key to encrypt your key material. Then,
|
878
|
+
# use ImportKeyMaterial with your import token to import the key
|
879
|
+
# material. For step-by-step instructions, see [Importing Key
|
880
|
+
# Material][4] in the <i> <i>AWS Key Management Service Developer
|
881
|
+
# Guide</i> </i>. You cannot import the key material into an
|
882
|
+
# asymmetric CMK.
|
883
|
+
#
|
884
|
+
#
|
885
|
+
#
|
886
|
+
# Custom Key Stores
|
887
|
+
#
|
888
|
+
# : To create a symmetric CMK in a [custom key store][5], use the
|
889
|
+
# `CustomKeyStoreId` parameter to specify the custom key store. You
|
890
|
+
# must also use the `Origin` parameter with a value of `AWS_CLOUDHSM`.
|
891
|
+
# The AWS CloudHSM cluster that is associated with the custom key
|
892
|
+
# store must have at least two active HSMs in different Availability
|
893
|
+
# Zones in the AWS Region.
|
894
|
+
#
|
895
|
+
# You cannot create an asymmetric CMK in a custom key store. For
|
896
|
+
# information about custom key stores in AWS KMS see [Using Custom Key
|
897
|
+
# Stores][5] in the <i> <i>AWS Key Management Service Developer
|
898
|
+
# Guide</i> </i>.
|
769
899
|
#
|
770
900
|
#
|
771
901
|
#
|
772
|
-
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#
|
902
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master-keys
|
773
903
|
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys
|
774
|
-
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/
|
904
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
|
905
|
+
# [4]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
|
906
|
+
# [5]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
|
775
907
|
#
|
776
908
|
# @option params [String] :policy
|
777
909
|
# The key policy to attach to the CMK.
|
@@ -814,27 +946,87 @@ module Aws::KMS
|
|
814
946
|
# for a task.
|
815
947
|
#
|
816
948
|
# @option params [String] :key_usage
|
817
|
-
#
|
818
|
-
#
|
819
|
-
#
|
949
|
+
# Determines the cryptographic operations for which you can use the CMK.
|
950
|
+
# The default value is `ENCRYPT_DECRYPT`. This parameter is required
|
951
|
+
# only for asymmetric CMKs. You can't change the `KeyUsage` value after
|
952
|
+
# the CMK is created.
|
953
|
+
#
|
954
|
+
# Select only one valid value.
|
955
|
+
#
|
956
|
+
# * For symmetric CMKs, omit the parameter or specify `ENCRYPT_DECRYPT`.
|
957
|
+
#
|
958
|
+
# * For asymmetric CMKs with RSA key material, specify `ENCRYPT_DECRYPT`
|
959
|
+
# or `SIGN_VERIFY`.
|
960
|
+
#
|
961
|
+
# * For asymmetric CMKs with ECC key material, specify `SIGN_VERIFY`.
|
962
|
+
#
|
963
|
+
# @option params [String] :customer_master_key_spec
|
964
|
+
# Specifies the type of CMK to create. The `CustomerMasterKeySpec`
|
965
|
+
# determines whether the CMK contains a symmetric key or an asymmetric
|
966
|
+
# key pair. It also determines the encryption algorithms or signing
|
967
|
+
# algorithms that the CMK supports. You can't change the
|
968
|
+
# `CustomerMasterKeySpec` after the CMK is created. To further restrict
|
969
|
+
# the algorithms that can be used with the CMK, use its key policy or
|
970
|
+
# IAM policy.
|
971
|
+
#
|
972
|
+
# For help with choosing a key spec for your CMK, see [Selecting a
|
973
|
+
# Customer Master Key Spec][1] in the *AWS Key Management Service
|
974
|
+
# Developer Guide*.
|
975
|
+
#
|
976
|
+
# The default value, `SYMMETRIC_DEFAULT`, creates a CMK with a 256-bit
|
977
|
+
# symmetric key.
|
978
|
+
#
|
979
|
+
# AWS KMS supports the following key specs for CMKs:
|
980
|
+
#
|
981
|
+
# * Symmetric key (default)
|
982
|
+
#
|
983
|
+
# * `SYMMETRIC_DEFAULT` (AES-256-GCM)
|
984
|
+
#
|
985
|
+
# ^
|
986
|
+
#
|
987
|
+
# * Asymmetric RSA key pairs
|
988
|
+
#
|
989
|
+
# * `RSA_2048`
|
990
|
+
#
|
991
|
+
# * `RSA_3072`
|
992
|
+
#
|
993
|
+
# * `RSA_4096`
|
994
|
+
#
|
995
|
+
# * Asymmetric NIST-recommended elliptic curve key pairs
|
996
|
+
#
|
997
|
+
# * `ECC_NIST_P256` (secp256r1)
|
998
|
+
#
|
999
|
+
# * `ECC_NIST_P384` (secp384r1)
|
1000
|
+
#
|
1001
|
+
# * `ECC_NIST_P521` (secp521r1)
|
1002
|
+
#
|
1003
|
+
# * Other asymmetric elliptic curve key pairs
|
1004
|
+
#
|
1005
|
+
# * `ECC_SECG_P256K1` (secp256k1), commonly used for cryptocurrencies.
|
1006
|
+
#
|
1007
|
+
# ^
|
1008
|
+
#
|
1009
|
+
#
|
1010
|
+
#
|
1011
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#cmk-key-spec
|
820
1012
|
#
|
821
1013
|
# @option params [String] :origin
|
822
1014
|
# The source of the key material for the CMK. You cannot change the
|
823
|
-
# origin after you create the CMK.
|
824
|
-
#
|
825
|
-
# The default is `AWS_KMS`, which means AWS KMS creates the key material
|
826
|
-
# in its own key store.
|
1015
|
+
# origin after you create the CMK. The default is `AWS_KMS`, which means
|
1016
|
+
# AWS KMS creates the key material.
|
827
1017
|
#
|
828
1018
|
# When the parameter value is `EXTERNAL`, AWS KMS creates a CMK without
|
829
1019
|
# key material so that you can import key material from your existing
|
830
1020
|
# key management infrastructure. For more information about importing
|
831
1021
|
# key material into AWS KMS, see [Importing Key Material][1] in the *AWS
|
832
|
-
# Key Management Service Developer Guide*.
|
1022
|
+
# Key Management Service Developer Guide*. This value is valid only for
|
1023
|
+
# symmetric CMKs.
|
833
1024
|
#
|
834
1025
|
# When the parameter value is `AWS_CLOUDHSM`, AWS KMS creates the CMK in
|
835
1026
|
# an AWS KMS [custom key store][2] and creates its key material in the
|
836
1027
|
# associated AWS CloudHSM cluster. You must also use the
|
837
|
-
# `CustomKeyStoreId` parameter to identify the custom key store.
|
1028
|
+
# `CustomKeyStoreId` parameter to identify the custom key store. This
|
1029
|
+
# value is valid only for symmetric CMKs.
|
838
1030
|
#
|
839
1031
|
#
|
840
1032
|
#
|
@@ -849,6 +1041,9 @@ module Aws::KMS
|
|
849
1041
|
# with the custom key store must have at least two active HSMs, each in
|
850
1042
|
# a different Availability Zone in the Region.
|
851
1043
|
#
|
1044
|
+
# This parameter is valid only for symmetric CMKs. You cannot create an
|
1045
|
+
# asymmetric CMK in a custom key store.
|
1046
|
+
#
|
852
1047
|
# To find the ID of a custom key store, use the DescribeCustomKeyStores
|
853
1048
|
# operation.
|
854
1049
|
#
|
@@ -885,13 +1080,21 @@ module Aws::KMS
|
|
885
1080
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
|
886
1081
|
#
|
887
1082
|
# @option params [Array<Types::Tag>] :tags
|
888
|
-
# One or more tags. Each tag consists of a tag key and a tag value.
|
889
|
-
#
|
890
|
-
# (null)
|
1083
|
+
# One or more tags. Each tag consists of a tag key and a tag value. Both
|
1084
|
+
# the tag key and the tag value are required, but the tag value can be
|
1085
|
+
# an empty (null) string.
|
1086
|
+
#
|
1087
|
+
# When you add tags to an AWS resource, AWS generates a cost allocation
|
1088
|
+
# report with usage and costs aggregated by tags. For information about
|
1089
|
+
# adding, changing, deleting and listing tags for CMKs, see [Tagging
|
1090
|
+
# Keys][1].
|
891
1091
|
#
|
892
|
-
# Use this parameter to tag the CMK when it is created.
|
893
|
-
#
|
894
|
-
#
|
1092
|
+
# Use this parameter to tag the CMK when it is created. To add tags to
|
1093
|
+
# an existing CMK, use the TagResource operation.
|
1094
|
+
#
|
1095
|
+
#
|
1096
|
+
#
|
1097
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html
|
895
1098
|
#
|
896
1099
|
# @return [Types::CreateKeyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
897
1100
|
#
|
@@ -932,7 +1135,8 @@ module Aws::KMS
|
|
932
1135
|
# resp = client.create_key({
|
933
1136
|
# policy: "PolicyType",
|
934
1137
|
# description: "DescriptionType",
|
935
|
-
# key_usage: "
|
1138
|
+
# key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT
|
1139
|
+
# 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
|
936
1140
|
# origin: "AWS_KMS", # accepts AWS_KMS, EXTERNAL, AWS_CLOUDHSM
|
937
1141
|
# custom_key_store_id: "CustomKeyStoreIdType",
|
938
1142
|
# bypass_policy_lockout_safety_check: false,
|
@@ -952,7 +1156,7 @@ module Aws::KMS
|
|
952
1156
|
# resp.key_metadata.creation_date #=> Time
|
953
1157
|
# resp.key_metadata.enabled #=> Boolean
|
954
1158
|
# resp.key_metadata.description #=> String
|
955
|
-
# resp.key_metadata.key_usage #=> String, one of "ENCRYPT_DECRYPT"
|
1159
|
+
# resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT"
|
956
1160
|
# resp.key_metadata.key_state #=> String, one of "Enabled", "Disabled", "PendingDeletion", "PendingImport", "Unavailable"
|
957
1161
|
# resp.key_metadata.deletion_date #=> Time
|
958
1162
|
# resp.key_metadata.valid_to #=> Time
|
@@ -961,6 +1165,11 @@ module Aws::KMS
|
|
961
1165
|
# resp.key_metadata.cloud_hsm_cluster_id #=> String
|
962
1166
|
# resp.key_metadata.expiration_model #=> String, one of "KEY_MATERIAL_EXPIRES", "KEY_MATERIAL_DOES_NOT_EXPIRE"
|
963
1167
|
# resp.key_metadata.key_manager #=> String, one of "AWS", "CUSTOMER"
|
1168
|
+
# resp.key_metadata.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
|
1169
|
+
# resp.key_metadata.encryption_algorithms #=> Array
|
1170
|
+
# resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
|
1171
|
+
# resp.key_metadata.signing_algorithms #=> Array
|
1172
|
+
# resp.key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512"
|
964
1173
|
#
|
965
1174
|
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKey AWS API Documentation
|
966
1175
|
#
|
@@ -971,39 +1180,79 @@ module Aws::KMS
|
|
971
1180
|
req.send_request(options)
|
972
1181
|
end
|
973
1182
|
|
974
|
-
# Decrypts ciphertext
|
975
|
-
#
|
1183
|
+
# Decrypts ciphertext that was encrypted by a AWS KMS customer master
|
1184
|
+
# key (CMK) using any of the following operations:
|
1185
|
+
#
|
1186
|
+
# * Encrypt
|
976
1187
|
#
|
977
1188
|
# * GenerateDataKey
|
978
1189
|
#
|
1190
|
+
# * GenerateDataKeyPair
|
1191
|
+
#
|
979
1192
|
# * GenerateDataKeyWithoutPlaintext
|
980
1193
|
#
|
981
|
-
# *
|
1194
|
+
# * GenerateDataKeyPairWithoutPlaintext
|
1195
|
+
#
|
1196
|
+
# You can use this operation to decrypt ciphertext that was encrypted
|
1197
|
+
# under a symmetric or asymmetric CMK. When the CMK is asymmetric, you
|
1198
|
+
# must specify the CMK and the encryption algorithm that was used to
|
1199
|
+
# encrypt the ciphertext. For information about symmetric and asymmetric
|
1200
|
+
# CMKs, see [Using Symmetric and Asymmetric CMKs][1] in the *AWS Key
|
1201
|
+
# Management Service Developer Guide*.
|
1202
|
+
#
|
1203
|
+
# The Decrypt operation also decrypts ciphertext that was encrypted
|
1204
|
+
# outside of AWS KMS by the public key in an AWS KMS asymmetric CMK.
|
1205
|
+
# However, it cannot decrypt ciphertext produced by other libraries,
|
1206
|
+
# such as the [AWS Encryption SDK][2] or [Amazon S3 client-side
|
1207
|
+
# encryption][3]. These libraries return a ciphertext format that is
|
1208
|
+
# incompatible with AWS KMS.
|
1209
|
+
#
|
1210
|
+
# If the ciphertext was encrypted under a symmetric CMK, you do not need
|
1211
|
+
# to specify the CMK or the encryption algorithm. AWS KMS can get this
|
1212
|
+
# information from metadata that it adds to the symmetric ciphertext
|
1213
|
+
# blob. However, if you prefer, you can specify the `KeyId` to ensure
|
1214
|
+
# that a particular CMK is used to decrypt the ciphertext. If you
|
1215
|
+
# specify a different CMK than the one used to encrypt the ciphertext,
|
1216
|
+
# the `Decrypt` operation fails.
|
982
1217
|
#
|
983
1218
|
# Whenever possible, use key policies to give users permission to call
|
984
|
-
# the Decrypt operation on
|
985
|
-
# you might create an IAM user policy that gives
|
986
|
-
# permission on all CMKs. This user could decrypt
|
987
|
-
# encrypted by CMKs in other accounts if the key
|
988
|
-
# cross-account CMK permits it. If you must use an IAM
|
989
|
-
# `Decrypt` permissions, limit the user to particular CMKs or
|
990
|
-
# trusted accounts.
|
991
|
-
#
|
992
|
-
# The result of this operation varies with the key state of the CMK. For
|
993
|
-
# details, see [How Key State Affects Use of a Customer Master Key][1]
|
994
|
-
# in the *AWS Key Management Service Developer Guide*.
|
1219
|
+
# the Decrypt operation on a particular CMK, instead of using IAM
|
1220
|
+
# policies. Otherwise, you might create an IAM user policy that gives
|
1221
|
+
# the user Decrypt permission on all CMKs. This user could decrypt
|
1222
|
+
# ciphertext that was encrypted by CMKs in other accounts if the key
|
1223
|
+
# policy for the cross-account CMK permits it. If you must use an IAM
|
1224
|
+
# policy for `Decrypt` permissions, limit the user to particular CMKs or
|
1225
|
+
# particular trusted accounts.
|
995
1226
|
#
|
1227
|
+
# The CMK that you use for this operation must be in a compatible key
|
1228
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
1229
|
+
# Master Key][4] in the *AWS Key Management Service Developer Guide*.
|
996
1230
|
#
|
997
1231
|
#
|
998
|
-
#
|
1232
|
+
#
|
1233
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
|
1234
|
+
# [2]: https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/
|
1235
|
+
# [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
|
1236
|
+
# [4]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
999
1237
|
#
|
1000
1238
|
# @option params [required, String, IO] :ciphertext_blob
|
1001
1239
|
# Ciphertext to be decrypted. The blob includes metadata.
|
1002
1240
|
#
|
1003
1241
|
# @option params [Hash<String,String>] :encryption_context
|
1004
|
-
#
|
1005
|
-
#
|
1006
|
-
#
|
1242
|
+
# Specifies the encryption context to use when decrypting the data. An
|
1243
|
+
# encryption context is valid only for cryptographic operations with a
|
1244
|
+
# symmetric CMK. The standard asymmetric encryption algorithms that AWS
|
1245
|
+
# KMS uses do not support an encryption context.
|
1246
|
+
#
|
1247
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
1248
|
+
# that represents additional authenticated data. When you use an
|
1249
|
+
# encryption context to encrypt data, you must specify the same (an
|
1250
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
1251
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
1252
|
+
# but it is highly recommended.
|
1253
|
+
#
|
1254
|
+
# For more information, see [Encryption Context][1] in the *AWS Key
|
1255
|
+
# Management Service Developer Guide*.
|
1007
1256
|
#
|
1008
1257
|
#
|
1009
1258
|
#
|
@@ -1019,10 +1268,54 @@ module Aws::KMS
|
|
1019
1268
|
#
|
1020
1269
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
1021
1270
|
#
|
1271
|
+
# @option params [String] :key_id
|
1272
|
+
# Specifies the customer master key (CMK) that AWS KMS will use to
|
1273
|
+
# decrypt the ciphertext. Enter a key ID of the CMK that was used to
|
1274
|
+
# encrypt the ciphertext.
|
1275
|
+
#
|
1276
|
+
# If you specify a `KeyId` value, the `Decrypt` operation succeeds only
|
1277
|
+
# if the specified CMK was used to encrypt the ciphertext.
|
1278
|
+
#
|
1279
|
+
# This parameter is required only when the ciphertext was encrypted
|
1280
|
+
# under an asymmetric CMK. Otherwise, AWS KMS uses the metadata that it
|
1281
|
+
# adds to the ciphertext blob to determine which CMK was used to encrypt
|
1282
|
+
# the ciphertext. However, you can use this parameter to ensure that a
|
1283
|
+
# particular CMK (of any kind) is used to decrypt the ciphertext.
|
1284
|
+
#
|
1285
|
+
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
1286
|
+
# name, or alias ARN. When using an alias name, prefix it with
|
1287
|
+
# `"alias/"`.
|
1288
|
+
#
|
1289
|
+
# For example:
|
1290
|
+
#
|
1291
|
+
# * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
|
1292
|
+
#
|
1293
|
+
# * Key ARN:
|
1294
|
+
# `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
1295
|
+
#
|
1296
|
+
# * Alias name: `alias/ExampleAlias`
|
1297
|
+
#
|
1298
|
+
# * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
|
1299
|
+
#
|
1300
|
+
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
1301
|
+
# To get the alias name and alias ARN, use ListAliases.
|
1302
|
+
#
|
1303
|
+
# @option params [String] :encryption_algorithm
|
1304
|
+
# Specifies the encryption algorithm that will be used to decrypt the
|
1305
|
+
# ciphertext. Specify the same algorithm that was used to encrypt the
|
1306
|
+
# data. If you specify a different algorithm, the `Decrypt` operation
|
1307
|
+
# fails.
|
1308
|
+
#
|
1309
|
+
# This parameter is required only when the ciphertext was encrypted
|
1310
|
+
# under an asymmetric CMK. The default value, `SYMMETRIC_DEFAULT`,
|
1311
|
+
# represents the only supported algorithm that is valid for symmetric
|
1312
|
+
# CMKs.
|
1313
|
+
#
|
1022
1314
|
# @return [Types::DecryptResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
1023
1315
|
#
|
1024
1316
|
# * {Types::DecryptResponse#key_id #key_id} => String
|
1025
1317
|
# * {Types::DecryptResponse#plaintext #plaintext} => String
|
1318
|
+
# * {Types::DecryptResponse#encryption_algorithm #encryption_algorithm} => String
|
1026
1319
|
#
|
1027
1320
|
#
|
1028
1321
|
# @example Example: To decrypt data
|
@@ -1047,12 +1340,15 @@ module Aws::KMS
|
|
1047
1340
|
# "EncryptionContextKey" => "EncryptionContextValue",
|
1048
1341
|
# },
|
1049
1342
|
# grant_tokens: ["GrantTokenType"],
|
1343
|
+
# key_id: "KeyIdType",
|
1344
|
+
# encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
|
1050
1345
|
# })
|
1051
1346
|
#
|
1052
1347
|
# @example Response structure
|
1053
1348
|
#
|
1054
1349
|
# resp.key_id #=> String
|
1055
1350
|
# resp.plaintext #=> String
|
1351
|
+
# resp.encryption_algorithm #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
|
1056
1352
|
#
|
1057
1353
|
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Decrypt AWS API Documentation
|
1058
1354
|
#
|
@@ -1178,9 +1474,9 @@ module Aws::KMS
|
|
1178
1474
|
# After you delete key material, you can use ImportKeyMaterial to
|
1179
1475
|
# reimport the same key material into the CMK.
|
1180
1476
|
#
|
1181
|
-
# The
|
1182
|
-
# details, see [How Key State Affects Use of a Customer
|
1183
|
-
# in the *AWS Key Management Service Developer Guide*.
|
1477
|
+
# The CMK that you use for this operation must be in a compatible key
|
1478
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
1479
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
1184
1480
|
#
|
1185
1481
|
#
|
1186
1482
|
#
|
@@ -1328,20 +1624,50 @@ module Aws::KMS
|
|
1328
1624
|
req.send_request(options)
|
1329
1625
|
end
|
1330
1626
|
|
1331
|
-
# Provides detailed information about
|
1332
|
-
#
|
1627
|
+
# Provides detailed information about a customer master key (CMK). You
|
1628
|
+
# can run `DescribeKey` on a [customer managed CMK][1] or an [AWS
|
1629
|
+
# managed CMK][2].
|
1630
|
+
#
|
1631
|
+
# This detailed information includes the key ARN, creation date (and
|
1632
|
+
# deletion date, if applicable), the key state, and the origin and
|
1633
|
+
# expiration date (if any) of the key material. For CMKs in custom key
|
1634
|
+
# stores, it includes information about the custom key store, such as
|
1635
|
+
# the key store ID and the AWS CloudHSM cluster ID. It includes fields,
|
1636
|
+
# like `KeySpec`, that help you distinguish symmetric from asymmetric
|
1637
|
+
# CMKs. It also provides information that is particularly important to
|
1638
|
+
# asymmetric CMKs, such as the key usage (encryption or signing) and the
|
1639
|
+
# encryption algorithms or signing algorithms that the CMK supports.
|
1640
|
+
#
|
1641
|
+
# `DescribeKey` does not return the following information:
|
1642
|
+
#
|
1643
|
+
# * Aliases associated with the CMK. To get this information, use
|
1644
|
+
# ListAliases.
|
1645
|
+
#
|
1646
|
+
# * Whether automatic key rotation is enabled on the CMK. To get this
|
1647
|
+
# information, use GetKeyRotationStatus. Also, some key states prevent
|
1648
|
+
# a CMK from being automatically rotated. For details, see [How
|
1649
|
+
# Automatic Key Rotation Works][3] in *AWS Key Management Service
|
1650
|
+
# Developer Guide*.
|
1651
|
+
#
|
1652
|
+
# * Tags on the CMK. To get this information, use ListResourceTags.
|
1333
1653
|
#
|
1334
|
-
#
|
1335
|
-
#
|
1336
|
-
#
|
1337
|
-
#
|
1654
|
+
# * Key policies and grants on the CMK. To get this information, use
|
1655
|
+
# GetKeyPolicy and ListGrants.
|
1656
|
+
#
|
1657
|
+
# If you call the `DescribeKey` operation on a *predefined AWS alias*,
|
1658
|
+
# that is, an AWS alias with no key ID, AWS KMS creates an [AWS managed
|
1659
|
+
# CMK][4]. Then, it associates the alias with the new CMK, and returns
|
1660
|
+
# the `KeyId` and `Arn` of the new CMK in the response.
|
1338
1661
|
#
|
1339
1662
|
# To perform this operation on a CMK in a different AWS account, specify
|
1340
1663
|
# the key ARN or alias ARN in the value of the KeyId parameter.
|
1341
1664
|
#
|
1342
1665
|
#
|
1343
1666
|
#
|
1344
|
-
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#
|
1667
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
|
1668
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
|
1669
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-how-it-works
|
1670
|
+
# [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys
|
1345
1671
|
#
|
1346
1672
|
# @option params [required, String] :key_id
|
1347
1673
|
# Describes the specified customer master key (CMK).
|
@@ -1427,7 +1753,7 @@ module Aws::KMS
|
|
1427
1753
|
# resp.key_metadata.creation_date #=> Time
|
1428
1754
|
# resp.key_metadata.enabled #=> Boolean
|
1429
1755
|
# resp.key_metadata.description #=> String
|
1430
|
-
# resp.key_metadata.key_usage #=> String, one of "ENCRYPT_DECRYPT"
|
1756
|
+
# resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT"
|
1431
1757
|
# resp.key_metadata.key_state #=> String, one of "Enabled", "Disabled", "PendingDeletion", "PendingImport", "Unavailable"
|
1432
1758
|
# resp.key_metadata.deletion_date #=> Time
|
1433
1759
|
# resp.key_metadata.valid_to #=> Time
|
@@ -1436,6 +1762,11 @@ module Aws::KMS
|
|
1436
1762
|
# resp.key_metadata.cloud_hsm_cluster_id #=> String
|
1437
1763
|
# resp.key_metadata.expiration_model #=> String, one of "KEY_MATERIAL_EXPIRES", "KEY_MATERIAL_DOES_NOT_EXPIRE"
|
1438
1764
|
# resp.key_metadata.key_manager #=> String, one of "AWS", "CUSTOMER"
|
1765
|
+
# resp.key_metadata.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
|
1766
|
+
# resp.key_metadata.encryption_algorithms #=> Array
|
1767
|
+
# resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
|
1768
|
+
# resp.key_metadata.signing_algorithms #=> Array
|
1769
|
+
# resp.key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512"
|
1439
1770
|
#
|
1440
1771
|
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKey AWS API Documentation
|
1441
1772
|
#
|
@@ -1454,9 +1785,9 @@ module Aws::KMS
|
|
1454
1785
|
# [How Key State Affects the Use of a Customer Master Key][1] in the <i>
|
1455
1786
|
# <i>AWS Key Management Service Developer Guide</i> </i>.
|
1456
1787
|
#
|
1457
|
-
# The
|
1458
|
-
# details, see [How Key State Affects Use of a Customer
|
1459
|
-
# in the *AWS Key Management Service Developer Guide*.
|
1788
|
+
# The CMK that you use for this operation must be in a compatible key
|
1789
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
1790
|
+
# Master Key][1] in the *AWS Key Management Service Developer Guide*.
|
1460
1791
|
#
|
1461
1792
|
#
|
1462
1793
|
#
|
@@ -1503,20 +1834,26 @@ module Aws::KMS
|
|
1503
1834
|
end
|
1504
1835
|
|
1505
1836
|
# Disables [automatic rotation of the key material][1] for the specified
|
1506
|
-
# customer master key (CMK).
|
1507
|
-
# in a different AWS account.
|
1837
|
+
# symmetric customer master key (CMK).
|
1508
1838
|
#
|
1509
|
-
#
|
1510
|
-
#
|
1511
|
-
#
|
1839
|
+
# You cannot enable automatic rotation of asymmetric CMKs, CMKs with
|
1840
|
+
# imported key material, or CMKs in a [custom key store][2]. You cannot
|
1841
|
+
# perform this operation on a CMK in a different AWS account.
|
1842
|
+
#
|
1843
|
+
# The CMK that you use for this operation must be in a compatible key
|
1844
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
1845
|
+
# Master Key][3] in the *AWS Key Management Service Developer Guide*.
|
1512
1846
|
#
|
1513
1847
|
#
|
1514
1848
|
#
|
1515
1849
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
|
1516
|
-
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-
|
1850
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
|
1851
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
1517
1852
|
#
|
1518
1853
|
# @option params [required, String] :key_id
|
1519
|
-
#
|
1854
|
+
# Identifies a symmetric customer master key (CMK). You cannot enable
|
1855
|
+
# automatic rotation of [asymmetric CMKs][1], CMKs with [imported key
|
1856
|
+
# material][2], or CMKs in a [custom key store][3].
|
1520
1857
|
#
|
1521
1858
|
# Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
|
1522
1859
|
#
|
@@ -1529,6 +1866,12 @@ module Aws::KMS
|
|
1529
1866
|
#
|
1530
1867
|
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
1531
1868
|
#
|
1869
|
+
#
|
1870
|
+
#
|
1871
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks
|
1872
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
|
1873
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
|
1874
|
+
#
|
1532
1875
|
# @return [Struct] Returns an empty {Seahorse::Client::Response response}.
|
1533
1876
|
#
|
1534
1877
|
#
|
@@ -1611,9 +1954,9 @@ module Aws::KMS
|
|
1611
1954
|
# allows you to use the CMK for cryptographic operations. You cannot
|
1612
1955
|
# perform this operation on a CMK in a different AWS account.
|
1613
1956
|
#
|
1614
|
-
# The
|
1615
|
-
# details, see [How Key State Affects Use of a Customer
|
1616
|
-
# in the *AWS Key Management Service Developer Guide*.
|
1957
|
+
# The CMK that you use for this operation must be in a compatible key
|
1958
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
1959
|
+
# Master Key][1] in the *AWS Key Management Service Developer Guide*.
|
1617
1960
|
#
|
1618
1961
|
#
|
1619
1962
|
#
|
@@ -1660,15 +2003,15 @@ module Aws::KMS
|
|
1660
2003
|
end
|
1661
2004
|
|
1662
2005
|
# Enables [automatic rotation of the key material][1] for the specified
|
1663
|
-
# customer master key (CMK). You cannot perform this operation
|
1664
|
-
# in a different AWS account.
|
2006
|
+
# symmetric customer master key (CMK). You cannot perform this operation
|
2007
|
+
# on a CMK in a different AWS account.
|
1665
2008
|
#
|
1666
|
-
# You cannot enable automatic rotation of CMKs with
|
1667
|
-
# material or CMKs in a [custom key store][2].
|
2009
|
+
# You cannot enable automatic rotation of asymmetric CMKs, CMKs with
|
2010
|
+
# imported key material, or CMKs in a [custom key store][2].
|
1668
2011
|
#
|
1669
|
-
# The
|
1670
|
-
# details, see [How Key State Affects Use of a Customer
|
1671
|
-
# in the *AWS Key Management Service Developer Guide*.
|
2012
|
+
# The CMK that you use for this operation must be in a compatible key
|
2013
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
2014
|
+
# Master Key][3] in the *AWS Key Management Service Developer Guide*.
|
1672
2015
|
#
|
1673
2016
|
#
|
1674
2017
|
#
|
@@ -1677,7 +2020,9 @@ module Aws::KMS
|
|
1677
2020
|
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
1678
2021
|
#
|
1679
2022
|
# @option params [required, String] :key_id
|
1680
|
-
#
|
2023
|
+
# Identifies a symmetric customer master key (CMK). You cannot enable
|
2024
|
+
# automatic rotation of asymmetric CMKs, CMKs with imported key
|
2025
|
+
# material, or CMKs in a [custom key store][1].
|
1681
2026
|
#
|
1682
2027
|
# Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
|
1683
2028
|
#
|
@@ -1690,6 +2035,10 @@ module Aws::KMS
|
|
1690
2035
|
#
|
1691
2036
|
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
1692
2037
|
#
|
2038
|
+
#
|
2039
|
+
#
|
2040
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
|
2041
|
+
#
|
1693
2042
|
# @return [Struct] Returns an empty {Seahorse::Client::Response response}.
|
1694
2043
|
#
|
1695
2044
|
#
|
@@ -1719,9 +2068,8 @@ module Aws::KMS
|
|
1719
2068
|
# Encrypts plaintext into ciphertext by using a customer master key
|
1720
2069
|
# (CMK). The `Encrypt` operation has two primary use cases:
|
1721
2070
|
#
|
1722
|
-
# * You can encrypt
|
1723
|
-
#
|
1724
|
-
# information.
|
2071
|
+
# * You can encrypt small amounts of arbitrary data, such as a personal
|
2072
|
+
# identifier or database password, or other sensitive information.
|
1725
2073
|
#
|
1726
2074
|
# * You can use the `Encrypt` operation to move encrypted data from one
|
1727
2075
|
# AWS region to another. In the first region, generate a data key and
|
@@ -1730,24 +2078,76 @@ module Aws::KMS
|
|
1730
2078
|
# safely move the encrypted data and encrypted data key to the new
|
1731
2079
|
# region, and decrypt in the new region when necessary.
|
1732
2080
|
#
|
1733
|
-
# You don't need use
|
1734
|
-
#
|
1735
|
-
#
|
2081
|
+
# You don't need to use the `Encrypt` operation to encrypt a data key.
|
2082
|
+
# The GenerateDataKey and GenerateDataKeyPair operations return a
|
2083
|
+
# plaintext data key and an encrypted copy of that data key.
|
1736
2084
|
#
|
1737
|
-
#
|
1738
|
-
#
|
1739
|
-
# the `
|
2085
|
+
# When you encrypt data, you must specify a symmetric or asymmetric CMK
|
2086
|
+
# to use in the encryption operation. The CMK must have a `KeyUsage`
|
2087
|
+
# value of `ENCRYPT_DECRYPT.` To find the `KeyUsage` of a CMK, use the
|
2088
|
+
# DescribeKey operation.
|
1740
2089
|
#
|
1741
|
-
#
|
1742
|
-
#
|
1743
|
-
#
|
2090
|
+
# If you use a symmetric CMK, you can use an encryption context to add
|
2091
|
+
# additional security to your encryption operation. If you specify an
|
2092
|
+
# `EncryptionContext` when encrypting data, you must specify the same
|
2093
|
+
# encryption context (a case-sensitive exact match) when decrypting the
|
2094
|
+
# data. Otherwise, the request to decrypt fails with an
|
2095
|
+
# `InvalidCiphertextException`. For more information, see [Encryption
|
2096
|
+
# Context][1] in the *AWS Key Management Service Developer Guide*.
|
2097
|
+
#
|
2098
|
+
# If you specify an asymmetric CMK, you must also specify the encryption
|
2099
|
+
# algorithm. The algorithm must be compatible with the CMK type.
|
2100
|
+
#
|
2101
|
+
# When you use an asymmetric CMK to encrypt or reencrypt data, be sure
|
2102
|
+
# to record the CMK and encryption algorithm that you choose. You will
|
2103
|
+
# be required to provide the same CMK and encryption algorithm when you
|
2104
|
+
# decrypt the data. If the CMK and algorithm do not match the values
|
2105
|
+
# used to encrypt the data, the decrypt operation fails.
|
2106
|
+
#
|
2107
|
+
# You are not required to supply the CMK ID and encryption algorithm
|
2108
|
+
# when you decrypt with symmetric CMKs because AWS KMS stores this
|
2109
|
+
# information in the ciphertext blob. AWS KMS cannot store metadata in
|
2110
|
+
# ciphertext generated with asymmetric keys. The standard format for
|
2111
|
+
# asymmetric key ciphertext does not include configurable fields.
|
2112
|
+
#
|
2113
|
+
# The maximum size of the data that you can encrypt varies with the type
|
2114
|
+
# of CMK and the encryption algorithm that you choose.
|
2115
|
+
#
|
2116
|
+
# * Symmetric CMKs
|
2117
|
+
#
|
2118
|
+
# * `SYMMETRIC_DEFAULT`\: 4096 bytes
|
2119
|
+
#
|
2120
|
+
# ^
|
2121
|
+
#
|
2122
|
+
# * `RSA_2048`
|
2123
|
+
#
|
2124
|
+
# * `RSAES_OAEP_SHA_1`\: 214 bytes
|
2125
|
+
#
|
2126
|
+
# * `RSAES_OAEP_SHA_256`\: 190 bytes
|
2127
|
+
#
|
2128
|
+
# * `RSA_3072`
|
2129
|
+
#
|
2130
|
+
# * `RSAES_OAEP_SHA_1`\: 342 bytes
|
2131
|
+
#
|
2132
|
+
# * `RSAES_OAEP_SHA_256`\: 318 bytes
|
2133
|
+
#
|
2134
|
+
# * `RSA_4096`
|
2135
|
+
#
|
2136
|
+
# * `RSAES_OAEP_SHA_1`\: 470 bytes
|
2137
|
+
#
|
2138
|
+
# * `RSAES_OAEP_SHA_256`\: 446 bytes
|
2139
|
+
#
|
2140
|
+
# The CMK that you use for this operation must be in a compatible key
|
2141
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
2142
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
1744
2143
|
#
|
1745
2144
|
# To perform this operation on a CMK in a different AWS account, specify
|
1746
2145
|
# the key ARN or alias ARN in the value of the KeyId parameter.
|
1747
2146
|
#
|
1748
2147
|
#
|
1749
2148
|
#
|
1750
|
-
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/
|
2149
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2150
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
1751
2151
|
#
|
1752
2152
|
# @option params [required, String] :key_id
|
1753
2153
|
# A unique identifier for the customer master key (CMK).
|
@@ -1775,10 +2175,20 @@ module Aws::KMS
|
|
1775
2175
|
# Data to be encrypted.
|
1776
2176
|
#
|
1777
2177
|
# @option params [Hash<String,String>] :encryption_context
|
1778
|
-
#
|
1779
|
-
#
|
1780
|
-
#
|
1781
|
-
#
|
2178
|
+
# Specifies the encryption context that will be used to encrypt the
|
2179
|
+
# data. An encryption context is valid only for cryptographic operations
|
2180
|
+
# with a symmetric CMK. The standard asymmetric encryption algorithms
|
2181
|
+
# that AWS KMS uses do not support an encryption context.
|
2182
|
+
#
|
2183
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
2184
|
+
# that represents additional authenticated data. When you use an
|
2185
|
+
# encryption context to encrypt data, you must specify the same (an
|
2186
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
2187
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
2188
|
+
# but it is highly recommended.
|
2189
|
+
#
|
2190
|
+
# For more information, see [Encryption Context][1] in the *AWS Key
|
2191
|
+
# Management Service Developer Guide*.
|
1782
2192
|
#
|
1783
2193
|
#
|
1784
2194
|
#
|
@@ -1794,10 +2204,21 @@ module Aws::KMS
|
|
1794
2204
|
#
|
1795
2205
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
1796
2206
|
#
|
2207
|
+
# @option params [String] :encryption_algorithm
|
2208
|
+
# Specifies the encryption algorithm that AWS KMS will use to encrypt
|
2209
|
+
# the plaintext message. The algorithm must be compatible with the CMK
|
2210
|
+
# that you specify.
|
2211
|
+
#
|
2212
|
+
# This parameter is required only for asymmetric CMKs. The default
|
2213
|
+
# value, `SYMMETRIC_DEFAULT`, is the algorithm used for symmetric CMKs.
|
2214
|
+
# If you are using an asymmetric CMK, we recommend
|
2215
|
+
# RSAES\_OAEP\_SHA\_256.
|
2216
|
+
#
|
1797
2217
|
# @return [Types::EncryptResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
1798
2218
|
#
|
1799
2219
|
# * {Types::EncryptResponse#ciphertext_blob #ciphertext_blob} => String
|
1800
2220
|
# * {Types::EncryptResponse#key_id #key_id} => String
|
2221
|
+
# * {Types::EncryptResponse#encryption_algorithm #encryption_algorithm} => String
|
1801
2222
|
#
|
1802
2223
|
#
|
1803
2224
|
# @example Example: To encrypt data
|
@@ -1824,12 +2245,14 @@ module Aws::KMS
|
|
1824
2245
|
# "EncryptionContextKey" => "EncryptionContextValue",
|
1825
2246
|
# },
|
1826
2247
|
# grant_tokens: ["GrantTokenType"],
|
2248
|
+
# encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
|
1827
2249
|
# })
|
1828
2250
|
#
|
1829
2251
|
# @example Response structure
|
1830
2252
|
#
|
1831
2253
|
# resp.ciphertext_blob #=> String
|
1832
2254
|
# resp.key_id #=> String
|
2255
|
+
# resp.encryption_algorithm #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
|
1833
2256
|
#
|
1834
2257
|
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Encrypt AWS API Documentation
|
1835
2258
|
#
|
@@ -1840,27 +2263,45 @@ module Aws::KMS
|
|
1840
2263
|
req.send_request(options)
|
1841
2264
|
end
|
1842
2265
|
|
1843
|
-
# Generates a unique data key. This operation returns a
|
1844
|
-
# of the data key and a copy that is encrypted under a
|
1845
|
-
# key (CMK) that you specify. You can use the plaintext
|
1846
|
-
# your data outside of KMS and store the encrypted
|
1847
|
-
# encrypted data.
|
2266
|
+
# Generates a unique symmetric data key. This operation returns a
|
2267
|
+
# plaintext copy of the data key and a copy that is encrypted under a
|
2268
|
+
# customer master key (CMK) that you specify. You can use the plaintext
|
2269
|
+
# key to encrypt your data outside of AWS KMS and store the encrypted
|
2270
|
+
# data key with the encrypted data.
|
1848
2271
|
#
|
1849
2272
|
# `GenerateDataKey` returns a unique data key for each request. The
|
1850
2273
|
# bytes in the key are not related to the caller or CMK that is used to
|
1851
2274
|
# encrypt the data key.
|
1852
2275
|
#
|
1853
|
-
# To generate a data key,
|
1854
|
-
#
|
1855
|
-
#
|
1856
|
-
#
|
1857
|
-
#
|
1858
|
-
#
|
1859
|
-
#
|
2276
|
+
# To generate a data key, specify the symmetric CMK that will be used to
|
2277
|
+
# encrypt the data key. You cannot use an asymmetric CMK to generate
|
2278
|
+
# data keys.
|
2279
|
+
#
|
2280
|
+
# You must also specify the length of the data key. Use either the
|
2281
|
+
# `KeySpec` or `NumberOfBytes` parameters (but not both). For 128-bit
|
2282
|
+
# and 256-bit data keys, use the `KeySpec` parameter.
|
2283
|
+
#
|
2284
|
+
# If the operation succeeds, the plaintext copy of the data key is in
|
2285
|
+
# the `Plaintext` field of the response, and the encrypted copy of the
|
2286
|
+
# data key in the `CiphertextBlob` field.
|
2287
|
+
#
|
2288
|
+
# To get only an encrypted copy of the data key, use
|
2289
|
+
# GenerateDataKeyWithoutPlaintext. To generate an asymmetric data key
|
2290
|
+
# pair, use the GenerateDataKeyPair or
|
2291
|
+
# GenerateDataKeyPairWithoutPlaintext operation. To get a
|
2292
|
+
# cryptographically secure random byte string, use GenerateRandom.
|
2293
|
+
#
|
2294
|
+
# You can use the optional encryption context to add additional security
|
2295
|
+
# to the encryption operation. If you specify an `EncryptionContext`,
|
2296
|
+
# you must specify the same encryption context (a case-sensitive exact
|
2297
|
+
# match) when decrypting the encrypted data key. Otherwise, the request
|
2298
|
+
# to decrypt fails with an InvalidCiphertextException. For more
|
2299
|
+
# information, see [Encryption Context][1] in the *AWS Key Management
|
2300
|
+
# Service Developer Guide*.
|
1860
2301
|
#
|
1861
|
-
#
|
1862
|
-
#
|
1863
|
-
#
|
2302
|
+
# The CMK that you use for this operation must be in a compatible key
|
2303
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
2304
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
1864
2305
|
#
|
1865
2306
|
# We recommend that you use the following pattern to encrypt data
|
1866
2307
|
# locally in your application:
|
@@ -1882,30 +2323,13 @@ module Aws::KMS
|
|
1882
2323
|
# 2. Use the plaintext data key to decrypt data locally, then erase the
|
1883
2324
|
# plaintext data key from memory.
|
1884
2325
|
#
|
1885
|
-
# To get only an encrypted copy of the data key, use
|
1886
|
-
# GenerateDataKeyWithoutPlaintext. To get a cryptographically secure
|
1887
|
-
# random byte string, use GenerateRandom.
|
1888
|
-
#
|
1889
|
-
# You can use the optional encryption context to add additional security
|
1890
|
-
# to your encryption operation. When you specify an `EncryptionContext`
|
1891
|
-
# in the `GenerateDataKey` operation, you must specify the same
|
1892
|
-
# encryption context (a case-sensitive exact match) in your request to
|
1893
|
-
# Decrypt the data key. Otherwise, the request to decrypt fails with an
|
1894
|
-
# `InvalidCiphertextException`. For more information, see [Encryption
|
1895
|
-
# Context][1] in the <i> <i>AWS Key Management Service Developer
|
1896
|
-
# Guide</i> </i>.
|
1897
|
-
#
|
1898
|
-
# The result of this operation varies with the key state of the CMK. For
|
1899
|
-
# details, see [How Key State Affects Use of a Customer Master Key][2]
|
1900
|
-
# in the *AWS Key Management Service Developer Guide*.
|
1901
|
-
#
|
1902
2326
|
#
|
1903
2327
|
#
|
1904
2328
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
1905
2329
|
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
1906
2330
|
#
|
1907
2331
|
# @option params [required, String] :key_id
|
1908
|
-
#
|
2332
|
+
# Identifies the symmetric CMK that encrypts the data key.
|
1909
2333
|
#
|
1910
2334
|
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
1911
2335
|
# name, or alias ARN. When using an alias name, prefix it with
|
@@ -1927,8 +2351,15 @@ module Aws::KMS
|
|
1927
2351
|
# To get the alias name and alias ARN, use ListAliases.
|
1928
2352
|
#
|
1929
2353
|
# @option params [Hash<String,String>] :encryption_context
|
1930
|
-
#
|
1931
|
-
# data.
|
2354
|
+
# Specifies the encryption context that will be used when encrypting the
|
2355
|
+
# data key.
|
2356
|
+
#
|
2357
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
2358
|
+
# that represents additional authenticated data. When you use an
|
2359
|
+
# encryption context to encrypt data, you must specify the same (an
|
2360
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
2361
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
2362
|
+
# but it is highly recommended.
|
1932
2363
|
#
|
1933
2364
|
# For more information, see [Encryption Context][1] in the *AWS Key
|
1934
2365
|
# Management Service Developer Guide*.
|
@@ -1938,14 +2369,21 @@ module Aws::KMS
|
|
1938
2369
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
1939
2370
|
#
|
1940
2371
|
# @option params [Integer] :number_of_bytes
|
1941
|
-
#
|
1942
|
-
# generate a 512-bit data key (64 bytes is 512 bits). For
|
1943
|
-
#
|
1944
|
-
#
|
2372
|
+
# Specifies the length of the data key in bytes. For example, use the
|
2373
|
+
# value 64 to generate a 512-bit data key (64 bytes is 512 bits). For
|
2374
|
+
# 128-bit (16-byte) and 256-bit (32-byte) data keys, use the `KeySpec`
|
2375
|
+
# parameter.
|
2376
|
+
#
|
2377
|
+
# You must specify either the `KeySpec` or the `NumberOfBytes` parameter
|
2378
|
+
# (but not both) in every `GenerateDataKey` request.
|
1945
2379
|
#
|
1946
2380
|
# @option params [String] :key_spec
|
1947
|
-
#
|
1948
|
-
# symmetric key, or `AES_256` to generate a 256-bit symmetric
|
2381
|
+
# Specifies the length of the data key. Use `AES_128` to generate a
|
2382
|
+
# 128-bit symmetric key, or `AES_256` to generate a 256-bit symmetric
|
2383
|
+
# key.
|
2384
|
+
#
|
2385
|
+
# You must specify either the `KeySpec` or the `NumberOfBytes` parameter
|
2386
|
+
# (but not both) in every `GenerateDataKey` request.
|
1949
2387
|
#
|
1950
2388
|
# @option params [Array<String>] :grant_tokens
|
1951
2389
|
# A list of grant tokens.
|
@@ -2008,40 +2446,74 @@ module Aws::KMS
|
|
2008
2446
|
req.send_request(options)
|
2009
2447
|
end
|
2010
2448
|
|
2011
|
-
# Generates a unique data key.
|
2012
|
-
#
|
2013
|
-
#
|
2014
|
-
#
|
2449
|
+
# Generates a unique asymmetric data key pair. The `GenerateDataKeyPair`
|
2450
|
+
# operation returns a plaintext public key, a plaintext private key, and
|
2451
|
+
# a copy of the private key that is encrypted under the symmetric CMK
|
2452
|
+
# you specify. You can use the data key pair to perform asymmetric
|
2453
|
+
# cryptography outside of AWS KMS.
|
2454
|
+
#
|
2455
|
+
# `GenerateDataKeyPair` returns a unique data key pair for each request.
|
2456
|
+
# The bytes in the keys are not related to the caller or the CMK that is
|
2457
|
+
# used to encrypt the private key.
|
2458
|
+
#
|
2459
|
+
# You can use the public key that `GenerateDataKeyPair` returns to
|
2460
|
+
# encrypt data or verify a signature outside of AWS KMS. Then, store the
|
2461
|
+
# encrypted private key with the data. When you are ready to decrypt
|
2462
|
+
# data or sign a message, you can use the Decrypt operation to decrypt
|
2463
|
+
# the encrypted private key.
|
2464
|
+
#
|
2465
|
+
# To generate a data key pair, you must specify a symmetric customer
|
2466
|
+
# master key (CMK) to encrypt the private key in a data key pair. You
|
2467
|
+
# cannot use an asymmetric CMK. To get the type of your CMK, use the
|
2468
|
+
# DescribeKey operation.
|
2469
|
+
#
|
2470
|
+
# If you are using the data key pair to encrypt data, or for any
|
2471
|
+
# operation where you don't immediately need a private key, consider
|
2472
|
+
# using the GenerateDataKeyPairWithoutPlaintext operation.
|
2473
|
+
# `GenerateDataKeyPairWithoutPlaintext` returns a plaintext public key
|
2474
|
+
# and an encrypted private key, but omits the plaintext private key that
|
2475
|
+
# you need only to decrypt ciphertext or sign a message. Later, when you
|
2476
|
+
# need to decrypt the data or sign a message, use the Decrypt operation
|
2477
|
+
# to decrypt the encrypted private key in the data key pair.
|
2015
2478
|
#
|
2016
|
-
#
|
2017
|
-
#
|
2018
|
-
#
|
2479
|
+
# You can use the optional encryption context to add additional security
|
2480
|
+
# to the encryption operation. If you specify an `EncryptionContext`,
|
2481
|
+
# you must specify the same encryption context (a case-sensitive exact
|
2482
|
+
# match) when decrypting the encrypted data key. Otherwise, the request
|
2483
|
+
# to decrypt fails with an InvalidCiphertextException. For more
|
2484
|
+
# information, see [Encryption Context][1] in the *AWS Key Management
|
2485
|
+
# Service Developer Guide*.
|
2019
2486
|
#
|
2020
|
-
#
|
2021
|
-
#
|
2022
|
-
#
|
2487
|
+
# The CMK that you use for this operation must be in a compatible key
|
2488
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
2489
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
2023
2490
|
#
|
2024
|
-
# It's also useful in distributed systems with different levels of
|
2025
|
-
# trust. For example, you might store encrypted data in containers. One
|
2026
|
-
# component of your system creates new containers and stores an
|
2027
|
-
# encrypted data key with each container. Then, a different component
|
2028
|
-
# puts the data into the containers. That component first decrypts the
|
2029
|
-
# data key, uses the plaintext data key to encrypt data, puts the
|
2030
|
-
# encrypted data into the container, and then destroys the plaintext
|
2031
|
-
# data key. In this system, the component that creates the containers
|
2032
|
-
# never sees the plaintext data key.
|
2033
2491
|
#
|
2034
|
-
# The result of this operation varies with the key state of the CMK. For
|
2035
|
-
# details, see [How Key State Affects Use of a Customer Master Key][1]
|
2036
|
-
# in the *AWS Key Management Service Developer Guide*.
|
2037
2492
|
#
|
2493
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2494
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
2495
|
+
#
|
2496
|
+
# @option params [Hash<String,String>] :encryption_context
|
2497
|
+
# Specifies the encryption context that will be used when encrypting the
|
2498
|
+
# private key in the data key pair.
|
2499
|
+
#
|
2500
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
2501
|
+
# that represents additional authenticated data. When you use an
|
2502
|
+
# encryption context to encrypt data, you must specify the same (an
|
2503
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
2504
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
2505
|
+
# but it is highly recommended.
|
2506
|
+
#
|
2507
|
+
# For more information, see [Encryption Context][1] in the *AWS Key
|
2508
|
+
# Management Service Developer Guide*.
|
2038
2509
|
#
|
2039
2510
|
#
|
2040
|
-
#
|
2511
|
+
#
|
2512
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2041
2513
|
#
|
2042
2514
|
# @option params [required, String] :key_id
|
2043
|
-
#
|
2044
|
-
# key.
|
2515
|
+
# Specifies the symmetric CMK that encrypts the private key in the data
|
2516
|
+
# key pair. You cannot specify an asymmetric CMKs.
|
2045
2517
|
#
|
2046
2518
|
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
2047
2519
|
# name, or alias ARN. When using an alias name, prefix it with
|
@@ -2062,26 +2534,13 @@ module Aws::KMS
|
|
2062
2534
|
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
2063
2535
|
# To get the alias name and alias ARN, use ListAliases.
|
2064
2536
|
#
|
2065
|
-
# @option params [
|
2066
|
-
#
|
2067
|
-
# data.
|
2068
|
-
#
|
2069
|
-
# For more information, see [Encryption Context][1] in the *AWS Key
|
2070
|
-
# Management Service Developer Guide*.
|
2071
|
-
#
|
2072
|
-
#
|
2073
|
-
#
|
2074
|
-
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2075
|
-
#
|
2076
|
-
# @option params [String] :key_spec
|
2077
|
-
# The length of the data key. Use `AES_128` to generate a 128-bit
|
2078
|
-
# symmetric key, or `AES_256` to generate a 256-bit symmetric key.
|
2537
|
+
# @option params [required, String] :key_pair_spec
|
2538
|
+
# Determines the type of data key pair that is generated.
|
2079
2539
|
#
|
2080
|
-
#
|
2081
|
-
#
|
2082
|
-
#
|
2083
|
-
#
|
2084
|
-
# use the `KeySpec` field instead of this one.
|
2540
|
+
# The AWS KMS rule that restricts the use of asymmetric RSA CMKs to
|
2541
|
+
# encrypt and decrypt or to sign and verify (but not both), and the rule
|
2542
|
+
# that permits you to use ECC CMKs only to sign and verify, are not
|
2543
|
+
# effective outside of AWS KMS.
|
2085
2544
|
#
|
2086
2545
|
# @option params [Array<String>] :grant_tokens
|
2087
2546
|
# A list of grant tokens.
|
@@ -2093,36 +2552,317 @@ module Aws::KMS
|
|
2093
2552
|
#
|
2094
2553
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
2095
2554
|
#
|
2096
|
-
# @return [Types::
|
2097
|
-
#
|
2098
|
-
# * {Types::GenerateDataKeyWithoutPlaintextResponse#ciphertext_blob #ciphertext_blob} => String
|
2099
|
-
# * {Types::GenerateDataKeyWithoutPlaintextResponse#key_id #key_id} => String
|
2100
|
-
#
|
2101
|
-
#
|
2102
|
-
# @example Example: To generate an encrypted data key
|
2103
|
-
#
|
2104
|
-
# # The following example generates an encrypted copy of a 256-bit symmetric data encryption key (data key). The data key is
|
2105
|
-
# # encrypted with the specified customer master key (CMK).
|
2106
|
-
#
|
2107
|
-
# resp = client.generate_data_key_without_plaintext({
|
2108
|
-
# key_id: "alias/ExampleAlias", # The identifier of the CMK to use to encrypt the data key. You can use the key ID or Amazon Resource Name (ARN) of the CMK, or the name or ARN of an alias that refers to the CMK.
|
2109
|
-
# key_spec: "AES_256", # Specifies the type of data key to return.
|
2110
|
-
# })
|
2555
|
+
# @return [Types::GenerateDataKeyPairResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
2111
2556
|
#
|
2112
|
-
#
|
2113
|
-
# {
|
2114
|
-
#
|
2115
|
-
#
|
2116
|
-
# }
|
2557
|
+
# * {Types::GenerateDataKeyPairResponse#private_key_ciphertext_blob #private_key_ciphertext_blob} => String
|
2558
|
+
# * {Types::GenerateDataKeyPairResponse#private_key_plaintext #private_key_plaintext} => String
|
2559
|
+
# * {Types::GenerateDataKeyPairResponse#public_key #public_key} => String
|
2560
|
+
# * {Types::GenerateDataKeyPairResponse#key_id #key_id} => String
|
2561
|
+
# * {Types::GenerateDataKeyPairResponse#key_pair_spec #key_pair_spec} => String
|
2117
2562
|
#
|
2118
2563
|
# @example Request syntax with placeholder values
|
2119
2564
|
#
|
2120
|
-
# resp = client.
|
2121
|
-
# key_id: "KeyIdType", # required
|
2565
|
+
# resp = client.generate_data_key_pair({
|
2122
2566
|
# encryption_context: {
|
2123
2567
|
# "EncryptionContextKey" => "EncryptionContextValue",
|
2124
2568
|
# },
|
2125
|
-
#
|
2569
|
+
# key_id: "KeyIdType", # required
|
2570
|
+
# 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
|
2571
|
+
# grant_tokens: ["GrantTokenType"],
|
2572
|
+
# })
|
2573
|
+
#
|
2574
|
+
# @example Response structure
|
2575
|
+
#
|
2576
|
+
# resp.private_key_ciphertext_blob #=> String
|
2577
|
+
# resp.private_key_plaintext #=> String
|
2578
|
+
# resp.public_key #=> String
|
2579
|
+
# resp.key_id #=> String
|
2580
|
+
# resp.key_pair_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1"
|
2581
|
+
#
|
2582
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyPair AWS API Documentation
|
2583
|
+
#
|
2584
|
+
# @overload generate_data_key_pair(params = {})
|
2585
|
+
# @param [Hash] params ({})
|
2586
|
+
def generate_data_key_pair(params = {}, options = {})
|
2587
|
+
req = build_request(:generate_data_key_pair, params)
|
2588
|
+
req.send_request(options)
|
2589
|
+
end
|
2590
|
+
|
2591
|
+
# Generates a unique asymmetric data key pair. The
|
2592
|
+
# `GenerateDataKeyPairWithoutPlaintext` operation returns a plaintext
|
2593
|
+
# public key and a copy of the private key that is encrypted under the
|
2594
|
+
# symmetric CMK you specify. Unlike GenerateDataKeyPair, this operation
|
2595
|
+
# does not return a plaintext private key.
|
2596
|
+
#
|
2597
|
+
# To generate a data key pair, you must specify a symmetric customer
|
2598
|
+
# master key (CMK) to encrypt the private key in the data key pair. You
|
2599
|
+
# cannot use an asymmetric CMK. To get the type of your CMK, use the
|
2600
|
+
# `KeySpec` field in the DescribeKey response.
|
2601
|
+
#
|
2602
|
+
# You can use the public key that `GenerateDataKeyPairWithoutPlaintext`
|
2603
|
+
# returns to encrypt data or verify a signature outside of AWS KMS.
|
2604
|
+
# Then, store the encrypted private key with the data. When you are
|
2605
|
+
# ready to decrypt data or sign a message, you can use the Decrypt
|
2606
|
+
# operation to decrypt the encrypted private key.
|
2607
|
+
#
|
2608
|
+
# `GenerateDataKeyPairWithoutPlaintext` returns a unique data key pair
|
2609
|
+
# for each request. The bytes in the key are not related to the caller
|
2610
|
+
# or CMK that is used to encrypt the private key.
|
2611
|
+
#
|
2612
|
+
# You can use the optional encryption context to add additional security
|
2613
|
+
# to the encryption operation. If you specify an `EncryptionContext`,
|
2614
|
+
# you must specify the same encryption context (a case-sensitive exact
|
2615
|
+
# match) when decrypting the encrypted data key. Otherwise, the request
|
2616
|
+
# to decrypt fails with an InvalidCiphertextException. For more
|
2617
|
+
# information, see [Encryption Context][1] in the *AWS Key Management
|
2618
|
+
# Service Developer Guide*.
|
2619
|
+
#
|
2620
|
+
# The CMK that you use for this operation must be in a compatible key
|
2621
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
2622
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
2623
|
+
#
|
2624
|
+
#
|
2625
|
+
#
|
2626
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2627
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
2628
|
+
#
|
2629
|
+
# @option params [Hash<String,String>] :encryption_context
|
2630
|
+
# Specifies the encryption context that will be used when encrypting the
|
2631
|
+
# private key in the data key pair.
|
2632
|
+
#
|
2633
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
2634
|
+
# that represents additional authenticated data. When you use an
|
2635
|
+
# encryption context to encrypt data, you must specify the same (an
|
2636
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
2637
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
2638
|
+
# but it is highly recommended.
|
2639
|
+
#
|
2640
|
+
# For more information, see [Encryption Context][1] in the *AWS Key
|
2641
|
+
# Management Service Developer Guide*.
|
2642
|
+
#
|
2643
|
+
#
|
2644
|
+
#
|
2645
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2646
|
+
#
|
2647
|
+
# @option params [required, String] :key_id
|
2648
|
+
# Specifies the CMK that encrypts the private key in the data key pair.
|
2649
|
+
# You must specify a symmetric CMK. You cannot use an asymmetric CMK.
|
2650
|
+
#
|
2651
|
+
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
2652
|
+
# name, or alias ARN. When using an alias name, prefix it with
|
2653
|
+
# `"alias/"`.
|
2654
|
+
#
|
2655
|
+
# For example:
|
2656
|
+
#
|
2657
|
+
# * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
|
2658
|
+
#
|
2659
|
+
# * Key ARN:
|
2660
|
+
# `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
2661
|
+
#
|
2662
|
+
# * Alias name: `alias/ExampleAlias`
|
2663
|
+
#
|
2664
|
+
# * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
|
2665
|
+
#
|
2666
|
+
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
2667
|
+
# To get the alias name and alias ARN, use ListAliases.
|
2668
|
+
#
|
2669
|
+
# @option params [required, String] :key_pair_spec
|
2670
|
+
# Determines the type of data key pair that is generated.
|
2671
|
+
#
|
2672
|
+
# The AWS KMS rule that restricts the use of asymmetric RSA CMKs to
|
2673
|
+
# encrypt and decrypt or to sign and verify (but not both), and the rule
|
2674
|
+
# that permits you to use ECC CMKs only to sign and verify, are not
|
2675
|
+
# effective outside of AWS KMS.
|
2676
|
+
#
|
2677
|
+
# @option params [Array<String>] :grant_tokens
|
2678
|
+
# A list of grant tokens.
|
2679
|
+
#
|
2680
|
+
# For more information, see [Grant Tokens][1] in the *AWS Key Management
|
2681
|
+
# Service Developer Guide*.
|
2682
|
+
#
|
2683
|
+
#
|
2684
|
+
#
|
2685
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
2686
|
+
#
|
2687
|
+
# @return [Types::GenerateDataKeyPairWithoutPlaintextResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
2688
|
+
#
|
2689
|
+
# * {Types::GenerateDataKeyPairWithoutPlaintextResponse#private_key_ciphertext_blob #private_key_ciphertext_blob} => String
|
2690
|
+
# * {Types::GenerateDataKeyPairWithoutPlaintextResponse#public_key #public_key} => String
|
2691
|
+
# * {Types::GenerateDataKeyPairWithoutPlaintextResponse#key_id #key_id} => String
|
2692
|
+
# * {Types::GenerateDataKeyPairWithoutPlaintextResponse#key_pair_spec #key_pair_spec} => String
|
2693
|
+
#
|
2694
|
+
# @example Request syntax with placeholder values
|
2695
|
+
#
|
2696
|
+
# resp = client.generate_data_key_pair_without_plaintext({
|
2697
|
+
# encryption_context: {
|
2698
|
+
# "EncryptionContextKey" => "EncryptionContextValue",
|
2699
|
+
# },
|
2700
|
+
# key_id: "KeyIdType", # required
|
2701
|
+
# 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
|
2702
|
+
# grant_tokens: ["GrantTokenType"],
|
2703
|
+
# })
|
2704
|
+
#
|
2705
|
+
# @example Response structure
|
2706
|
+
#
|
2707
|
+
# resp.private_key_ciphertext_blob #=> String
|
2708
|
+
# resp.public_key #=> String
|
2709
|
+
# resp.key_id #=> String
|
2710
|
+
# resp.key_pair_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1"
|
2711
|
+
#
|
2712
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyPairWithoutPlaintext AWS API Documentation
|
2713
|
+
#
|
2714
|
+
# @overload generate_data_key_pair_without_plaintext(params = {})
|
2715
|
+
# @param [Hash] params ({})
|
2716
|
+
def generate_data_key_pair_without_plaintext(params = {}, options = {})
|
2717
|
+
req = build_request(:generate_data_key_pair_without_plaintext, params)
|
2718
|
+
req.send_request(options)
|
2719
|
+
end
|
2720
|
+
|
2721
|
+
# Generates a unique symmetric data key. This operation returns a data
|
2722
|
+
# key that is encrypted under a customer master key (CMK) that you
|
2723
|
+
# specify. To request an asymmetric data key pair, use the
|
2724
|
+
# GenerateDataKeyPair or GenerateDataKeyPairWithoutPlaintext operations.
|
2725
|
+
#
|
2726
|
+
# `GenerateDataKeyWithoutPlaintext` is identical to the GenerateDataKey
|
2727
|
+
# operation except that returns only the encrypted copy of the data key.
|
2728
|
+
# This operation is useful for systems that need to encrypt data at some
|
2729
|
+
# point, but not immediately. When you need to encrypt the data, you
|
2730
|
+
# call the Decrypt operation on the encrypted copy of the key.
|
2731
|
+
#
|
2732
|
+
# It's also useful in distributed systems with different levels of
|
2733
|
+
# trust. For example, you might store encrypted data in containers. One
|
2734
|
+
# component of your system creates new containers and stores an
|
2735
|
+
# encrypted data key with each container. Then, a different component
|
2736
|
+
# puts the data into the containers. That component first decrypts the
|
2737
|
+
# data key, uses the plaintext data key to encrypt data, puts the
|
2738
|
+
# encrypted data into the container, and then destroys the plaintext
|
2739
|
+
# data key. In this system, the component that creates the containers
|
2740
|
+
# never sees the plaintext data key.
|
2741
|
+
#
|
2742
|
+
# `GenerateDataKeyWithoutPlaintext` returns a unique data key for each
|
2743
|
+
# request. The bytes in the keys are not related to the caller or CMK
|
2744
|
+
# that is used to encrypt the private key.
|
2745
|
+
#
|
2746
|
+
# To generate a data key, you must specify the symmetric customer master
|
2747
|
+
# key (CMK) that is used to encrypt the data key. You cannot use an
|
2748
|
+
# asymmetric CMK to generate a data key. To get the type of your CMK,
|
2749
|
+
# use the `KeySpec` field in the DescribeKey response. You must also
|
2750
|
+
# specify the length of the data key using either the `KeySpec` or
|
2751
|
+
# `NumberOfBytes` field (but not both). For common key lengths (128-bit
|
2752
|
+
# and 256-bit symmetric keys), use the `KeySpec` parameter.
|
2753
|
+
#
|
2754
|
+
# If the operation succeeds, you will find the plaintext copy of the
|
2755
|
+
# data key in the `Plaintext` field of the response, and the encrypted
|
2756
|
+
# copy of the data key in the `CiphertextBlob` field.
|
2757
|
+
#
|
2758
|
+
# You can use the optional encryption context to add additional security
|
2759
|
+
# to the encryption operation. If you specify an `EncryptionContext`,
|
2760
|
+
# you must specify the same encryption context (a case-sensitive exact
|
2761
|
+
# match) when decrypting the encrypted data key. Otherwise, the request
|
2762
|
+
# to decrypt fails with an InvalidCiphertextException. For more
|
2763
|
+
# information, see [Encryption Context][1] in the *AWS Key Management
|
2764
|
+
# Service Developer Guide*.
|
2765
|
+
#
|
2766
|
+
# The CMK that you use for this operation must be in a compatible key
|
2767
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
2768
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
2769
|
+
#
|
2770
|
+
#
|
2771
|
+
#
|
2772
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2773
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
2774
|
+
#
|
2775
|
+
# @option params [required, String] :key_id
|
2776
|
+
# The identifier of the symmetric customer master key (CMK) that
|
2777
|
+
# encrypts the data key.
|
2778
|
+
#
|
2779
|
+
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
2780
|
+
# name, or alias ARN. When using an alias name, prefix it with
|
2781
|
+
# `"alias/"`. To specify a CMK in a different AWS account, you must use
|
2782
|
+
# the key ARN or alias ARN.
|
2783
|
+
#
|
2784
|
+
# For example:
|
2785
|
+
#
|
2786
|
+
# * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
|
2787
|
+
#
|
2788
|
+
# * Key ARN:
|
2789
|
+
# `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
2790
|
+
#
|
2791
|
+
# * Alias name: `alias/ExampleAlias`
|
2792
|
+
#
|
2793
|
+
# * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
|
2794
|
+
#
|
2795
|
+
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
2796
|
+
# To get the alias name and alias ARN, use ListAliases.
|
2797
|
+
#
|
2798
|
+
# @option params [Hash<String,String>] :encryption_context
|
2799
|
+
# Specifies the encryption context that will be used when encrypting the
|
2800
|
+
# data key.
|
2801
|
+
#
|
2802
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
2803
|
+
# that represents additional authenticated data. When you use an
|
2804
|
+
# encryption context to encrypt data, you must specify the same (an
|
2805
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
2806
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
2807
|
+
# but it is highly recommended.
|
2808
|
+
#
|
2809
|
+
# For more information, see [Encryption Context][1] in the *AWS Key
|
2810
|
+
# Management Service Developer Guide*.
|
2811
|
+
#
|
2812
|
+
#
|
2813
|
+
#
|
2814
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
2815
|
+
#
|
2816
|
+
# @option params [String] :key_spec
|
2817
|
+
# The length of the data key. Use `AES_128` to generate a 128-bit
|
2818
|
+
# symmetric key, or `AES_256` to generate a 256-bit symmetric key.
|
2819
|
+
#
|
2820
|
+
# @option params [Integer] :number_of_bytes
|
2821
|
+
# The length of the data key in bytes. For example, use the value 64 to
|
2822
|
+
# generate a 512-bit data key (64 bytes is 512 bits). For common key
|
2823
|
+
# lengths (128-bit and 256-bit symmetric keys), we recommend that you
|
2824
|
+
# use the `KeySpec` field instead of this one.
|
2825
|
+
#
|
2826
|
+
# @option params [Array<String>] :grant_tokens
|
2827
|
+
# A list of grant tokens.
|
2828
|
+
#
|
2829
|
+
# For more information, see [Grant Tokens][1] in the *AWS Key Management
|
2830
|
+
# Service Developer Guide*.
|
2831
|
+
#
|
2832
|
+
#
|
2833
|
+
#
|
2834
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
2835
|
+
#
|
2836
|
+
# @return [Types::GenerateDataKeyWithoutPlaintextResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
2837
|
+
#
|
2838
|
+
# * {Types::GenerateDataKeyWithoutPlaintextResponse#ciphertext_blob #ciphertext_blob} => String
|
2839
|
+
# * {Types::GenerateDataKeyWithoutPlaintextResponse#key_id #key_id} => String
|
2840
|
+
#
|
2841
|
+
#
|
2842
|
+
# @example Example: To generate an encrypted data key
|
2843
|
+
#
|
2844
|
+
# # The following example generates an encrypted copy of a 256-bit symmetric data encryption key (data key). The data key is
|
2845
|
+
# # encrypted with the specified customer master key (CMK).
|
2846
|
+
#
|
2847
|
+
# resp = client.generate_data_key_without_plaintext({
|
2848
|
+
# key_id: "alias/ExampleAlias", # The identifier of the CMK to use to encrypt the data key. You can use the key ID or Amazon Resource Name (ARN) of the CMK, or the name or ARN of an alias that refers to the CMK.
|
2849
|
+
# key_spec: "AES_256", # Specifies the type of data key to return.
|
2850
|
+
# })
|
2851
|
+
#
|
2852
|
+
# resp.to_h outputs the following:
|
2853
|
+
# {
|
2854
|
+
# ciphertext_blob: "<binary data>", # The encrypted data key.
|
2855
|
+
# key_id: "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", # The ARN of the CMK that was used to encrypt the data key.
|
2856
|
+
# }
|
2857
|
+
#
|
2858
|
+
# @example Request syntax with placeholder values
|
2859
|
+
#
|
2860
|
+
# resp = client.generate_data_key_without_plaintext({
|
2861
|
+
# key_id: "KeyIdType", # required
|
2862
|
+
# encryption_context: {
|
2863
|
+
# "EncryptionContextKey" => "EncryptionContextValue",
|
2864
|
+
# },
|
2865
|
+
# key_spec: "AES_256", # accepts AES_256, AES_128
|
2126
2866
|
# number_of_bytes: 1,
|
2127
2867
|
# grant_tokens: ["GrantTokenType"],
|
2128
2868
|
# })
|
@@ -2270,9 +3010,13 @@ module Aws::KMS
|
|
2270
3010
|
# key material][1] is enabled for the specified customer master key
|
2271
3011
|
# (CMK).
|
2272
3012
|
#
|
2273
|
-
#
|
2274
|
-
#
|
2275
|
-
#
|
3013
|
+
# You cannot enable automatic rotation of asymmetric CMKs, CMKs with
|
3014
|
+
# imported key material, or CMKs in a [custom key store][2]. The key
|
3015
|
+
# rotation status for these CMKs is always `false`.
|
3016
|
+
#
|
3017
|
+
# The CMK that you use for this operation must be in a compatible key
|
3018
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
3019
|
+
# Master Key][3] in the *AWS Key Management Service Developer Guide*.
|
2276
3020
|
#
|
2277
3021
|
# * Disabled: The key rotation status does not change when you disable a
|
2278
3022
|
# CMK. However, while the CMK is disabled, AWS KMS does not rotate the
|
@@ -2289,7 +3033,8 @@ module Aws::KMS
|
|
2289
3033
|
#
|
2290
3034
|
#
|
2291
3035
|
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
|
2292
|
-
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-
|
3036
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
|
3037
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
2293
3038
|
#
|
2294
3039
|
# @option params [required, String] :key_id
|
2295
3040
|
# A unique identifier for the customer master key (CMK).
|
@@ -2343,29 +3088,32 @@ module Aws::KMS
|
|
2343
3088
|
req.send_request(options)
|
2344
3089
|
end
|
2345
3090
|
|
2346
|
-
# Returns the items you need
|
2347
|
-
#
|
2348
|
-
#
|
2349
|
-
#
|
2350
|
-
#
|
2351
|
-
# You must specify the key ID of the customer master key (CMK) into
|
2352
|
-
# which you will import key material. This CMK's `Origin` must be
|
2353
|
-
# `EXTERNAL`. You must also specify the wrapping algorithm and type of
|
2354
|
-
# wrapping key (public key) that you will use to encrypt the key
|
2355
|
-
# material. You cannot perform this operation on a CMK in a different
|
2356
|
-
# AWS account.
|
3091
|
+
# Returns the items you need to import key material into a symmetric,
|
3092
|
+
# customer managed customer master key (CMK). For more information about
|
3093
|
+
# importing key material into AWS KMS, see [Importing Key Material][1]
|
3094
|
+
# in the *AWS Key Management Service Developer Guide*.
|
2357
3095
|
#
|
2358
3096
|
# This operation returns a public key and an import token. Use the
|
2359
|
-
# public key to encrypt the key material. Store the import
|
2360
|
-
# with a subsequent ImportKeyMaterial request.
|
2361
|
-
#
|
2362
|
-
#
|
2363
|
-
#
|
3097
|
+
# public key to encrypt the symmetric key material. Store the import
|
3098
|
+
# token to send with a subsequent ImportKeyMaterial request.
|
3099
|
+
#
|
3100
|
+
# You must specify the key ID of the symmetric CMK into which you will
|
3101
|
+
# import key material. This CMK's `Origin` must be `EXTERNAL`. You must
|
3102
|
+
# also specify the wrapping algorithm and type of wrapping key (public
|
3103
|
+
# key) that you will use to encrypt the key material. You cannot perform
|
3104
|
+
# this operation on an asymmetric CMK or on any CMK in a different AWS
|
3105
|
+
# account.
|
3106
|
+
#
|
3107
|
+
# To import key material, you must use the public key and import token
|
3108
|
+
# from the same response. These items are valid for 24 hours. The
|
3109
|
+
# expiration date and time appear in the `GetParametersForImport`
|
3110
|
+
# response. You cannot use an expired token in an ImportKeyMaterial
|
3111
|
+
# request. If your key and token expire, send another
|
2364
3112
|
# `GetParametersForImport` request.
|
2365
3113
|
#
|
2366
|
-
# The
|
2367
|
-
# details, see [How Key State Affects Use of a Customer
|
2368
|
-
# in the *AWS Key Management Service Developer Guide*.
|
3114
|
+
# The CMK that you use for this operation must be in a compatible key
|
3115
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
3116
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
2369
3117
|
#
|
2370
3118
|
#
|
2371
3119
|
#
|
@@ -2373,8 +3121,8 @@ module Aws::KMS
|
|
2373
3121
|
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
2374
3122
|
#
|
2375
3123
|
# @option params [required, String] :key_id
|
2376
|
-
# The identifier of the CMK into which you will import key
|
2377
|
-
#
|
3124
|
+
# The identifier of the symmetric CMK into which you will import key
|
3125
|
+
# material. The `Origin` of the CMK must be `EXTERNAL`.
|
2378
3126
|
#
|
2379
3127
|
# Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
|
2380
3128
|
#
|
@@ -2451,12 +3199,136 @@ module Aws::KMS
|
|
2451
3199
|
req.send_request(options)
|
2452
3200
|
end
|
2453
3201
|
|
2454
|
-
#
|
2455
|
-
#
|
2456
|
-
#
|
2457
|
-
#
|
2458
|
-
#
|
2459
|
-
#
|
3202
|
+
# Returns the public key of an asymmetric CMK. Unlike the private key of
|
3203
|
+
# a asymmetric CMK, which never leaves AWS KMS unencrypted, callers with
|
3204
|
+
# `kms:GetPublicKey` permission can download the public key of an
|
3205
|
+
# asymmetric CMK. You can share the public key to allow others to
|
3206
|
+
# encrypt messages and verify signatures outside of AWS KMS. For
|
3207
|
+
# information about symmetric and asymmetric CMKs, see [Using Symmetric
|
3208
|
+
# and Asymmetric CMKs][1] in the *AWS Key Management Service Developer
|
3209
|
+
# Guide*.
|
3210
|
+
#
|
3211
|
+
# You do not need to download the public key. Instead, you can use the
|
3212
|
+
# public key within AWS KMS by calling the Encrypt, ReEncrypt, or Verify
|
3213
|
+
# operations with the identifier of an asymmetric CMK. When you use the
|
3214
|
+
# public key within AWS KMS, you benefit from the authentication,
|
3215
|
+
# authorization, and logging that are part of every AWS KMS operation.
|
3216
|
+
# You also reduce of risk of encrypting data that cannot be decrypted.
|
3217
|
+
# These features are not effective outside of AWS KMS. For details, see
|
3218
|
+
# [Special Considerations for Downloading Public
|
3219
|
+
# Keys](kms/latest/developerguide/get-public-key.html#get-public-key-considerations).
|
3220
|
+
#
|
3221
|
+
# To help you use the public key safely outside of AWS KMS,
|
3222
|
+
# `GetPublicKey` returns important information about the public key in
|
3223
|
+
# the response, including:
|
3224
|
+
#
|
3225
|
+
# * [CustomerMasterKeySpec][2]\: The type of key material in the public
|
3226
|
+
# key, such as `RSA_4096` or `ECC_NIST_P521`.
|
3227
|
+
#
|
3228
|
+
# * [KeyUsage][3]\: Whether the key is used for encryption or signing.
|
3229
|
+
#
|
3230
|
+
# * [EncryptionAlgorithms][4] or [SigningAlgorithms][5]\: A list of the
|
3231
|
+
# encryption algorithms or the signing algorithms for the key.
|
3232
|
+
#
|
3233
|
+
# Although AWS KMS cannot enforce these restrictions on external
|
3234
|
+
# operations, it is crucial that you use this information to prevent the
|
3235
|
+
# public key from being used improperly. For example, you can prevent a
|
3236
|
+
# public signing key from being used encrypt data, or prevent a public
|
3237
|
+
# key from being used with an encryption algorithm that is not supported
|
3238
|
+
# by AWS KMS. You can also avoid errors, such as using the wrong signing
|
3239
|
+
# algorithm in a verification operation.
|
3240
|
+
#
|
3241
|
+
# The CMK that you use for this operation must be in a compatible key
|
3242
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
3243
|
+
# Master Key][6] in the *AWS Key Management Service Developer Guide*.
|
3244
|
+
#
|
3245
|
+
#
|
3246
|
+
#
|
3247
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
|
3248
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-CustomerMasterKeySpec
|
3249
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-KeyUsage
|
3250
|
+
# [4]: https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-EncryptionAlgorithms
|
3251
|
+
# [5]: https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-SigningAlgorithms
|
3252
|
+
# [6]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
3253
|
+
#
|
3254
|
+
# @option params [required, String] :key_id
|
3255
|
+
# Identifies the asymmetric CMK that includes the public key.
|
3256
|
+
#
|
3257
|
+
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
3258
|
+
# name, or alias ARN. When using an alias name, prefix it with
|
3259
|
+
# `"alias/"`. To specify a CMK in a different AWS account, you must use
|
3260
|
+
# the key ARN or alias ARN.
|
3261
|
+
#
|
3262
|
+
# For example:
|
3263
|
+
#
|
3264
|
+
# * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
|
3265
|
+
#
|
3266
|
+
# * Key ARN:
|
3267
|
+
# `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
3268
|
+
#
|
3269
|
+
# * Alias name: `alias/ExampleAlias`
|
3270
|
+
#
|
3271
|
+
# * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
|
3272
|
+
#
|
3273
|
+
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
3274
|
+
# To get the alias name and alias ARN, use ListAliases.
|
3275
|
+
#
|
3276
|
+
# @option params [Array<String>] :grant_tokens
|
3277
|
+
# A list of grant tokens.
|
3278
|
+
#
|
3279
|
+
# For more information, see [Grant Tokens][1] in the *AWS Key Management
|
3280
|
+
# Service Developer Guide*.
|
3281
|
+
#
|
3282
|
+
#
|
3283
|
+
#
|
3284
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
3285
|
+
#
|
3286
|
+
# @return [Types::GetPublicKeyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
3287
|
+
#
|
3288
|
+
# * {Types::GetPublicKeyResponse#key_id #key_id} => String
|
3289
|
+
# * {Types::GetPublicKeyResponse#public_key #public_key} => String
|
3290
|
+
# * {Types::GetPublicKeyResponse#customer_master_key_spec #customer_master_key_spec} => String
|
3291
|
+
# * {Types::GetPublicKeyResponse#key_usage #key_usage} => String
|
3292
|
+
# * {Types::GetPublicKeyResponse#encryption_algorithms #encryption_algorithms} => Array<String>
|
3293
|
+
# * {Types::GetPublicKeyResponse#signing_algorithms #signing_algorithms} => Array<String>
|
3294
|
+
#
|
3295
|
+
# @example Request syntax with placeholder values
|
3296
|
+
#
|
3297
|
+
# resp = client.get_public_key({
|
3298
|
+
# key_id: "KeyIdType", # required
|
3299
|
+
# grant_tokens: ["GrantTokenType"],
|
3300
|
+
# })
|
3301
|
+
#
|
3302
|
+
# @example Response structure
|
3303
|
+
#
|
3304
|
+
# resp.key_id #=> String
|
3305
|
+
# resp.public_key #=> String
|
3306
|
+
# resp.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT"
|
3307
|
+
# resp.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT"
|
3308
|
+
# resp.encryption_algorithms #=> Array
|
3309
|
+
# resp.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
|
3310
|
+
# resp.signing_algorithms #=> Array
|
3311
|
+
# resp.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512"
|
3312
|
+
#
|
3313
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetPublicKey AWS API Documentation
|
3314
|
+
#
|
3315
|
+
# @overload get_public_key(params = {})
|
3316
|
+
# @param [Hash] params ({})
|
3317
|
+
def get_public_key(params = {}, options = {})
|
3318
|
+
req = build_request(:get_public_key, params)
|
3319
|
+
req.send_request(options)
|
3320
|
+
end
|
3321
|
+
|
3322
|
+
# Imports key material into an existing symmetric AWS KMS customer
|
3323
|
+
# master key (CMK) that was created without key material. After you
|
3324
|
+
# successfully import key material into a CMK, you can [reimport the
|
3325
|
+
# same key material][1] into that CMK, but you cannot import different
|
3326
|
+
# key material.
|
3327
|
+
#
|
3328
|
+
# You cannot perform this operation on an asymmetric CMK or on any CMK
|
3329
|
+
# in a different AWS account. For more information about creating CMKs
|
3330
|
+
# with no key material and then importing key material, see [Importing
|
3331
|
+
# Key Material][2] in the *AWS Key Management Service Developer Guide*.
|
2460
3332
|
#
|
2461
3333
|
# Before using this operation, call GetParametersForImport. Its response
|
2462
3334
|
# includes a public key and an import token. Use the public key to
|
@@ -2475,35 +3347,43 @@ module Aws::KMS
|
|
2475
3347
|
# * The encrypted key material. To get the public key to encrypt the key
|
2476
3348
|
# material, call GetParametersForImport.
|
2477
3349
|
#
|
2478
|
-
# * The import token that GetParametersForImport returned.
|
2479
|
-
#
|
2480
|
-
#
|
3350
|
+
# * The import token that GetParametersForImport returned. You must use
|
3351
|
+
# a public key and token from the same `GetParametersForImport`
|
3352
|
+
# response.
|
2481
3353
|
#
|
2482
3354
|
# * Whether the key material expires and if so, when. If you set an
|
2483
|
-
# expiration date,
|
2484
|
-
#
|
2485
|
-
#
|
2486
|
-
#
|
2487
|
-
#
|
3355
|
+
# expiration date, AWS KMS deletes the key material from the CMK on
|
3356
|
+
# the specified date, and the CMK becomes unusable. To use the CMK
|
3357
|
+
# again, you must reimport the same key material. The only way to
|
3358
|
+
# change an expiration date is by reimporting the same key material
|
3359
|
+
# and specifying a new expiration date.
|
2488
3360
|
#
|
2489
3361
|
# When this operation is successful, the key state of the CMK changes
|
2490
|
-
# from `PendingImport` to `Enabled`, and you can use the CMK.
|
2491
|
-
# successfully import key material into a CMK, you can reimport the same
|
2492
|
-
# key material into that CMK, but you cannot import different key
|
2493
|
-
# material.
|
3362
|
+
# from `PendingImport` to `Enabled`, and you can use the CMK.
|
2494
3363
|
#
|
2495
|
-
#
|
2496
|
-
#
|
2497
|
-
#
|
3364
|
+
# If this operation fails, use the exception to help determine the
|
3365
|
+
# problem. If the error is related to the key material, the import
|
3366
|
+
# token, or wrapping key, use GetParametersForImport to get a new public
|
3367
|
+
# key and import token for the CMK and repeat the import procedure. For
|
3368
|
+
# help, see [How To Import Key Material][3] in the *AWS Key Management
|
3369
|
+
# Service Developer Guide*.
|
2498
3370
|
#
|
3371
|
+
# The CMK that you use for this operation must be in a compatible key
|
3372
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
3373
|
+
# Master Key][4] in the *AWS Key Management Service Developer Guide*.
|
2499
3374
|
#
|
2500
3375
|
#
|
2501
|
-
#
|
2502
|
-
# [
|
3376
|
+
#
|
3377
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html#reimport-key-material
|
3378
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
|
3379
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html#importing-keys-overview
|
3380
|
+
# [4]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
2503
3381
|
#
|
2504
3382
|
# @option params [required, String] :key_id
|
2505
|
-
# The identifier of the CMK
|
2506
|
-
# `Origin` must be `EXTERNAL`.
|
3383
|
+
# The identifier of the symmetric CMK that receives the imported key
|
3384
|
+
# material. The CMK's `Origin` must be `EXTERNAL`. This must be the
|
3385
|
+
# same CMK specified in the `KeyID` parameter of the corresponding
|
3386
|
+
# GetParametersForImport request.
|
2507
3387
|
#
|
2508
3388
|
# Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
|
2509
3389
|
#
|
@@ -2522,10 +3402,10 @@ module Aws::KMS
|
|
2522
3402
|
# contained the public key that you used to encrypt the key material.
|
2523
3403
|
#
|
2524
3404
|
# @option params [required, String, IO] :encrypted_key_material
|
2525
|
-
# The encrypted key material to import.
|
2526
|
-
#
|
2527
|
-
#
|
2528
|
-
#
|
3405
|
+
# The encrypted key material to import. The key material must be
|
3406
|
+
# encrypted with the public wrapping key that GetParametersForImport
|
3407
|
+
# returned, using the wrapping algorithm that you specified in the same
|
3408
|
+
# `GetParametersForImport` request.
|
2529
3409
|
#
|
2530
3410
|
# @option params [Time,DateTime,Date,Integer,String] :valid_to
|
2531
3411
|
# The time at which the imported key material expires. When the key
|
@@ -2831,7 +3711,7 @@ module Aws::KMS
|
|
2831
3711
|
# resp.grants[0].retiring_principal #=> String
|
2832
3712
|
# resp.grants[0].issuing_account #=> String
|
2833
3713
|
# resp.grants[0].operations #=> Array
|
2834
|
-
# resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "RetireGrant", "DescribeKey"
|
3714
|
+
# resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext"
|
2835
3715
|
# resp.grants[0].constraints.encryption_context_subset #=> Hash
|
2836
3716
|
# resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
|
2837
3717
|
# resp.grants[0].constraints.encryption_context_equals #=> Hash
|
@@ -2932,7 +3812,7 @@ module Aws::KMS
|
|
2932
3812
|
end
|
2933
3813
|
|
2934
3814
|
# Gets a list of all customer master keys (CMKs) in the caller's AWS
|
2935
|
-
# account and
|
3815
|
+
# account and Region.
|
2936
3816
|
#
|
2937
3817
|
# @option params [Integer] :limit
|
2938
3818
|
# Use this parameter to specify the maximum number of items to return.
|
@@ -3202,7 +4082,7 @@ module Aws::KMS
|
|
3202
4082
|
# resp.grants[0].retiring_principal #=> String
|
3203
4083
|
# resp.grants[0].issuing_account #=> String
|
3204
4084
|
# resp.grants[0].operations #=> Array
|
3205
|
-
# resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "RetireGrant", "DescribeKey"
|
4085
|
+
# resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext"
|
3206
4086
|
# resp.grants[0].constraints.encryption_context_subset #=> Hash
|
3207
4087
|
# resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
|
3208
4088
|
# resp.grants[0].constraints.encryption_context_equals #=> Hash
|
@@ -3326,40 +4206,142 @@ module Aws::KMS
|
|
3326
4206
|
req.send_request(options)
|
3327
4207
|
end
|
3328
4208
|
|
3329
|
-
#
|
3330
|
-
#
|
3331
|
-
# data is
|
3332
|
-
#
|
3333
|
-
#
|
3334
|
-
#
|
3335
|
-
#
|
3336
|
-
#
|
3337
|
-
# `
|
3338
|
-
#
|
3339
|
-
#
|
3340
|
-
# the
|
3341
|
-
#
|
3342
|
-
#
|
3343
|
-
#
|
3344
|
-
#
|
3345
|
-
#
|
3346
|
-
#
|
3347
|
-
#
|
4209
|
+
# Decrypts ciphertext and then reencrypts it entirely within AWS KMS.
|
4210
|
+
# You can use this operation to change the customer master key (CMK)
|
4211
|
+
# under which data is encrypted, such as when you [manually
|
4212
|
+
# rotate](kms/latest/developerguide/rotate-keys.html#rotate-keys-manually)
|
4213
|
+
# a CMK or change the CMK that protects a ciphertext. You can also use
|
4214
|
+
# it to reencrypt ciphertext under the same CMK, such as to change the
|
4215
|
+
# encryption context of a ciphertext.
|
4216
|
+
#
|
4217
|
+
# The `ReEncrypt` operation can decrypt ciphertext that was encrypted by
|
4218
|
+
# using an AWS KMS CMK in an AWS KMS operation, such as Encrypt or
|
4219
|
+
# GenerateDataKey. It can also decrypt ciphertext that was encrypted by
|
4220
|
+
# using the public key of an asymmetric CMK outside of AWS KMS. However,
|
4221
|
+
# it cannot decrypt ciphertext produced by other libraries, such as the
|
4222
|
+
# [AWS Encryption SDK][1] or [Amazon S3 client-side encryption][2].
|
4223
|
+
# These libraries return a ciphertext format that is incompatible with
|
4224
|
+
# AWS KMS.
|
4225
|
+
#
|
4226
|
+
# When you use the `ReEncrypt` operation, you need to provide
|
4227
|
+
# information for the decrypt operation and the subsequent encrypt
|
4228
|
+
# operation.
|
3348
4229
|
#
|
4230
|
+
# * If your ciphertext was encrypted under an asymmetric CMK, you must
|
4231
|
+
# identify the *source CMK*, that is, the CMK that encrypted the
|
4232
|
+
# ciphertext. You must also supply the encryption algorithm that was
|
4233
|
+
# used. This information is required to decrypt the data.
|
4234
|
+
#
|
4235
|
+
# * It is optional, but you can specify a source CMK even when the
|
4236
|
+
# ciphertext was encrypted under a symmetric CMK. This ensures that
|
4237
|
+
# the ciphertext is decrypted only by using a particular CMK. If the
|
4238
|
+
# CMK that you specify cannot decrypt the ciphertext, the `ReEncrypt`
|
4239
|
+
# operation fails.
|
4240
|
+
#
|
4241
|
+
# * To reencrypt the data, you must specify the *destination CMK*, that
|
4242
|
+
# is, the CMK that re-encrypts the data after it is decrypted. You can
|
4243
|
+
# select a symmetric or asymmetric CMK. If the destination CMK is an
|
4244
|
+
# asymmetric CMK, you must also provide the encryption algorithm. The
|
4245
|
+
# algorithm that you choose must be compatible with the CMK.
|
4246
|
+
#
|
4247
|
+
# When you use an asymmetric CMK to encrypt or reencrypt data, be sure
|
4248
|
+
# to record the CMK and encryption algorithm that you choose. You will
|
4249
|
+
# be required to provide the same CMK and encryption algorithm when
|
4250
|
+
# you decrypt the data. If the CMK and algorithm do not match the
|
4251
|
+
# values used to encrypt the data, the decrypt operation fails.
|
4252
|
+
#
|
4253
|
+
# You are not required to supply the CMK ID and encryption algorithm
|
4254
|
+
# when you decrypt with symmetric CMKs because AWS KMS stores this
|
4255
|
+
# information in the ciphertext blob. AWS KMS cannot store metadata in
|
4256
|
+
# ciphertext generated with asymmetric keys. The standard format for
|
4257
|
+
# asymmetric key ciphertext does not include configurable fields.
|
4258
|
+
#
|
4259
|
+
# Unlike other AWS KMS API operations, `ReEncrypt` callers must have two
|
4260
|
+
# permissions:
|
4261
|
+
#
|
4262
|
+
# * `kms:EncryptFrom` permission on the source CMK
|
4263
|
+
#
|
4264
|
+
# * `kms:EncryptTo` permission on the destination CMK
|
4265
|
+
#
|
4266
|
+
# To permit reencryption from
|
4267
|
+
#
|
4268
|
+
# or to a CMK, include the `"kms:ReEncrypt*"` permission in your [key
|
4269
|
+
# policy][3]. This permission is automatically included in the key
|
4270
|
+
# policy when you use the console to create a CMK. But you must include
|
4271
|
+
# it manually when you create a CMK programmatically or when you use the
|
4272
|
+
# PutKeyPolicy operation set a key policy.
|
4273
|
+
#
|
4274
|
+
# The CMK that you use for this operation must be in a compatible key
|
4275
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
4276
|
+
# Master Key][4] in the *AWS Key Management Service Developer Guide*.
|
3349
4277
|
#
|
3350
4278
|
#
|
3351
|
-
#
|
3352
|
-
# [
|
4279
|
+
#
|
4280
|
+
# [1]: https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/
|
4281
|
+
# [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
|
4282
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html
|
4283
|
+
# [4]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
3353
4284
|
#
|
3354
4285
|
# @option params [required, String, IO] :ciphertext_blob
|
3355
4286
|
# Ciphertext of the data to reencrypt.
|
3356
4287
|
#
|
3357
4288
|
# @option params [Hash<String,String>] :source_encryption_context
|
3358
|
-
#
|
3359
|
-
# the
|
4289
|
+
# Specifies the encryption context to use to decrypt the ciphertext.
|
4290
|
+
# Enter the same encryption context that was used to encrypt the
|
4291
|
+
# ciphertext.
|
4292
|
+
#
|
4293
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
4294
|
+
# that represents additional authenticated data. When you use an
|
4295
|
+
# encryption context to encrypt data, you must specify the same (an
|
4296
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
4297
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
4298
|
+
# but it is highly recommended.
|
4299
|
+
#
|
4300
|
+
# For more information, see [Encryption Context][1] in the *AWS Key
|
4301
|
+
# Management Service Developer Guide*.
|
4302
|
+
#
|
4303
|
+
#
|
4304
|
+
#
|
4305
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
4306
|
+
#
|
4307
|
+
# @option params [String] :source_key_id
|
4308
|
+
# A unique identifier for the CMK that is used to decrypt the ciphertext
|
4309
|
+
# before it reencrypts it using the destination CMK.
|
4310
|
+
#
|
4311
|
+
# This parameter is required only when the ciphertext was encrypted
|
4312
|
+
# under an asymmetric CMK. Otherwise, AWS KMS uses the metadata that it
|
4313
|
+
# adds to the ciphertext blob to determine which CMK was used to encrypt
|
4314
|
+
# the ciphertext. However, you can use this parameter to ensure that a
|
4315
|
+
# particular CMK (of any kind) is used to decrypt the ciphertext before
|
4316
|
+
# it is reencrypted.
|
4317
|
+
#
|
4318
|
+
# If you specify a `KeyId` value, the decrypt part of the `ReEncrypt`
|
4319
|
+
# operation succeeds only if the specified CMK was used to encrypt the
|
4320
|
+
# ciphertext.
|
4321
|
+
#
|
4322
|
+
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
4323
|
+
# name, or alias ARN. When using an alias name, prefix it with
|
4324
|
+
# `"alias/"`.
|
4325
|
+
#
|
4326
|
+
# For example:
|
4327
|
+
#
|
4328
|
+
# * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
|
4329
|
+
#
|
4330
|
+
# * Key ARN:
|
4331
|
+
# `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
4332
|
+
#
|
4333
|
+
# * Alias name: `alias/ExampleAlias`
|
4334
|
+
#
|
4335
|
+
# * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
|
4336
|
+
#
|
4337
|
+
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
4338
|
+
# To get the alias name and alias ARN, use ListAliases.
|
3360
4339
|
#
|
3361
4340
|
# @option params [required, String] :destination_key_id
|
3362
4341
|
# A unique identifier for the CMK that is used to reencrypt the data.
|
4342
|
+
# Specify a symmetric or asymmetric CMK with a `KeyUsage` value of
|
4343
|
+
# `ENCRYPT_DECRYPT`. To find the `KeyUsage` value of a CMK, use the
|
4344
|
+
# DescribeKey operation.
|
3363
4345
|
#
|
3364
4346
|
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
3365
4347
|
# name, or alias ARN. When using an alias name, prefix it with
|
@@ -3381,7 +4363,46 @@ module Aws::KMS
|
|
3381
4363
|
# To get the alias name and alias ARN, use ListAliases.
|
3382
4364
|
#
|
3383
4365
|
# @option params [Hash<String,String>] :destination_encryption_context
|
3384
|
-
#
|
4366
|
+
# Specifies that encryption context to use when the reencrypting the
|
4367
|
+
# data.
|
4368
|
+
#
|
4369
|
+
# A destination encryption context is valid only when the destination
|
4370
|
+
# CMK is a symmetric CMK. The standard ciphertext format for asymmetric
|
4371
|
+
# CMKs does not include fields for metadata.
|
4372
|
+
#
|
4373
|
+
# An *encryption context* is a collection of non-secret key-value pairs
|
4374
|
+
# that represents additional authenticated data. When you use an
|
4375
|
+
# encryption context to encrypt data, you must specify the same (an
|
4376
|
+
# exact case-sensitive match) encryption context to decrypt the data. An
|
4377
|
+
# encryption context is optional when encrypting with a symmetric CMK,
|
4378
|
+
# but it is highly recommended.
|
4379
|
+
#
|
4380
|
+
# For more information, see [Encryption Context][1] in the *AWS Key
|
4381
|
+
# Management Service Developer Guide*.
|
4382
|
+
#
|
4383
|
+
#
|
4384
|
+
#
|
4385
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
|
4386
|
+
#
|
4387
|
+
# @option params [String] :source_encryption_algorithm
|
4388
|
+
# Specifies the encryption algorithm that AWS KMS will use to decrypt
|
4389
|
+
# the ciphertext before it is reencrypted. The default value,
|
4390
|
+
# `SYMMETRIC_DEFAULT`, represents the algorithm used for symmetric CMKs.
|
4391
|
+
#
|
4392
|
+
# Specify the same algorithm that was used to encrypt the ciphertext. If
|
4393
|
+
# you specify a different algorithm, the decrypt attempt fails.
|
4394
|
+
#
|
4395
|
+
# This parameter is required only when the ciphertext was encrypted
|
4396
|
+
# under an asymmetric CMK.
|
4397
|
+
#
|
4398
|
+
# @option params [String] :destination_encryption_algorithm
|
4399
|
+
# Specifies the encryption algorithm that AWS KMS will use to reecrypt
|
4400
|
+
# the data after it has decrypted it. The default value,
|
4401
|
+
# `SYMMETRIC_DEFAULT`, represents the encryption algorithm used for
|
4402
|
+
# symmetric CMKs.
|
4403
|
+
#
|
4404
|
+
# This parameter is required only when the destination CMK is an
|
4405
|
+
# asymmetric CMK.
|
3385
4406
|
#
|
3386
4407
|
# @option params [Array<String>] :grant_tokens
|
3387
4408
|
# A list of grant tokens.
|
@@ -3398,6 +4419,8 @@ module Aws::KMS
|
|
3398
4419
|
# * {Types::ReEncryptResponse#ciphertext_blob #ciphertext_blob} => String
|
3399
4420
|
# * {Types::ReEncryptResponse#source_key_id #source_key_id} => String
|
3400
4421
|
# * {Types::ReEncryptResponse#key_id #key_id} => String
|
4422
|
+
# * {Types::ReEncryptResponse#source_encryption_algorithm #source_encryption_algorithm} => String
|
4423
|
+
# * {Types::ReEncryptResponse#destination_encryption_algorithm #destination_encryption_algorithm} => String
|
3401
4424
|
#
|
3402
4425
|
#
|
3403
4426
|
# @example Example: To reencrypt data
|
@@ -3423,10 +4446,13 @@ module Aws::KMS
|
|
3423
4446
|
# source_encryption_context: {
|
3424
4447
|
# "EncryptionContextKey" => "EncryptionContextValue",
|
3425
4448
|
# },
|
4449
|
+
# source_key_id: "KeyIdType",
|
3426
4450
|
# destination_key_id: "KeyIdType", # required
|
3427
4451
|
# destination_encryption_context: {
|
3428
4452
|
# "EncryptionContextKey" => "EncryptionContextValue",
|
3429
4453
|
# },
|
4454
|
+
# source_encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
|
4455
|
+
# destination_encryption_algorithm: "SYMMETRIC_DEFAULT", # accepts SYMMETRIC_DEFAULT, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256
|
3430
4456
|
# grant_tokens: ["GrantTokenType"],
|
3431
4457
|
# })
|
3432
4458
|
#
|
@@ -3435,6 +4461,8 @@ module Aws::KMS
|
|
3435
4461
|
# resp.ciphertext_blob #=> String
|
3436
4462
|
# resp.source_key_id #=> String
|
3437
4463
|
# resp.key_id #=> String
|
4464
|
+
# resp.source_encryption_algorithm #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
|
4465
|
+
# resp.destination_encryption_algorithm #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256"
|
3438
4466
|
#
|
3439
4467
|
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncrypt AWS API Documentation
|
3440
4468
|
#
|
@@ -3591,9 +4619,9 @@ module Aws::KMS
|
|
3591
4619
|
# [Deleting Customer Master Keys][3] in the *AWS Key Management Service
|
3592
4620
|
# Developer Guide*.
|
3593
4621
|
#
|
3594
|
-
# The
|
3595
|
-
# details, see [How Key State Affects Use of a Customer
|
3596
|
-
# in the *AWS Key Management Service Developer Guide*.
|
4622
|
+
# The CMK that you use for this operation must be in a compatible key
|
4623
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
4624
|
+
# Master Key][4] in the *AWS Key Management Service Developer Guide*.
|
3597
4625
|
#
|
3598
4626
|
#
|
3599
4627
|
#
|
@@ -3665,6 +4693,138 @@ module Aws::KMS
|
|
3665
4693
|
req.send_request(options)
|
3666
4694
|
end
|
3667
4695
|
|
4696
|
+
# Creates a [digital signature][1] for a message or message digest by
|
4697
|
+
# using the private key in an asymmetric CMK. To verify the signature,
|
4698
|
+
# use the Verify operation, or use the public key in the same asymmetric
|
4699
|
+
# CMK outside of AWS KMS. For information about symmetric and asymmetric
|
4700
|
+
# CMKs, see [Using Symmetric and Asymmetric CMKs][2] in the *AWS Key
|
4701
|
+
# Management Service Developer Guide*.
|
4702
|
+
#
|
4703
|
+
# Digital signatures are generated and verified by using asymmetric key
|
4704
|
+
# pair, such as an RSA or ECC pair that is represented by an asymmetric
|
4705
|
+
# customer master key (CMK). The key owner (or an authorized user) uses
|
4706
|
+
# their private key to sign a message. Anyone with the public key can
|
4707
|
+
# verify that the message was signed with that particular private key
|
4708
|
+
# and that the message hasn't changed since it was signed.
|
4709
|
+
#
|
4710
|
+
# To use the `Sign` operation, provide the following information:
|
4711
|
+
#
|
4712
|
+
# * Use the `KeyId` parameter to identify an asymmetric CMK with a
|
4713
|
+
# `KeyUsage` value of `SIGN_VERIFY`. To get the `KeyUsage` value of a
|
4714
|
+
# CMK, use the DescribeKey operation. The caller must have `kms:Sign`
|
4715
|
+
# permission on the CMK.
|
4716
|
+
#
|
4717
|
+
# * Use the `Message` parameter to specify the message or message digest
|
4718
|
+
# to sign. You can submit messages of up to 4096 bytes. To sign a
|
4719
|
+
# larger message, generate a hash digest of the message, and then
|
4720
|
+
# provide the hash digest in the `Message` parameter. To indicate
|
4721
|
+
# whether the message is a full message or a digest, use the
|
4722
|
+
# `MessageType` parameter.
|
4723
|
+
#
|
4724
|
+
# * Choose a signing algorithm that is compatible with the CMK.
|
4725
|
+
#
|
4726
|
+
# When signing a message, be sure to record the CMK and the signing
|
4727
|
+
# algorithm. This information is required to verify the signature.
|
4728
|
+
#
|
4729
|
+
# To verify the signature that this operation generates, use the Verify
|
4730
|
+
# operation. Or use the GetPublicKey operation to download the public
|
4731
|
+
# key and then use the public key to verify the signature outside of AWS
|
4732
|
+
# KMS.
|
4733
|
+
#
|
4734
|
+
# The CMK that you use for this operation must be in a compatible key
|
4735
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
4736
|
+
# Master Key][3] in the *AWS Key Management Service Developer Guide*.
|
4737
|
+
#
|
4738
|
+
#
|
4739
|
+
#
|
4740
|
+
# [1]: https://en.wikipedia.org/wiki/Digital_signature
|
4741
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
|
4742
|
+
# [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
4743
|
+
#
|
4744
|
+
# @option params [required, String] :key_id
|
4745
|
+
# Identifies an asymmetric CMK. AWS KMS uses the private key in the
|
4746
|
+
# asymmetric CMK to sign the message. The `KeyUsage` type of the CMK
|
4747
|
+
# must be `SIGN_VERIFY`. To find the `KeyUsage` of a CMK, use the
|
4748
|
+
# DescribeKey operation.
|
4749
|
+
#
|
4750
|
+
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
4751
|
+
# name, or alias ARN. When using an alias name, prefix it with
|
4752
|
+
# `"alias/"`. To specify a CMK in a different AWS account, you must use
|
4753
|
+
# the key ARN or alias ARN.
|
4754
|
+
#
|
4755
|
+
# For example:
|
4756
|
+
#
|
4757
|
+
# * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
|
4758
|
+
#
|
4759
|
+
# * Key ARN:
|
4760
|
+
# `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
4761
|
+
#
|
4762
|
+
# * Alias name: `alias/ExampleAlias`
|
4763
|
+
#
|
4764
|
+
# * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
|
4765
|
+
#
|
4766
|
+
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
4767
|
+
# To get the alias name and alias ARN, use ListAliases.
|
4768
|
+
#
|
4769
|
+
# @option params [required, String, IO] :message
|
4770
|
+
# Specifies the message or message digest to sign. Messages can be
|
4771
|
+
# 0-4096 bytes. To sign a larger message, provide the message digest.
|
4772
|
+
#
|
4773
|
+
# If you provide a message, AWS KMS generates a hash digest of the
|
4774
|
+
# message and then signs it.
|
4775
|
+
#
|
4776
|
+
# @option params [String] :message_type
|
4777
|
+
# Tells AWS KMS whether the value of the `Message` parameter is a
|
4778
|
+
# message or message digest. To indicate a message, enter `RAW`. To
|
4779
|
+
# indicate a message digest, enter `DIGEST`.
|
4780
|
+
#
|
4781
|
+
# @option params [Array<String>] :grant_tokens
|
4782
|
+
# A list of grant tokens.
|
4783
|
+
#
|
4784
|
+
# For more information, see [Grant Tokens][1] in the *AWS Key Management
|
4785
|
+
# Service Developer Guide*.
|
4786
|
+
#
|
4787
|
+
#
|
4788
|
+
#
|
4789
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
4790
|
+
#
|
4791
|
+
# @option params [required, String] :signing_algorithm
|
4792
|
+
# Specifies the signing algorithm to use when signing the message.
|
4793
|
+
#
|
4794
|
+
# Choose an algorithm that is compatible with the type and size of the
|
4795
|
+
# specified asymmetric CMK.
|
4796
|
+
#
|
4797
|
+
# @return [Types::SignResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
4798
|
+
#
|
4799
|
+
# * {Types::SignResponse#key_id #key_id} => String
|
4800
|
+
# * {Types::SignResponse#signature #signature} => String
|
4801
|
+
# * {Types::SignResponse#signing_algorithm #signing_algorithm} => String
|
4802
|
+
#
|
4803
|
+
# @example Request syntax with placeholder values
|
4804
|
+
#
|
4805
|
+
# resp = client.sign({
|
4806
|
+
# key_id: "KeyIdType", # required
|
4807
|
+
# message: "data", # required
|
4808
|
+
# message_type: "RAW", # accepts RAW, DIGEST
|
4809
|
+
# grant_tokens: ["GrantTokenType"],
|
4810
|
+
# 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
|
4811
|
+
# })
|
4812
|
+
#
|
4813
|
+
# @example Response structure
|
4814
|
+
#
|
4815
|
+
# resp.key_id #=> String
|
4816
|
+
# resp.signature #=> String
|
4817
|
+
# resp.signing_algorithm #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512"
|
4818
|
+
#
|
4819
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Sign AWS API Documentation
|
4820
|
+
#
|
4821
|
+
# @overload sign(params = {})
|
4822
|
+
# @param [Hash] params ({})
|
4823
|
+
def sign(params = {}, options = {})
|
4824
|
+
req = build_request(:sign, params)
|
4825
|
+
req.send_request(options)
|
4826
|
+
end
|
4827
|
+
|
3668
4828
|
# Adds or edits tags for a customer master key (CMK). You cannot perform
|
3669
4829
|
# this operation on a CMK in a different AWS account.
|
3670
4830
|
#
|
@@ -3679,9 +4839,9 @@ module Aws::KMS
|
|
3679
4839
|
# see [User-Defined Tag Restrictions][1] in the *AWS Billing and Cost
|
3680
4840
|
# Management User Guide*.
|
3681
4841
|
#
|
3682
|
-
# The
|
3683
|
-
# details, see [How Key State Affects Use of a Customer
|
3684
|
-
# in the *AWS Key Management Service Developer Guide*.
|
4842
|
+
# The CMK that you use for this operation must be in a compatible key
|
4843
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
4844
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
3685
4845
|
#
|
3686
4846
|
#
|
3687
4847
|
#
|
@@ -3750,9 +4910,9 @@ module Aws::KMS
|
|
3750
4910
|
# To remove a tag, specify the tag key. To change the tag value of an
|
3751
4911
|
# existing tag key, use TagResource.
|
3752
4912
|
#
|
3753
|
-
# The
|
3754
|
-
# details, see [How Key State Affects Use of a Customer
|
3755
|
-
# in the *AWS Key Management Service Developer Guide*.
|
4913
|
+
# The CMK that you use for this operation must be in a compatible key
|
4914
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
4915
|
+
# Master Key][1] in the *AWS Key Management Service Developer Guide*.
|
3756
4916
|
#
|
3757
4917
|
#
|
3758
4918
|
#
|
@@ -3806,14 +4966,22 @@ module Aws::KMS
|
|
3806
4966
|
req.send_request(options)
|
3807
4967
|
end
|
3808
4968
|
|
3809
|
-
# Associates an existing alias with a different customer master
|
3810
|
-
# (CMK). Each
|
3811
|
-
#
|
4969
|
+
# Associates an existing AWS KMS alias with a different customer master
|
4970
|
+
# key (CMK). Each alias is associated with only one CMK at a time,
|
4971
|
+
# although a CMK can have multiple aliases. The alias and the CMK must
|
4972
|
+
# be in the same AWS account and region. You cannot perform this
|
3812
4973
|
# operation on an alias in a different AWS account.
|
3813
4974
|
#
|
3814
|
-
#
|
3815
|
-
#
|
3816
|
-
#
|
4975
|
+
# The current and new CMK must be the same type (both symmetric or both
|
4976
|
+
# asymmetric), and they must have the same key usage (`ENCRYPT_DECRYPT`
|
4977
|
+
# or `SIGN_VERIFY`). This restriction prevents errors in code that uses
|
4978
|
+
# aliases. If you must assign an alias to a different type of CMK, use
|
4979
|
+
# DeleteAlias to delete the old alias and CreateAlias to create a new
|
4980
|
+
# alias.
|
4981
|
+
#
|
4982
|
+
# You cannot use `UpdateAlias` to change an alias name. To change an
|
4983
|
+
# alias name, use DeleteAlias to delete the old alias and CreateAlias to
|
4984
|
+
# create a new alias.
|
3817
4985
|
#
|
3818
4986
|
# Because an alias is not a property of a CMK, you can create, update,
|
3819
4987
|
# and delete the aliases of a CMK without affecting the CMK. Also,
|
@@ -3821,29 +4989,28 @@ module Aws::KMS
|
|
3821
4989
|
# To get the aliases of all CMKs in the account, use the ListAliases
|
3822
4990
|
# operation.
|
3823
4991
|
#
|
3824
|
-
# The
|
3825
|
-
#
|
3826
|
-
#
|
3827
|
-
# cannot begin with `alias/aws/`. The `alias/aws/` prefix is reserved
|
3828
|
-
# for [AWS managed CMKs][1].
|
4992
|
+
# The CMK that you use for this operation must be in a compatible key
|
4993
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
4994
|
+
# Master Key][1] in the *AWS Key Management Service Developer Guide*.
|
3829
4995
|
#
|
3830
|
-
# The result of this operation varies with the key state of the CMK. For
|
3831
|
-
# details, see [How Key State Affects Use of a Customer Master Key][2]
|
3832
|
-
# in the *AWS Key Management Service Developer Guide*.
|
3833
4996
|
#
|
3834
4997
|
#
|
3835
|
-
#
|
3836
|
-
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
|
3837
|
-
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
4998
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
3838
4999
|
#
|
3839
5000
|
# @option params [required, String] :alias_name
|
3840
|
-
#
|
3841
|
-
# `alias/` followed by the alias name, such as
|
5001
|
+
# Identifies the alias that is changing its CMK. This value must begin
|
5002
|
+
# with `alias/` followed by the alias name, such as
|
5003
|
+
# `alias/ExampleAlias`. You cannot use UpdateAlias to change the alias
|
5004
|
+
# name.
|
3842
5005
|
#
|
3843
5006
|
# @option params [required, String] :target_key_id
|
3844
|
-
#
|
3845
|
-
#
|
3846
|
-
#
|
5007
|
+
# Identifies the CMK to associate with the alias. When the update
|
5008
|
+
# operation completes, the alias will point to this CMK.
|
5009
|
+
#
|
5010
|
+
# The CMK must be in the same AWS account and Region as the alias. Also,
|
5011
|
+
# the new target CMK must be the same type as the current target CMK
|
5012
|
+
# (both symmetric or both asymmetric) and they must have the same key
|
5013
|
+
# usage.
|
3847
5014
|
#
|
3848
5015
|
# Specify the key ID or the Amazon Resource Name (ARN) of the CMK.
|
3849
5016
|
#
|
@@ -3994,9 +5161,9 @@ module Aws::KMS
|
|
3994
5161
|
#
|
3995
5162
|
# You cannot perform this operation on a CMK in a different AWS account.
|
3996
5163
|
#
|
3997
|
-
# The
|
3998
|
-
# details, see [How Key State Affects Use of a Customer
|
3999
|
-
# in the *AWS Key Management Service Developer Guide*.
|
5164
|
+
# The CMK that you use for this operation must be in a compatible key
|
5165
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
5166
|
+
# Master Key][1] in the *AWS Key Management Service Developer Guide*.
|
4000
5167
|
#
|
4001
5168
|
#
|
4002
5169
|
#
|
@@ -4047,6 +5214,138 @@ module Aws::KMS
|
|
4047
5214
|
req.send_request(options)
|
4048
5215
|
end
|
4049
5216
|
|
5217
|
+
# Verifies a digital signature that was generated by the Sign operation.
|
5218
|
+
# This operation requires an asymmetric CMK with a `KeyUsage` value of
|
5219
|
+
# `SIGN_VERIFY`.
|
5220
|
+
#
|
5221
|
+
#
|
5222
|
+
#
|
5223
|
+
# Verification confirms that an authorized user signed the message with
|
5224
|
+
# the specified key and signing algorithm, and the message hasn't
|
5225
|
+
# changed since it was signed. A digital signature is generated by using
|
5226
|
+
# the private key in an asymmetric CMK. The signature is verified by
|
5227
|
+
# using the public key in the same asymmetric CMK. For information about
|
5228
|
+
# symmetric and asymmetric CMKs, see [Using Symmetric and Asymmetric
|
5229
|
+
# CMKs][1] in the *AWS Key Management Service Developer Guide*.
|
5230
|
+
#
|
5231
|
+
# To verify a digital signature, you can use the `Verify` operation.
|
5232
|
+
# Specify the same asymmetric CMK that was used by the `Sign` operation
|
5233
|
+
# to generate the digital signature.
|
5234
|
+
#
|
5235
|
+
# You can also verify the digital signature by using the public key of
|
5236
|
+
# the CMK outside of AWS KMS. Use the GetPublicKey operation to download
|
5237
|
+
# the public key in the asymmetric CMK and then use the public key to
|
5238
|
+
# verify the signature outside of AWS KMS.
|
5239
|
+
#
|
5240
|
+
# The advantage of using the `Verify` operation is that it is performed
|
5241
|
+
# within AWS KMS. As a result, it's easy to call, the operation is
|
5242
|
+
# performed within the FIPS boundary, it is logged in AWS CloudTrail,
|
5243
|
+
# and you can use key policy and IAM policy to determine who is
|
5244
|
+
# authorized to use the CMK to verify signatures.
|
5245
|
+
#
|
5246
|
+
# The result of the `Verify` operation, which is represented by its HTTP
|
5247
|
+
# status code, does not indicate whether the signature verification
|
5248
|
+
# succeeded or failed. To determine whether the signature was verified,
|
5249
|
+
# see the `SignatureValid` field in the response.
|
5250
|
+
#
|
5251
|
+
# The CMK that you use for this operation must be in a compatible key
|
5252
|
+
# state. For details, see [How Key State Affects Use of a Customer
|
5253
|
+
# Master Key][2] in the *AWS Key Management Service Developer Guide*.
|
5254
|
+
#
|
5255
|
+
#
|
5256
|
+
#
|
5257
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
|
5258
|
+
# [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
|
5259
|
+
#
|
5260
|
+
# @option params [required, String] :key_id
|
5261
|
+
# Identifies the asymmetric CMK that will be used to verify the
|
5262
|
+
# signature. This must be the same CMK that was used to generate the
|
5263
|
+
# signature. If you specify a different CMK, the value of the
|
5264
|
+
# `SignatureValid` field in the response will be `False`.
|
5265
|
+
#
|
5266
|
+
# To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias
|
5267
|
+
# name, or alias ARN. When using an alias name, prefix it with
|
5268
|
+
# `"alias/"`. To specify a CMK in a different AWS account, you must use
|
5269
|
+
# the key ARN or alias ARN.
|
5270
|
+
#
|
5271
|
+
# For example:
|
5272
|
+
#
|
5273
|
+
# * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
|
5274
|
+
#
|
5275
|
+
# * Key ARN:
|
5276
|
+
# `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
5277
|
+
#
|
5278
|
+
# * Alias name: `alias/ExampleAlias`
|
5279
|
+
#
|
5280
|
+
# * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
|
5281
|
+
#
|
5282
|
+
# To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.
|
5283
|
+
# To get the alias name and alias ARN, use ListAliases.
|
5284
|
+
#
|
5285
|
+
# @option params [required, String, IO] :message
|
5286
|
+
# Specifies the message that was signed, or a hash digest of that
|
5287
|
+
# message. Messages can be 0-4096 bytes. To verify a larger message,
|
5288
|
+
# provide a hash digest of the message.
|
5289
|
+
#
|
5290
|
+
# If the digest of the message specified here is different from the
|
5291
|
+
# message digest that was signed, the `SignatureValid` value in the
|
5292
|
+
# response will be `False`.
|
5293
|
+
#
|
5294
|
+
# @option params [String] :message_type
|
5295
|
+
# Tells AWS KMS whether the value of the `Message` parameter is a
|
5296
|
+
# message or message digest. To indicate a message, enter `RAW`. To
|
5297
|
+
# indicate a message digest, enter `DIGEST`.
|
5298
|
+
#
|
5299
|
+
# @option params [required, String, IO] :signature
|
5300
|
+
# The signature that the `Sign` operation generated.
|
5301
|
+
#
|
5302
|
+
# @option params [required, String] :signing_algorithm
|
5303
|
+
# The signing algorithm that was used to sign the message. If you submit
|
5304
|
+
# a different algorithm, the value of the `SignatureValid` field in the
|
5305
|
+
# response will be `False`.
|
5306
|
+
#
|
5307
|
+
# @option params [Array<String>] :grant_tokens
|
5308
|
+
# A list of grant tokens.
|
5309
|
+
#
|
5310
|
+
# For more information, see [Grant Tokens][1] in the *AWS Key Management
|
5311
|
+
# Service Developer Guide*.
|
5312
|
+
#
|
5313
|
+
#
|
5314
|
+
#
|
5315
|
+
# [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant_token
|
5316
|
+
#
|
5317
|
+
# @return [Types::VerifyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
5318
|
+
#
|
5319
|
+
# * {Types::VerifyResponse#key_id #key_id} => String
|
5320
|
+
# * {Types::VerifyResponse#signature_valid #signature_valid} => Boolean
|
5321
|
+
# * {Types::VerifyResponse#signing_algorithm #signing_algorithm} => String
|
5322
|
+
#
|
5323
|
+
# @example Request syntax with placeholder values
|
5324
|
+
#
|
5325
|
+
# resp = client.verify({
|
5326
|
+
# key_id: "KeyIdType", # required
|
5327
|
+
# message: "data", # required
|
5328
|
+
# message_type: "RAW", # accepts RAW, DIGEST
|
5329
|
+
# signature: "data", # required
|
5330
|
+
# 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
|
5331
|
+
# grant_tokens: ["GrantTokenType"],
|
5332
|
+
# })
|
5333
|
+
#
|
5334
|
+
# @example Response structure
|
5335
|
+
#
|
5336
|
+
# resp.key_id #=> String
|
5337
|
+
# resp.signature_valid #=> Boolean
|
5338
|
+
# resp.signing_algorithm #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512"
|
5339
|
+
#
|
5340
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Verify AWS API Documentation
|
5341
|
+
#
|
5342
|
+
# @overload verify(params = {})
|
5343
|
+
# @param [Hash] params ({})
|
5344
|
+
def verify(params = {}, options = {})
|
5345
|
+
req = build_request(:verify, params)
|
5346
|
+
req.send_request(options)
|
5347
|
+
end
|
5348
|
+
|
4050
5349
|
# @!endgroup
|
4051
5350
|
|
4052
5351
|
# @param params ({})
|
@@ -4060,7 +5359,7 @@ module Aws::KMS
|
|
4060
5359
|
params: params,
|
4061
5360
|
config: config)
|
4062
5361
|
context[:gem_name] = 'aws-sdk-kms'
|
4063
|
-
context[:gem_version] = '1.
|
5362
|
+
context[:gem_version] = '1.26.0'
|
4064
5363
|
Seahorse::Client::Request.new(handlers, context)
|
4065
5364
|
end
|
4066
5365
|
|