google-cloud-kms-inventory-v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +12 -0
  3. data/AUTHENTICATION.md +149 -0
  4. data/LICENSE.md +201 -0
  5. data/README.md +144 -0
  6. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service/client.rb +406 -0
  7. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service/credentials.rb +49 -0
  8. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service/paths.rb +49 -0
  9. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service/rest/client.rb +359 -0
  10. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service/rest/service_stub.rb +109 -0
  11. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service/rest.rb +54 -0
  12. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service.rb +57 -0
  13. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service_pb.rb +37 -0
  14. data/lib/google/cloud/kms/inventory/v1/key_dashboard_service_services_pb.rb +49 -0
  15. data/lib/google/cloud/kms/inventory/v1/key_tracking_service/client.rb +514 -0
  16. data/lib/google/cloud/kms/inventory/v1/key_tracking_service/credentials.rb +49 -0
  17. data/lib/google/cloud/kms/inventory/v1/key_tracking_service/paths.rb +98 -0
  18. data/lib/google/cloud/kms/inventory/v1/key_tracking_service/rest/client.rb +444 -0
  19. data/lib/google/cloud/kms/inventory/v1/key_tracking_service/rest/service_stub.rb +168 -0
  20. data/lib/google/cloud/kms/inventory/v1/key_tracking_service/rest.rb +55 -0
  21. data/lib/google/cloud/kms/inventory/v1/key_tracking_service.rb +58 -0
  22. data/lib/google/cloud/kms/inventory/v1/key_tracking_service_pb.rb +64 -0
  23. data/lib/google/cloud/kms/inventory/v1/key_tracking_service_services_pb.rb +55 -0
  24. data/lib/google/cloud/kms/inventory/v1/rest.rb +40 -0
  25. data/lib/google/cloud/kms/inventory/v1/version.rb +30 -0
  26. data/lib/google/cloud/kms/inventory/v1.rb +48 -0
  27. data/lib/google-cloud-kms-inventory-v1.rb +21 -0
  28. data/proto_docs/README.md +4 -0
  29. data/proto_docs/google/api/client.rb +318 -0
  30. data/proto_docs/google/api/field_behavior.rb +71 -0
  31. data/proto_docs/google/api/launch_stage.rb +71 -0
  32. data/proto_docs/google/api/resource.rb +222 -0
  33. data/proto_docs/google/cloud/kms/inventory/v1/key_dashboard_service.rb +62 -0
  34. data/proto_docs/google/cloud/kms/inventory/v1/key_tracking_service.rb +200 -0
  35. data/proto_docs/google/cloud/kms/v1/resources.rb +839 -0
  36. data/proto_docs/google/protobuf/duration.rb +98 -0
  37. data/proto_docs/google/protobuf/timestamp.rb +129 -0
  38. data/proto_docs/google/protobuf/wrappers.rb +121 -0
  39. metadata +248 -0
@@ -0,0 +1,839 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2023 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Cloud
22
+ module Kms
23
+ module V1
24
+ # A {::Google::Cloud::Kms::V1::KeyRing KeyRing} is a toplevel logical grouping of
25
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKeys}.
26
+ # @!attribute [r] name
27
+ # @return [::String]
28
+ # Output only. The resource name for the
29
+ # {::Google::Cloud::Kms::V1::KeyRing KeyRing} in the format
30
+ # `projects/*/locations/*/keyRings/*`.
31
+ # @!attribute [r] create_time
32
+ # @return [::Google::Protobuf::Timestamp]
33
+ # Output only. The time at which this {::Google::Cloud::Kms::V1::KeyRing KeyRing}
34
+ # was created.
35
+ class KeyRing
36
+ include ::Google::Protobuf::MessageExts
37
+ extend ::Google::Protobuf::MessageExts::ClassMethods
38
+ end
39
+
40
+ # A {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} represents a logical key that
41
+ # can be used for cryptographic operations.
42
+ #
43
+ # A {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} is made up of zero or more
44
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion versions}, which represent the actual
45
+ # key material used in cryptographic operations.
46
+ # @!attribute [r] name
47
+ # @return [::String]
48
+ # Output only. The resource name for this
49
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} in the format
50
+ # `projects/*/locations/*/keyRings/*/cryptoKeys/*`.
51
+ # @!attribute [r] primary
52
+ # @return [::Google::Cloud::Kms::V1::CryptoKeyVersion]
53
+ # Output only. A copy of the "primary"
54
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} that will be used
55
+ # by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
56
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} is given in
57
+ # [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
58
+ #
59
+ # The {::Google::Cloud::Kms::V1::CryptoKey CryptoKey}'s primary version can be
60
+ # updated via
61
+ # [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
62
+ #
63
+ # Keys with {::Google::Cloud::Kms::V1::CryptoKey#purpose purpose}
64
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ENCRYPT_DECRYPT ENCRYPT_DECRYPT}
65
+ # may have a primary. For other keys, this field will be omitted.
66
+ # @!attribute [rw] purpose
67
+ # @return [::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose]
68
+ # Immutable. The immutable purpose of this
69
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKey}.
70
+ # @!attribute [r] create_time
71
+ # @return [::Google::Protobuf::Timestamp]
72
+ # Output only. The time at which this
73
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} was created.
74
+ # @!attribute [rw] next_rotation_time
75
+ # @return [::Google::Protobuf::Timestamp]
76
+ # At {::Google::Cloud::Kms::V1::CryptoKey#next_rotation_time next_rotation_time},
77
+ # the Key Management Service will automatically:
78
+ #
79
+ # 1. Create a new version of this {::Google::Cloud::Kms::V1::CryptoKey CryptoKey}.
80
+ # 2. Mark the new version as primary.
81
+ #
82
+ # Key rotations performed manually via
83
+ # [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
84
+ # and
85
+ # [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
86
+ # do not affect
87
+ # {::Google::Cloud::Kms::V1::CryptoKey#next_rotation_time next_rotation_time}.
88
+ #
89
+ # Keys with {::Google::Cloud::Kms::V1::CryptoKey#purpose purpose}
90
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ENCRYPT_DECRYPT ENCRYPT_DECRYPT}
91
+ # support automatic rotation. For other keys, this field must be omitted.
92
+ # @!attribute [rw] rotation_period
93
+ # @return [::Google::Protobuf::Duration]
94
+ # {::Google::Cloud::Kms::V1::CryptoKey#next_rotation_time next_rotation_time}
95
+ # will be advanced by this period when the service automatically rotates a
96
+ # key. Must be at least 24 hours and at most 876,000 hours.
97
+ #
98
+ # If {::Google::Cloud::Kms::V1::CryptoKey#rotation_period rotation_period} is
99
+ # set,
100
+ # {::Google::Cloud::Kms::V1::CryptoKey#next_rotation_time next_rotation_time}
101
+ # must also be set.
102
+ #
103
+ # Keys with {::Google::Cloud::Kms::V1::CryptoKey#purpose purpose}
104
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ENCRYPT_DECRYPT ENCRYPT_DECRYPT}
105
+ # support automatic rotation. For other keys, this field must be omitted.
106
+ # @!attribute [rw] version_template
107
+ # @return [::Google::Cloud::Kms::V1::CryptoKeyVersionTemplate]
108
+ # A template describing settings for new
109
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} instances. The
110
+ # properties of new {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}
111
+ # instances created by either
112
+ # [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
113
+ # or auto-rotation are controlled by this template.
114
+ # @!attribute [rw] labels
115
+ # @return [::Google::Protobuf::Map{::String => ::String}]
116
+ # Labels with user-defined metadata. For more information, see
117
+ # [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
118
+ # @!attribute [rw] import_only
119
+ # @return [::Boolean]
120
+ # Immutable. Whether this key may contain imported versions only.
121
+ # @!attribute [rw] destroy_scheduled_duration
122
+ # @return [::Google::Protobuf::Duration]
123
+ # Immutable. The period of time that versions of this key spend in the
124
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::DESTROY_SCHEDULED DESTROY_SCHEDULED}
125
+ # state before transitioning to
126
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::DESTROYED DESTROYED}.
127
+ # If not specified at creation time, the default duration is 24 hours.
128
+ # @!attribute [rw] crypto_key_backend
129
+ # @return [::String]
130
+ # Immutable. The resource name of the backend environment where the key
131
+ # material for all {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersions}
132
+ # associated with this {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} reside and
133
+ # where all related cryptographic operations are performed. Only applicable
134
+ # if {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersions} have a
135
+ # {::Google::Cloud::Kms::V1::ProtectionLevel ProtectionLevel} of
136
+ # [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
137
+ # resource name in the format `projects/*/locations/*/ekmConnections/*`.
138
+ # Note, this list is non-exhaustive and may apply to additional
139
+ # {::Google::Cloud::Kms::V1::ProtectionLevel ProtectionLevels} in the future.
140
+ class CryptoKey
141
+ include ::Google::Protobuf::MessageExts
142
+ extend ::Google::Protobuf::MessageExts::ClassMethods
143
+
144
+ # @!attribute [rw] key
145
+ # @return [::String]
146
+ # @!attribute [rw] value
147
+ # @return [::String]
148
+ class LabelsEntry
149
+ include ::Google::Protobuf::MessageExts
150
+ extend ::Google::Protobuf::MessageExts::ClassMethods
151
+ end
152
+
153
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose CryptoKeyPurpose}
154
+ # describes the cryptographic capabilities of a
155
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKey}. A given key can only be used
156
+ # for the operations allowed by its purpose. For more information, see [Key
157
+ # purposes](https://cloud.google.com/kms/docs/algorithms#key_purposes).
158
+ module CryptoKeyPurpose
159
+ # Not specified.
160
+ CRYPTO_KEY_PURPOSE_UNSPECIFIED = 0
161
+
162
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKeys} with this purpose may be used
163
+ # with [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] and
164
+ # [Decrypt][google.cloud.kms.v1.KeyManagementService.Decrypt].
165
+ ENCRYPT_DECRYPT = 1
166
+
167
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKeys} with this purpose may be used
168
+ # with
169
+ # [AsymmetricSign][google.cloud.kms.v1.KeyManagementService.AsymmetricSign]
170
+ # and
171
+ # [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey].
172
+ ASYMMETRIC_SIGN = 5
173
+
174
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKeys} with this purpose may be used
175
+ # with
176
+ # [AsymmetricDecrypt][google.cloud.kms.v1.KeyManagementService.AsymmetricDecrypt]
177
+ # and
178
+ # [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey].
179
+ ASYMMETRIC_DECRYPT = 6
180
+
181
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKeys} with this purpose may be used
182
+ # with [MacSign][google.cloud.kms.v1.KeyManagementService.MacSign].
183
+ MAC = 9
184
+ end
185
+ end
186
+
187
+ # A {::Google::Cloud::Kms::V1::CryptoKeyVersionTemplate CryptoKeyVersionTemplate}
188
+ # specifies the properties to use when creating a new
189
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}, either manually
190
+ # with
191
+ # [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
192
+ # or automatically as a result of auto-rotation.
193
+ # @!attribute [rw] protection_level
194
+ # @return [::Google::Cloud::Kms::V1::ProtectionLevel]
195
+ # {::Google::Cloud::Kms::V1::ProtectionLevel ProtectionLevel} to use when creating
196
+ # a {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} based on this
197
+ # template. Immutable. Defaults to
198
+ # {::Google::Cloud::Kms::V1::ProtectionLevel::SOFTWARE SOFTWARE}.
199
+ # @!attribute [rw] algorithm
200
+ # @return [::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm]
201
+ # Required.
202
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm Algorithm}
203
+ # to use when creating a
204
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} based on this
205
+ # template.
206
+ #
207
+ # For backwards compatibility, GOOGLE_SYMMETRIC_ENCRYPTION is implied if both
208
+ # this field is omitted and
209
+ # {::Google::Cloud::Kms::V1::CryptoKey#purpose CryptoKey.purpose} is
210
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ENCRYPT_DECRYPT ENCRYPT_DECRYPT}.
211
+ class CryptoKeyVersionTemplate
212
+ include ::Google::Protobuf::MessageExts
213
+ extend ::Google::Protobuf::MessageExts::ClassMethods
214
+ end
215
+
216
+ # Contains an HSM-generated attestation about a key operation. For more
217
+ # information, see [Verifying attestations]
218
+ # (https://cloud.google.com/kms/docs/attest-key).
219
+ # @!attribute [r] format
220
+ # @return [::Google::Cloud::Kms::V1::KeyOperationAttestation::AttestationFormat]
221
+ # Output only. The format of the attestation data.
222
+ # @!attribute [r] content
223
+ # @return [::String]
224
+ # Output only. The attestation data provided by the HSM when the key
225
+ # operation was performed.
226
+ # @!attribute [r] cert_chains
227
+ # @return [::Google::Cloud::Kms::V1::KeyOperationAttestation::CertificateChains]
228
+ # Output only. The certificate chains needed to validate the attestation
229
+ class KeyOperationAttestation
230
+ include ::Google::Protobuf::MessageExts
231
+ extend ::Google::Protobuf::MessageExts::ClassMethods
232
+
233
+ # Certificate chains needed to verify the attestation.
234
+ # Certificates in chains are PEM-encoded and are ordered based on
235
+ # https://tools.ietf.org/html/rfc5246#section-7.4.2.
236
+ # @!attribute [rw] cavium_certs
237
+ # @return [::Array<::String>]
238
+ # Cavium certificate chain corresponding to the attestation.
239
+ # @!attribute [rw] google_card_certs
240
+ # @return [::Array<::String>]
241
+ # Google card certificate chain corresponding to the attestation.
242
+ # @!attribute [rw] google_partition_certs
243
+ # @return [::Array<::String>]
244
+ # Google partition certificate chain corresponding to the attestation.
245
+ class CertificateChains
246
+ include ::Google::Protobuf::MessageExts
247
+ extend ::Google::Protobuf::MessageExts::ClassMethods
248
+ end
249
+
250
+ # Attestation formats provided by the HSM.
251
+ module AttestationFormat
252
+ # Not specified.
253
+ ATTESTATION_FORMAT_UNSPECIFIED = 0
254
+
255
+ # Cavium HSM attestation compressed with gzip. Note that this format is
256
+ # defined by Cavium and subject to change at any time.
257
+ #
258
+ # See
259
+ # https://www.marvell.com/products/security-solutions/nitrox-hs-adapters/software-key-attestation.html.
260
+ CAVIUM_V1_COMPRESSED = 3
261
+
262
+ # Cavium HSM attestation V2 compressed with gzip. This is a new format
263
+ # introduced in Cavium's version 3.2-08.
264
+ CAVIUM_V2_COMPRESSED = 4
265
+ end
266
+ end
267
+
268
+ # A {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} represents an
269
+ # individual cryptographic key, and the associated key material.
270
+ #
271
+ # An
272
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::ENABLED ENABLED}
273
+ # version can be used for cryptographic operations.
274
+ #
275
+ # For security reasons, the raw cryptographic key material represented by a
276
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} can never be viewed
277
+ # or exported. It can only be used to encrypt, decrypt, or sign data when an
278
+ # authorized user or application invokes Cloud KMS.
279
+ # @!attribute [r] name
280
+ # @return [::String]
281
+ # Output only. The resource name for this
282
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} in the format
283
+ # `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.
284
+ # @!attribute [rw] state
285
+ # @return [::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState]
286
+ # The current state of the
287
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}.
288
+ # @!attribute [r] protection_level
289
+ # @return [::Google::Cloud::Kms::V1::ProtectionLevel]
290
+ # Output only. The {::Google::Cloud::Kms::V1::ProtectionLevel ProtectionLevel}
291
+ # describing how crypto operations are performed with this
292
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}.
293
+ # @!attribute [r] algorithm
294
+ # @return [::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm]
295
+ # Output only. The
296
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm CryptoKeyVersionAlgorithm}
297
+ # that this {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}
298
+ # supports.
299
+ # @!attribute [r] attestation
300
+ # @return [::Google::Cloud::Kms::V1::KeyOperationAttestation]
301
+ # Output only. Statement that was generated and signed by the HSM at key
302
+ # creation time. Use this statement to verify attributes of the key as stored
303
+ # on the HSM, independently of Google. Only provided for key versions with
304
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion#protection_level protection_level}
305
+ # {::Google::Cloud::Kms::V1::ProtectionLevel::HSM HSM}.
306
+ # @!attribute [r] create_time
307
+ # @return [::Google::Protobuf::Timestamp]
308
+ # Output only. The time at which this
309
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} was created.
310
+ # @!attribute [r] generate_time
311
+ # @return [::Google::Protobuf::Timestamp]
312
+ # Output only. The time this
313
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}'s key material was
314
+ # generated.
315
+ # @!attribute [r] destroy_time
316
+ # @return [::Google::Protobuf::Timestamp]
317
+ # Output only. The time this
318
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}'s key material is
319
+ # scheduled for destruction. Only present if
320
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion#state state} is
321
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::DESTROY_SCHEDULED DESTROY_SCHEDULED}.
322
+ # @!attribute [r] destroy_event_time
323
+ # @return [::Google::Protobuf::Timestamp]
324
+ # Output only. The time this CryptoKeyVersion's key material was
325
+ # destroyed. Only present if
326
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion#state state} is
327
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::DESTROYED DESTROYED}.
328
+ # @!attribute [r] import_job
329
+ # @return [::String]
330
+ # Output only. The name of the {::Google::Cloud::Kms::V1::ImportJob ImportJob}
331
+ # used in the most recent import of this
332
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}. Only present if
333
+ # the underlying key material was imported.
334
+ # @!attribute [r] import_time
335
+ # @return [::Google::Protobuf::Timestamp]
336
+ # Output only. The time at which this
337
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}'s key material was
338
+ # most recently imported.
339
+ # @!attribute [r] import_failure_reason
340
+ # @return [::String]
341
+ # Output only. The root cause of the most recent import failure. Only present
342
+ # if {::Google::Cloud::Kms::V1::CryptoKeyVersion#state state} is
343
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::IMPORT_FAILED IMPORT_FAILED}.
344
+ # @!attribute [rw] external_protection_level_options
345
+ # @return [::Google::Cloud::Kms::V1::ExternalProtectionLevelOptions]
346
+ # ExternalProtectionLevelOptions stores a group of additional fields for
347
+ # configuring a {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} that
348
+ # are specific to the
349
+ # {::Google::Cloud::Kms::V1::ProtectionLevel::EXTERNAL EXTERNAL} protection level
350
+ # and {::Google::Cloud::Kms::V1::ProtectionLevel::EXTERNAL_VPC EXTERNAL_VPC}
351
+ # protection levels.
352
+ # @!attribute [r] reimport_eligible
353
+ # @return [::Boolean]
354
+ # Output only. Whether or not this key version is eligible for reimport, by
355
+ # being specified as a target in
356
+ # [ImportCryptoKeyVersionRequest.crypto_key_version][google.cloud.kms.v1.ImportCryptoKeyVersionRequest.crypto_key_version].
357
+ class CryptoKeyVersion
358
+ include ::Google::Protobuf::MessageExts
359
+ extend ::Google::Protobuf::MessageExts::ClassMethods
360
+
361
+ # The algorithm of the
362
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}, indicating what
363
+ # parameters must be used for each cryptographic operation.
364
+ #
365
+ # The
366
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm::GOOGLE_SYMMETRIC_ENCRYPTION GOOGLE_SYMMETRIC_ENCRYPTION}
367
+ # algorithm is usable with
368
+ # {::Google::Cloud::Kms::V1::CryptoKey#purpose CryptoKey.purpose}
369
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ENCRYPT_DECRYPT ENCRYPT_DECRYPT}.
370
+ #
371
+ # Algorithms beginning with "RSA_SIGN_" are usable with
372
+ # {::Google::Cloud::Kms::V1::CryptoKey#purpose CryptoKey.purpose}
373
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ASYMMETRIC_SIGN ASYMMETRIC_SIGN}.
374
+ #
375
+ # The fields in the name after "RSA_SIGN_" correspond to the following
376
+ # parameters: padding algorithm, modulus bit length, and digest algorithm.
377
+ #
378
+ # For PSS, the salt length used is equal to the length of digest
379
+ # algorithm. For example,
380
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm::RSA_SIGN_PSS_2048_SHA256 RSA_SIGN_PSS_2048_SHA256}
381
+ # will use PSS with a salt length of 256 bits or 32 bytes.
382
+ #
383
+ # Algorithms beginning with "RSA_DECRYPT_" are usable with
384
+ # {::Google::Cloud::Kms::V1::CryptoKey#purpose CryptoKey.purpose}
385
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ASYMMETRIC_DECRYPT ASYMMETRIC_DECRYPT}.
386
+ #
387
+ # The fields in the name after "RSA_DECRYPT_" correspond to the following
388
+ # parameters: padding algorithm, modulus bit length, and digest algorithm.
389
+ #
390
+ # Algorithms beginning with "EC_SIGN_" are usable with
391
+ # {::Google::Cloud::Kms::V1::CryptoKey#purpose CryptoKey.purpose}
392
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::ASYMMETRIC_SIGN ASYMMETRIC_SIGN}.
393
+ #
394
+ # The fields in the name after "EC_SIGN_" correspond to the following
395
+ # parameters: elliptic curve, digest algorithm.
396
+ #
397
+ # Algorithms beginning with "HMAC_" are usable with
398
+ # {::Google::Cloud::Kms::V1::CryptoKey#purpose CryptoKey.purpose}
399
+ # {::Google::Cloud::Kms::V1::CryptoKey::CryptoKeyPurpose::MAC MAC}.
400
+ #
401
+ # The suffix following "HMAC_" corresponds to the hash algorithm being used
402
+ # (eg. SHA256).
403
+ #
404
+ # For more information, see [Key purposes and algorithms]
405
+ # (https://cloud.google.com/kms/docs/algorithms).
406
+ module CryptoKeyVersionAlgorithm
407
+ # Not specified.
408
+ CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED = 0
409
+
410
+ # Creates symmetric encryption keys.
411
+ GOOGLE_SYMMETRIC_ENCRYPTION = 1
412
+
413
+ # RSASSA-PSS 2048 bit key with a SHA256 digest.
414
+ RSA_SIGN_PSS_2048_SHA256 = 2
415
+
416
+ # RSASSA-PSS 3072 bit key with a SHA256 digest.
417
+ RSA_SIGN_PSS_3072_SHA256 = 3
418
+
419
+ # RSASSA-PSS 4096 bit key with a SHA256 digest.
420
+ RSA_SIGN_PSS_4096_SHA256 = 4
421
+
422
+ # RSASSA-PSS 4096 bit key with a SHA512 digest.
423
+ RSA_SIGN_PSS_4096_SHA512 = 15
424
+
425
+ # RSASSA-PKCS1-v1_5 with a 2048 bit key and a SHA256 digest.
426
+ RSA_SIGN_PKCS1_2048_SHA256 = 5
427
+
428
+ # RSASSA-PKCS1-v1_5 with a 3072 bit key and a SHA256 digest.
429
+ RSA_SIGN_PKCS1_3072_SHA256 = 6
430
+
431
+ # RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA256 digest.
432
+ RSA_SIGN_PKCS1_4096_SHA256 = 7
433
+
434
+ # RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA512 digest.
435
+ RSA_SIGN_PKCS1_4096_SHA512 = 16
436
+
437
+ # RSASSA-PKCS1-v1_5 signing without encoding, with a 2048 bit key.
438
+ RSA_SIGN_RAW_PKCS1_2048 = 28
439
+
440
+ # RSASSA-PKCS1-v1_5 signing without encoding, with a 3072 bit key.
441
+ RSA_SIGN_RAW_PKCS1_3072 = 29
442
+
443
+ # RSASSA-PKCS1-v1_5 signing without encoding, with a 4096 bit key.
444
+ RSA_SIGN_RAW_PKCS1_4096 = 30
445
+
446
+ # RSAES-OAEP 2048 bit key with a SHA256 digest.
447
+ RSA_DECRYPT_OAEP_2048_SHA256 = 8
448
+
449
+ # RSAES-OAEP 3072 bit key with a SHA256 digest.
450
+ RSA_DECRYPT_OAEP_3072_SHA256 = 9
451
+
452
+ # RSAES-OAEP 4096 bit key with a SHA256 digest.
453
+ RSA_DECRYPT_OAEP_4096_SHA256 = 10
454
+
455
+ # RSAES-OAEP 4096 bit key with a SHA512 digest.
456
+ RSA_DECRYPT_OAEP_4096_SHA512 = 17
457
+
458
+ # RSAES-OAEP 2048 bit key with a SHA1 digest.
459
+ RSA_DECRYPT_OAEP_2048_SHA1 = 37
460
+
461
+ # RSAES-OAEP 3072 bit key with a SHA1 digest.
462
+ RSA_DECRYPT_OAEP_3072_SHA1 = 38
463
+
464
+ # RSAES-OAEP 4096 bit key with a SHA1 digest.
465
+ RSA_DECRYPT_OAEP_4096_SHA1 = 39
466
+
467
+ # ECDSA on the NIST P-256 curve with a SHA256 digest.
468
+ EC_SIGN_P256_SHA256 = 12
469
+
470
+ # ECDSA on the NIST P-384 curve with a SHA384 digest.
471
+ EC_SIGN_P384_SHA384 = 13
472
+
473
+ # ECDSA on the non-NIST secp256k1 curve. This curve is only supported for
474
+ # HSM protection level.
475
+ EC_SIGN_SECP256K1_SHA256 = 31
476
+
477
+ # HMAC-SHA256 signing with a 256 bit key.
478
+ HMAC_SHA256 = 32
479
+
480
+ # HMAC-SHA1 signing with a 160 bit key.
481
+ HMAC_SHA1 = 33
482
+
483
+ # HMAC-SHA384 signing with a 384 bit key.
484
+ HMAC_SHA384 = 34
485
+
486
+ # HMAC-SHA512 signing with a 512 bit key.
487
+ HMAC_SHA512 = 35
488
+
489
+ # HMAC-SHA224 signing with a 224 bit key.
490
+ HMAC_SHA224 = 36
491
+
492
+ # Algorithm representing symmetric encryption by an external key manager.
493
+ EXTERNAL_SYMMETRIC_ENCRYPTION = 18
494
+ end
495
+
496
+ # The state of a {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion},
497
+ # indicating if it can be used.
498
+ module CryptoKeyVersionState
499
+ # Not specified.
500
+ CRYPTO_KEY_VERSION_STATE_UNSPECIFIED = 0
501
+
502
+ # This version is still being generated. It may not be used, enabled,
503
+ # disabled, or destroyed yet. Cloud KMS will automatically mark this
504
+ # version
505
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::ENABLED ENABLED}
506
+ # as soon as the version is ready.
507
+ PENDING_GENERATION = 5
508
+
509
+ # This version may be used for cryptographic operations.
510
+ ENABLED = 1
511
+
512
+ # This version may not be used, but the key material is still available,
513
+ # and the version can be placed back into the
514
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::ENABLED ENABLED}
515
+ # state.
516
+ DISABLED = 2
517
+
518
+ # This version is destroyed, and the key material is no longer stored.
519
+ # This version may only become
520
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::ENABLED ENABLED}
521
+ # again if this version is
522
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion#reimport_eligible reimport_eligible}
523
+ # and the original key material is reimported with a call to
524
+ # [KeyManagementService.ImportCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.ImportCryptoKeyVersion].
525
+ DESTROYED = 3
526
+
527
+ # This version is scheduled for destruction, and will be destroyed soon.
528
+ # Call
529
+ # [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion]
530
+ # to put it back into the
531
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::DISABLED DISABLED}
532
+ # state.
533
+ DESTROY_SCHEDULED = 4
534
+
535
+ # This version is still being imported. It may not be used, enabled,
536
+ # disabled, or destroyed yet. Cloud KMS will automatically mark this
537
+ # version
538
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionState::ENABLED ENABLED}
539
+ # as soon as the version is ready.
540
+ PENDING_IMPORT = 6
541
+
542
+ # This version was not imported successfully. It may not be used, enabled,
543
+ # disabled, or destroyed. The submitted key material has been discarded.
544
+ # Additional details can be found in
545
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion#import_failure_reason CryptoKeyVersion.import_failure_reason}.
546
+ IMPORT_FAILED = 7
547
+ end
548
+
549
+ # A view for {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}s.
550
+ # Controls the level of detail returned for
551
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersions} in
552
+ # [KeyManagementService.ListCryptoKeyVersions][google.cloud.kms.v1.KeyManagementService.ListCryptoKeyVersions]
553
+ # and
554
+ # [KeyManagementService.ListCryptoKeys][google.cloud.kms.v1.KeyManagementService.ListCryptoKeys].
555
+ module CryptoKeyVersionView
556
+ # Default view for each
557
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}. Does not
558
+ # include the
559
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion#attestation attestation} field.
560
+ CRYPTO_KEY_VERSION_VIEW_UNSPECIFIED = 0
561
+
562
+ # Provides all fields in each
563
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}, including the
564
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion#attestation attestation}.
565
+ FULL = 1
566
+ end
567
+ end
568
+
569
+ # The public key for a given
570
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion}. Obtained via
571
+ # [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey].
572
+ # @!attribute [rw] pem
573
+ # @return [::String]
574
+ # The public key, encoded in PEM format. For more information, see the
575
+ # [RFC 7468](https://tools.ietf.org/html/rfc7468) sections for
576
+ # [General Considerations](https://tools.ietf.org/html/rfc7468#section-2) and
577
+ # [Textual Encoding of Subject Public Key Info]
578
+ # (https://tools.ietf.org/html/rfc7468#section-13).
579
+ # @!attribute [rw] algorithm
580
+ # @return [::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm]
581
+ # The
582
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion::CryptoKeyVersionAlgorithm Algorithm}
583
+ # associated with this key.
584
+ # @!attribute [rw] pem_crc32c
585
+ # @return [::Google::Protobuf::Int64Value]
586
+ # Integrity verification field. A CRC32C checksum of the returned
587
+ # {::Google::Cloud::Kms::V1::PublicKey#pem PublicKey.pem}. An integrity check of
588
+ # {::Google::Cloud::Kms::V1::PublicKey#pem PublicKey.pem} can be performed by
589
+ # computing the CRC32C checksum of
590
+ # {::Google::Cloud::Kms::V1::PublicKey#pem PublicKey.pem} and comparing your
591
+ # results to this field. Discard the response in case of non-matching
592
+ # checksum values, and perform a limited number of retries. A persistent
593
+ # mismatch may indicate an issue in your computation of the CRC32C checksum.
594
+ # Note: This field is defined as int64 for reasons of compatibility across
595
+ # different languages. However, it is a non-negative integer, which will
596
+ # never exceed 2^32-1, and can be safely downconverted to uint32 in languages
597
+ # that support this type.
598
+ #
599
+ # NOTE: This field is in Beta.
600
+ # @!attribute [rw] name
601
+ # @return [::String]
602
+ # The {::Google::Cloud::Kms::V1::CryptoKeyVersion#name name} of the
603
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} public key.
604
+ # Provided here for verification.
605
+ #
606
+ # NOTE: This field is in Beta.
607
+ # @!attribute [rw] protection_level
608
+ # @return [::Google::Cloud::Kms::V1::ProtectionLevel]
609
+ # The {::Google::Cloud::Kms::V1::ProtectionLevel ProtectionLevel} of the
610
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} public key.
611
+ class PublicKey
612
+ include ::Google::Protobuf::MessageExts
613
+ extend ::Google::Protobuf::MessageExts::ClassMethods
614
+ end
615
+
616
+ # An {::Google::Cloud::Kms::V1::ImportJob ImportJob} can be used to create
617
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKeys} and
618
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersions} using pre-existing
619
+ # key material, generated outside of Cloud KMS.
620
+ #
621
+ # When an {::Google::Cloud::Kms::V1::ImportJob ImportJob} is created, Cloud KMS will
622
+ # generate a "wrapping key", which is a public/private key pair. You use the
623
+ # wrapping key to encrypt (also known as wrap) the pre-existing key material to
624
+ # protect it during the import process. The nature of the wrapping key depends
625
+ # on the choice of
626
+ # {::Google::Cloud::Kms::V1::ImportJob#import_method import_method}. When the
627
+ # wrapping key generation is complete, the
628
+ # {::Google::Cloud::Kms::V1::ImportJob#state state} will be set to
629
+ # {::Google::Cloud::Kms::V1::ImportJob::ImportJobState::ACTIVE ACTIVE} and the
630
+ # {::Google::Cloud::Kms::V1::ImportJob#public_key public_key} can be fetched. The
631
+ # fetched public key can then be used to wrap your pre-existing key material.
632
+ #
633
+ # Once the key material is wrapped, it can be imported into a new
634
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} in an existing
635
+ # {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} by calling
636
+ # [ImportCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.ImportCryptoKeyVersion].
637
+ # Multiple {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersions} can be
638
+ # imported with a single {::Google::Cloud::Kms::V1::ImportJob ImportJob}. Cloud KMS
639
+ # uses the private key portion of the wrapping key to unwrap the key material.
640
+ # Only Cloud KMS has access to the private key.
641
+ #
642
+ # An {::Google::Cloud::Kms::V1::ImportJob ImportJob} expires 3 days after it is
643
+ # created. Once expired, Cloud KMS will no longer be able to import or unwrap
644
+ # any key material that was wrapped with the
645
+ # {::Google::Cloud::Kms::V1::ImportJob ImportJob}'s public key.
646
+ #
647
+ # For more information, see
648
+ # [Importing a key](https://cloud.google.com/kms/docs/importing-a-key).
649
+ # @!attribute [r] name
650
+ # @return [::String]
651
+ # Output only. The resource name for this
652
+ # {::Google::Cloud::Kms::V1::ImportJob ImportJob} in the format
653
+ # `projects/*/locations/*/keyRings/*/importJobs/*`.
654
+ # @!attribute [rw] import_method
655
+ # @return [::Google::Cloud::Kms::V1::ImportJob::ImportMethod]
656
+ # Required. Immutable. The wrapping method to be used for incoming key
657
+ # material.
658
+ # @!attribute [rw] protection_level
659
+ # @return [::Google::Cloud::Kms::V1::ProtectionLevel]
660
+ # Required. Immutable. The protection level of the
661
+ # {::Google::Cloud::Kms::V1::ImportJob ImportJob}. This must match the
662
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersionTemplate#protection_level protection_level}
663
+ # of the {::Google::Cloud::Kms::V1::CryptoKey#version_template version_template}
664
+ # on the {::Google::Cloud::Kms::V1::CryptoKey CryptoKey} you attempt to import
665
+ # into.
666
+ # @!attribute [r] create_time
667
+ # @return [::Google::Protobuf::Timestamp]
668
+ # Output only. The time at which this
669
+ # {::Google::Cloud::Kms::V1::ImportJob ImportJob} was created.
670
+ # @!attribute [r] generate_time
671
+ # @return [::Google::Protobuf::Timestamp]
672
+ # Output only. The time this {::Google::Cloud::Kms::V1::ImportJob ImportJob}'s key
673
+ # material was generated.
674
+ # @!attribute [r] expire_time
675
+ # @return [::Google::Protobuf::Timestamp]
676
+ # Output only. The time at which this
677
+ # {::Google::Cloud::Kms::V1::ImportJob ImportJob} is scheduled for expiration and
678
+ # can no longer be used to import key material.
679
+ # @!attribute [r] expire_event_time
680
+ # @return [::Google::Protobuf::Timestamp]
681
+ # Output only. The time this {::Google::Cloud::Kms::V1::ImportJob ImportJob}
682
+ # expired. Only present if {::Google::Cloud::Kms::V1::ImportJob#state state} is
683
+ # {::Google::Cloud::Kms::V1::ImportJob::ImportJobState::EXPIRED EXPIRED}.
684
+ # @!attribute [r] state
685
+ # @return [::Google::Cloud::Kms::V1::ImportJob::ImportJobState]
686
+ # Output only. The current state of the
687
+ # {::Google::Cloud::Kms::V1::ImportJob ImportJob}, indicating if it can be used.
688
+ # @!attribute [r] public_key
689
+ # @return [::Google::Cloud::Kms::V1::ImportJob::WrappingPublicKey]
690
+ # Output only. The public key with which to wrap key material prior to
691
+ # import. Only returned if {::Google::Cloud::Kms::V1::ImportJob#state state} is
692
+ # {::Google::Cloud::Kms::V1::ImportJob::ImportJobState::ACTIVE ACTIVE}.
693
+ # @!attribute [r] attestation
694
+ # @return [::Google::Cloud::Kms::V1::KeyOperationAttestation]
695
+ # Output only. Statement that was generated and signed by the key creator
696
+ # (for example, an HSM) at key creation time. Use this statement to verify
697
+ # attributes of the key as stored on the HSM, independently of Google.
698
+ # Only present if the chosen
699
+ # {::Google::Cloud::Kms::V1::ImportJob::ImportMethod ImportMethod} is one with a
700
+ # protection level of {::Google::Cloud::Kms::V1::ProtectionLevel::HSM HSM}.
701
+ class ImportJob
702
+ include ::Google::Protobuf::MessageExts
703
+ extend ::Google::Protobuf::MessageExts::ClassMethods
704
+
705
+ # The public key component of the wrapping key. For details of the type of
706
+ # key this public key corresponds to, see the
707
+ # {::Google::Cloud::Kms::V1::ImportJob::ImportMethod ImportMethod}.
708
+ # @!attribute [rw] pem
709
+ # @return [::String]
710
+ # The public key, encoded in PEM format. For more information, see the [RFC
711
+ # 7468](https://tools.ietf.org/html/rfc7468) sections for [General
712
+ # Considerations](https://tools.ietf.org/html/rfc7468#section-2) and
713
+ # [Textual Encoding of Subject Public Key Info]
714
+ # (https://tools.ietf.org/html/rfc7468#section-13).
715
+ class WrappingPublicKey
716
+ include ::Google::Protobuf::MessageExts
717
+ extend ::Google::Protobuf::MessageExts::ClassMethods
718
+ end
719
+
720
+ # {::Google::Cloud::Kms::V1::ImportJob::ImportMethod ImportMethod} describes the
721
+ # key wrapping method chosen for this
722
+ # {::Google::Cloud::Kms::V1::ImportJob ImportJob}.
723
+ module ImportMethod
724
+ # Not specified.
725
+ IMPORT_METHOD_UNSPECIFIED = 0
726
+
727
+ # This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping
728
+ # scheme defined in the PKCS #11 standard. In summary, this involves
729
+ # wrapping the raw key with an ephemeral AES key, and wrapping the
730
+ # ephemeral AES key with a 3072 bit RSA key. For more details, see
731
+ # [RSA AES key wrap
732
+ # mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).
733
+ RSA_OAEP_3072_SHA1_AES_256 = 1
734
+
735
+ # This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping
736
+ # scheme defined in the PKCS #11 standard. In summary, this involves
737
+ # wrapping the raw key with an ephemeral AES key, and wrapping the
738
+ # ephemeral AES key with a 4096 bit RSA key. For more details, see
739
+ # [RSA AES key wrap
740
+ # mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).
741
+ RSA_OAEP_4096_SHA1_AES_256 = 2
742
+
743
+ # This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping
744
+ # scheme defined in the PKCS #11 standard. In summary, this involves
745
+ # wrapping the raw key with an ephemeral AES key, and wrapping the
746
+ # ephemeral AES key with a 3072 bit RSA key. For more details, see
747
+ # [RSA AES key wrap
748
+ # mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).
749
+ RSA_OAEP_3072_SHA256_AES_256 = 3
750
+
751
+ # This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping
752
+ # scheme defined in the PKCS #11 standard. In summary, this involves
753
+ # wrapping the raw key with an ephemeral AES key, and wrapping the
754
+ # ephemeral AES key with a 4096 bit RSA key. For more details, see
755
+ # [RSA AES key wrap
756
+ # mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).
757
+ RSA_OAEP_4096_SHA256_AES_256 = 4
758
+
759
+ # This ImportMethod represents RSAES-OAEP with a 3072 bit RSA key. The
760
+ # key material to be imported is wrapped directly with the RSA key. Due
761
+ # to technical limitations of RSA wrapping, this method cannot be used to
762
+ # wrap RSA keys for import.
763
+ RSA_OAEP_3072_SHA256 = 5
764
+
765
+ # This ImportMethod represents RSAES-OAEP with a 4096 bit RSA key. The
766
+ # key material to be imported is wrapped directly with the RSA key. Due
767
+ # to technical limitations of RSA wrapping, this method cannot be used to
768
+ # wrap RSA keys for import.
769
+ RSA_OAEP_4096_SHA256 = 6
770
+ end
771
+
772
+ # The state of the {::Google::Cloud::Kms::V1::ImportJob ImportJob}, indicating if
773
+ # it can be used.
774
+ module ImportJobState
775
+ # Not specified.
776
+ IMPORT_JOB_STATE_UNSPECIFIED = 0
777
+
778
+ # The wrapping key for this job is still being generated. It may not be
779
+ # used. Cloud KMS will automatically mark this job as
780
+ # {::Google::Cloud::Kms::V1::ImportJob::ImportJobState::ACTIVE ACTIVE} as soon as
781
+ # the wrapping key is generated.
782
+ PENDING_GENERATION = 1
783
+
784
+ # This job may be used in
785
+ # [CreateCryptoKey][google.cloud.kms.v1.KeyManagementService.CreateCryptoKey]
786
+ # and
787
+ # [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
788
+ # requests.
789
+ ACTIVE = 2
790
+
791
+ # This job can no longer be used and may not leave this state once entered.
792
+ EXPIRED = 3
793
+ end
794
+ end
795
+
796
+ # ExternalProtectionLevelOptions stores a group of additional fields for
797
+ # configuring a {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} that
798
+ # are specific to the {::Google::Cloud::Kms::V1::ProtectionLevel::EXTERNAL EXTERNAL}
799
+ # protection level and
800
+ # {::Google::Cloud::Kms::V1::ProtectionLevel::EXTERNAL_VPC EXTERNAL_VPC} protection
801
+ # levels.
802
+ # @!attribute [rw] external_key_uri
803
+ # @return [::String]
804
+ # The URI for an external resource that this
805
+ # {::Google::Cloud::Kms::V1::CryptoKeyVersion CryptoKeyVersion} represents.
806
+ # @!attribute [rw] ekm_connection_key_path
807
+ # @return [::String]
808
+ # The path to the external key material on the EKM when using
809
+ # [EkmConnection][google.cloud.kms.v1.EkmConnection] e.g., "v0/my/key". Set
810
+ # this field instead of external_key_uri when using an
811
+ # [EkmConnection][google.cloud.kms.v1.EkmConnection].
812
+ class ExternalProtectionLevelOptions
813
+ include ::Google::Protobuf::MessageExts
814
+ extend ::Google::Protobuf::MessageExts::ClassMethods
815
+ end
816
+
817
+ # {::Google::Cloud::Kms::V1::ProtectionLevel ProtectionLevel} specifies how
818
+ # cryptographic operations are performed. For more information, see [Protection
819
+ # levels] (https://cloud.google.com/kms/docs/algorithms#protection_levels).
820
+ module ProtectionLevel
821
+ # Not specified.
822
+ PROTECTION_LEVEL_UNSPECIFIED = 0
823
+
824
+ # Crypto operations are performed in software.
825
+ SOFTWARE = 1
826
+
827
+ # Crypto operations are performed in a Hardware Security Module.
828
+ HSM = 2
829
+
830
+ # Crypto operations are performed by an external key manager.
831
+ EXTERNAL = 3
832
+
833
+ # Crypto operations are performed in an EKM-over-VPC backend.
834
+ EXTERNAL_VPC = 4
835
+ end
836
+ end
837
+ end
838
+ end
839
+ end