• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2020 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 // Generated by the protocol buffer compiler.  DO NOT EDIT!
17 // source: google/cloud/kms/v1/resources.proto
18 
19 package com.google.cloud.kms.v1;
20 
21 /**
22  *
23  *
24  * <pre>
25  * A [CryptoKey][google.cloud.kms.v1.CryptoKey] represents a logical key that
26  * can be used for cryptographic operations.
27  * A [CryptoKey][google.cloud.kms.v1.CryptoKey] is made up of zero or more
28  * [versions][google.cloud.kms.v1.CryptoKeyVersion], which represent the actual
29  * key material used in cryptographic operations.
30  * </pre>
31  *
32  * Protobuf type {@code google.cloud.kms.v1.CryptoKey}
33  */
34 public final class CryptoKey extends com.google.protobuf.GeneratedMessageV3
35     implements
36     // @@protoc_insertion_point(message_implements:google.cloud.kms.v1.CryptoKey)
37     CryptoKeyOrBuilder {
38   private static final long serialVersionUID = 0L;
39   // Use CryptoKey.newBuilder() to construct.
CryptoKey(com.google.protobuf.GeneratedMessageV3.Builder<?> builder)40   private CryptoKey(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
41     super(builder);
42   }
43 
CryptoKey()44   private CryptoKey() {
45     name_ = "";
46     purpose_ = 0;
47     cryptoKeyBackend_ = "";
48   }
49 
50   @java.lang.Override
51   @SuppressWarnings({"unused"})
newInstance(UnusedPrivateParameter unused)52   protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
53     return new CryptoKey();
54   }
55 
56   @java.lang.Override
getUnknownFields()57   public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
58     return this.unknownFields;
59   }
60 
getDescriptor()61   public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
62     return com.google.cloud.kms.v1.KmsResourcesProto
63         .internal_static_google_cloud_kms_v1_CryptoKey_descriptor;
64   }
65 
66   @SuppressWarnings({"rawtypes"})
67   @java.lang.Override
internalGetMapField(int number)68   protected com.google.protobuf.MapField internalGetMapField(int number) {
69     switch (number) {
70       case 10:
71         return internalGetLabels();
72       default:
73         throw new RuntimeException("Invalid map field number: " + number);
74     }
75   }
76 
77   @java.lang.Override
78   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable()79       internalGetFieldAccessorTable() {
80     return com.google.cloud.kms.v1.KmsResourcesProto
81         .internal_static_google_cloud_kms_v1_CryptoKey_fieldAccessorTable
82         .ensureFieldAccessorsInitialized(
83             com.google.cloud.kms.v1.CryptoKey.class,
84             com.google.cloud.kms.v1.CryptoKey.Builder.class);
85   }
86 
87   /**
88    *
89    *
90    * <pre>
91    * [CryptoKeyPurpose][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose]
92    * describes the cryptographic capabilities of a
93    * [CryptoKey][google.cloud.kms.v1.CryptoKey]. A given key can only be used
94    * for the operations allowed by its purpose. For more information, see [Key
95    * purposes](https://cloud.google.com/kms/docs/algorithms#key_purposes).
96    * </pre>
97    *
98    * Protobuf enum {@code google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose}
99    */
100   public enum CryptoKeyPurpose implements com.google.protobuf.ProtocolMessageEnum {
101     /**
102      *
103      *
104      * <pre>
105      * Not specified.
106      * </pre>
107      *
108      * <code>CRYPTO_KEY_PURPOSE_UNSPECIFIED = 0;</code>
109      */
110     CRYPTO_KEY_PURPOSE_UNSPECIFIED(0),
111     /**
112      *
113      *
114      * <pre>
115      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
116      * with [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] and
117      * [Decrypt][google.cloud.kms.v1.KeyManagementService.Decrypt].
118      * </pre>
119      *
120      * <code>ENCRYPT_DECRYPT = 1;</code>
121      */
122     ENCRYPT_DECRYPT(1),
123     /**
124      *
125      *
126      * <pre>
127      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
128      * with
129      * [AsymmetricSign][google.cloud.kms.v1.KeyManagementService.AsymmetricSign]
130      * and
131      * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey].
132      * </pre>
133      *
134      * <code>ASYMMETRIC_SIGN = 5;</code>
135      */
136     ASYMMETRIC_SIGN(5),
137     /**
138      *
139      *
140      * <pre>
141      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
142      * with
143      * [AsymmetricDecrypt][google.cloud.kms.v1.KeyManagementService.AsymmetricDecrypt]
144      * and
145      * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey].
146      * </pre>
147      *
148      * <code>ASYMMETRIC_DECRYPT = 6;</code>
149      */
150     ASYMMETRIC_DECRYPT(6),
151     /**
152      *
153      *
154      * <pre>
155      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
156      * with [MacSign][google.cloud.kms.v1.KeyManagementService.MacSign].
157      * </pre>
158      *
159      * <code>MAC = 9;</code>
160      */
161     MAC(9),
162     UNRECOGNIZED(-1),
163     ;
164 
165     /**
166      *
167      *
168      * <pre>
169      * Not specified.
170      * </pre>
171      *
172      * <code>CRYPTO_KEY_PURPOSE_UNSPECIFIED = 0;</code>
173      */
174     public static final int CRYPTO_KEY_PURPOSE_UNSPECIFIED_VALUE = 0;
175     /**
176      *
177      *
178      * <pre>
179      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
180      * with [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] and
181      * [Decrypt][google.cloud.kms.v1.KeyManagementService.Decrypt].
182      * </pre>
183      *
184      * <code>ENCRYPT_DECRYPT = 1;</code>
185      */
186     public static final int ENCRYPT_DECRYPT_VALUE = 1;
187     /**
188      *
189      *
190      * <pre>
191      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
192      * with
193      * [AsymmetricSign][google.cloud.kms.v1.KeyManagementService.AsymmetricSign]
194      * and
195      * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey].
196      * </pre>
197      *
198      * <code>ASYMMETRIC_SIGN = 5;</code>
199      */
200     public static final int ASYMMETRIC_SIGN_VALUE = 5;
201     /**
202      *
203      *
204      * <pre>
205      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
206      * with
207      * [AsymmetricDecrypt][google.cloud.kms.v1.KeyManagementService.AsymmetricDecrypt]
208      * and
209      * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey].
210      * </pre>
211      *
212      * <code>ASYMMETRIC_DECRYPT = 6;</code>
213      */
214     public static final int ASYMMETRIC_DECRYPT_VALUE = 6;
215     /**
216      *
217      *
218      * <pre>
219      * [CryptoKeys][google.cloud.kms.v1.CryptoKey] with this purpose may be used
220      * with [MacSign][google.cloud.kms.v1.KeyManagementService.MacSign].
221      * </pre>
222      *
223      * <code>MAC = 9;</code>
224      */
225     public static final int MAC_VALUE = 9;
226 
getNumber()227     public final int getNumber() {
228       if (this == UNRECOGNIZED) {
229         throw new java.lang.IllegalArgumentException(
230             "Can't get the number of an unknown enum value.");
231       }
232       return value;
233     }
234 
235     /**
236      * @param value The numeric wire value of the corresponding enum entry.
237      * @return The enum associated with the given numeric wire value.
238      * @deprecated Use {@link #forNumber(int)} instead.
239      */
240     @java.lang.Deprecated
valueOf(int value)241     public static CryptoKeyPurpose valueOf(int value) {
242       return forNumber(value);
243     }
244 
245     /**
246      * @param value The numeric wire value of the corresponding enum entry.
247      * @return The enum associated with the given numeric wire value.
248      */
forNumber(int value)249     public static CryptoKeyPurpose forNumber(int value) {
250       switch (value) {
251         case 0:
252           return CRYPTO_KEY_PURPOSE_UNSPECIFIED;
253         case 1:
254           return ENCRYPT_DECRYPT;
255         case 5:
256           return ASYMMETRIC_SIGN;
257         case 6:
258           return ASYMMETRIC_DECRYPT;
259         case 9:
260           return MAC;
261         default:
262           return null;
263       }
264     }
265 
internalGetValueMap()266     public static com.google.protobuf.Internal.EnumLiteMap<CryptoKeyPurpose> internalGetValueMap() {
267       return internalValueMap;
268     }
269 
270     private static final com.google.protobuf.Internal.EnumLiteMap<CryptoKeyPurpose>
271         internalValueMap =
272             new com.google.protobuf.Internal.EnumLiteMap<CryptoKeyPurpose>() {
273               public CryptoKeyPurpose findValueByNumber(int number) {
274                 return CryptoKeyPurpose.forNumber(number);
275               }
276             };
277 
getValueDescriptor()278     public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
279       if (this == UNRECOGNIZED) {
280         throw new java.lang.IllegalStateException(
281             "Can't get the descriptor of an unrecognized enum value.");
282       }
283       return getDescriptor().getValues().get(ordinal());
284     }
285 
getDescriptorForType()286     public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
287       return getDescriptor();
288     }
289 
getDescriptor()290     public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
291       return com.google.cloud.kms.v1.CryptoKey.getDescriptor().getEnumTypes().get(0);
292     }
293 
294     private static final CryptoKeyPurpose[] VALUES = values();
295 
valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc)296     public static CryptoKeyPurpose valueOf(
297         com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
298       if (desc.getType() != getDescriptor()) {
299         throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
300       }
301       if (desc.getIndex() == -1) {
302         return UNRECOGNIZED;
303       }
304       return VALUES[desc.getIndex()];
305     }
306 
307     private final int value;
308 
CryptoKeyPurpose(int value)309     private CryptoKeyPurpose(int value) {
310       this.value = value;
311     }
312 
313     // @@protoc_insertion_point(enum_scope:google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose)
314   }
315 
316   private int rotationScheduleCase_ = 0;
317   private java.lang.Object rotationSchedule_;
318 
319   public enum RotationScheduleCase
320       implements
321           com.google.protobuf.Internal.EnumLite,
322           com.google.protobuf.AbstractMessage.InternalOneOfEnum {
323     ROTATION_PERIOD(8),
324     ROTATIONSCHEDULE_NOT_SET(0);
325     private final int value;
326 
RotationScheduleCase(int value)327     private RotationScheduleCase(int value) {
328       this.value = value;
329     }
330     /**
331      * @param value The number of the enum to look for.
332      * @return The enum associated with the given number.
333      * @deprecated Use {@link #forNumber(int)} instead.
334      */
335     @java.lang.Deprecated
valueOf(int value)336     public static RotationScheduleCase valueOf(int value) {
337       return forNumber(value);
338     }
339 
forNumber(int value)340     public static RotationScheduleCase forNumber(int value) {
341       switch (value) {
342         case 8:
343           return ROTATION_PERIOD;
344         case 0:
345           return ROTATIONSCHEDULE_NOT_SET;
346         default:
347           return null;
348       }
349     }
350 
getNumber()351     public int getNumber() {
352       return this.value;
353     }
354   };
355 
getRotationScheduleCase()356   public RotationScheduleCase getRotationScheduleCase() {
357     return RotationScheduleCase.forNumber(rotationScheduleCase_);
358   }
359 
360   public static final int NAME_FIELD_NUMBER = 1;
361 
362   @SuppressWarnings("serial")
363   private volatile java.lang.Object name_ = "";
364   /**
365    *
366    *
367    * <pre>
368    * Output only. The resource name for this
369    * [CryptoKey][google.cloud.kms.v1.CryptoKey] in the format
370    * `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
371    * </pre>
372    *
373    * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
374    *
375    * @return The name.
376    */
377   @java.lang.Override
getName()378   public java.lang.String getName() {
379     java.lang.Object ref = name_;
380     if (ref instanceof java.lang.String) {
381       return (java.lang.String) ref;
382     } else {
383       com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
384       java.lang.String s = bs.toStringUtf8();
385       name_ = s;
386       return s;
387     }
388   }
389   /**
390    *
391    *
392    * <pre>
393    * Output only. The resource name for this
394    * [CryptoKey][google.cloud.kms.v1.CryptoKey] in the format
395    * `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
396    * </pre>
397    *
398    * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
399    *
400    * @return The bytes for name.
401    */
402   @java.lang.Override
getNameBytes()403   public com.google.protobuf.ByteString getNameBytes() {
404     java.lang.Object ref = name_;
405     if (ref instanceof java.lang.String) {
406       com.google.protobuf.ByteString b =
407           com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
408       name_ = b;
409       return b;
410     } else {
411       return (com.google.protobuf.ByteString) ref;
412     }
413   }
414 
415   public static final int PRIMARY_FIELD_NUMBER = 2;
416   private com.google.cloud.kms.v1.CryptoKeyVersion primary_;
417   /**
418    *
419    *
420    * <pre>
421    * Output only. A copy of the "primary"
422    * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
423    * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
424    * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
425    * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
426    * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
427    * updated via
428    * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
429    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
430    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
431    * may have a primary. For other keys, this field will be omitted.
432    * </pre>
433    *
434    * <code>
435    * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
436    * </code>
437    *
438    * @return Whether the primary field is set.
439    */
440   @java.lang.Override
hasPrimary()441   public boolean hasPrimary() {
442     return primary_ != null;
443   }
444   /**
445    *
446    *
447    * <pre>
448    * Output only. A copy of the "primary"
449    * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
450    * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
451    * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
452    * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
453    * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
454    * updated via
455    * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
456    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
457    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
458    * may have a primary. For other keys, this field will be omitted.
459    * </pre>
460    *
461    * <code>
462    * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
463    * </code>
464    *
465    * @return The primary.
466    */
467   @java.lang.Override
getPrimary()468   public com.google.cloud.kms.v1.CryptoKeyVersion getPrimary() {
469     return primary_ == null
470         ? com.google.cloud.kms.v1.CryptoKeyVersion.getDefaultInstance()
471         : primary_;
472   }
473   /**
474    *
475    *
476    * <pre>
477    * Output only. A copy of the "primary"
478    * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
479    * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
480    * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
481    * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
482    * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
483    * updated via
484    * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
485    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
486    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
487    * may have a primary. For other keys, this field will be omitted.
488    * </pre>
489    *
490    * <code>
491    * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
492    * </code>
493    */
494   @java.lang.Override
getPrimaryOrBuilder()495   public com.google.cloud.kms.v1.CryptoKeyVersionOrBuilder getPrimaryOrBuilder() {
496     return primary_ == null
497         ? com.google.cloud.kms.v1.CryptoKeyVersion.getDefaultInstance()
498         : primary_;
499   }
500 
501   public static final int PURPOSE_FIELD_NUMBER = 3;
502   private int purpose_ = 0;
503   /**
504    *
505    *
506    * <pre>
507    * Immutable. The immutable purpose of this
508    * [CryptoKey][google.cloud.kms.v1.CryptoKey].
509    * </pre>
510    *
511    * <code>
512    * .google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose purpose = 3 [(.google.api.field_behavior) = IMMUTABLE];
513    * </code>
514    *
515    * @return The enum numeric value on the wire for purpose.
516    */
517   @java.lang.Override
getPurposeValue()518   public int getPurposeValue() {
519     return purpose_;
520   }
521   /**
522    *
523    *
524    * <pre>
525    * Immutable. The immutable purpose of this
526    * [CryptoKey][google.cloud.kms.v1.CryptoKey].
527    * </pre>
528    *
529    * <code>
530    * .google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose purpose = 3 [(.google.api.field_behavior) = IMMUTABLE];
531    * </code>
532    *
533    * @return The purpose.
534    */
535   @java.lang.Override
getPurpose()536   public com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose getPurpose() {
537     com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose result =
538         com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.forNumber(purpose_);
539     return result == null
540         ? com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.UNRECOGNIZED
541         : result;
542   }
543 
544   public static final int CREATE_TIME_FIELD_NUMBER = 5;
545   private com.google.protobuf.Timestamp createTime_;
546   /**
547    *
548    *
549    * <pre>
550    * Output only. The time at which this
551    * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
552    * </pre>
553    *
554    * <code>.google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
555    * </code>
556    *
557    * @return Whether the createTime field is set.
558    */
559   @java.lang.Override
hasCreateTime()560   public boolean hasCreateTime() {
561     return createTime_ != null;
562   }
563   /**
564    *
565    *
566    * <pre>
567    * Output only. The time at which this
568    * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
569    * </pre>
570    *
571    * <code>.google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
572    * </code>
573    *
574    * @return The createTime.
575    */
576   @java.lang.Override
getCreateTime()577   public com.google.protobuf.Timestamp getCreateTime() {
578     return createTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createTime_;
579   }
580   /**
581    *
582    *
583    * <pre>
584    * Output only. The time at which this
585    * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
586    * </pre>
587    *
588    * <code>.google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
589    * </code>
590    */
591   @java.lang.Override
getCreateTimeOrBuilder()592   public com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder() {
593     return createTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createTime_;
594   }
595 
596   public static final int NEXT_ROTATION_TIME_FIELD_NUMBER = 7;
597   private com.google.protobuf.Timestamp nextRotationTime_;
598   /**
599    *
600    *
601    * <pre>
602    * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
603    * the Key Management Service will automatically:
604    * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
605    * 2. Mark the new version as primary.
606    * Key rotations performed manually via
607    * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
608    * and
609    * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
610    * do not affect
611    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
612    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
613    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
614    * support automatic rotation. For other keys, this field must be omitted.
615    * </pre>
616    *
617    * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
618    *
619    * @return Whether the nextRotationTime field is set.
620    */
621   @java.lang.Override
hasNextRotationTime()622   public boolean hasNextRotationTime() {
623     return nextRotationTime_ != null;
624   }
625   /**
626    *
627    *
628    * <pre>
629    * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
630    * the Key Management Service will automatically:
631    * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
632    * 2. Mark the new version as primary.
633    * Key rotations performed manually via
634    * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
635    * and
636    * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
637    * do not affect
638    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
639    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
640    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
641    * support automatic rotation. For other keys, this field must be omitted.
642    * </pre>
643    *
644    * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
645    *
646    * @return The nextRotationTime.
647    */
648   @java.lang.Override
getNextRotationTime()649   public com.google.protobuf.Timestamp getNextRotationTime() {
650     return nextRotationTime_ == null
651         ? com.google.protobuf.Timestamp.getDefaultInstance()
652         : nextRotationTime_;
653   }
654   /**
655    *
656    *
657    * <pre>
658    * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
659    * the Key Management Service will automatically:
660    * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
661    * 2. Mark the new version as primary.
662    * Key rotations performed manually via
663    * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
664    * and
665    * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
666    * do not affect
667    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
668    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
669    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
670    * support automatic rotation. For other keys, this field must be omitted.
671    * </pre>
672    *
673    * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
674    */
675   @java.lang.Override
getNextRotationTimeOrBuilder()676   public com.google.protobuf.TimestampOrBuilder getNextRotationTimeOrBuilder() {
677     return nextRotationTime_ == null
678         ? com.google.protobuf.Timestamp.getDefaultInstance()
679         : nextRotationTime_;
680   }
681 
682   public static final int ROTATION_PERIOD_FIELD_NUMBER = 8;
683   /**
684    *
685    *
686    * <pre>
687    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
688    * will be advanced by this period when the service automatically rotates a
689    * key. Must be at least 24 hours and at most 876,000 hours.
690    * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
691    * set,
692    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
693    * must also be set.
694    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
695    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
696    * support automatic rotation. For other keys, this field must be omitted.
697    * </pre>
698    *
699    * <code>.google.protobuf.Duration rotation_period = 8;</code>
700    *
701    * @return Whether the rotationPeriod field is set.
702    */
703   @java.lang.Override
hasRotationPeriod()704   public boolean hasRotationPeriod() {
705     return rotationScheduleCase_ == 8;
706   }
707   /**
708    *
709    *
710    * <pre>
711    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
712    * will be advanced by this period when the service automatically rotates a
713    * key. Must be at least 24 hours and at most 876,000 hours.
714    * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
715    * set,
716    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
717    * must also be set.
718    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
719    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
720    * support automatic rotation. For other keys, this field must be omitted.
721    * </pre>
722    *
723    * <code>.google.protobuf.Duration rotation_period = 8;</code>
724    *
725    * @return The rotationPeriod.
726    */
727   @java.lang.Override
getRotationPeriod()728   public com.google.protobuf.Duration getRotationPeriod() {
729     if (rotationScheduleCase_ == 8) {
730       return (com.google.protobuf.Duration) rotationSchedule_;
731     }
732     return com.google.protobuf.Duration.getDefaultInstance();
733   }
734   /**
735    *
736    *
737    * <pre>
738    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
739    * will be advanced by this period when the service automatically rotates a
740    * key. Must be at least 24 hours and at most 876,000 hours.
741    * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
742    * set,
743    * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
744    * must also be set.
745    * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
746    * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
747    * support automatic rotation. For other keys, this field must be omitted.
748    * </pre>
749    *
750    * <code>.google.protobuf.Duration rotation_period = 8;</code>
751    */
752   @java.lang.Override
getRotationPeriodOrBuilder()753   public com.google.protobuf.DurationOrBuilder getRotationPeriodOrBuilder() {
754     if (rotationScheduleCase_ == 8) {
755       return (com.google.protobuf.Duration) rotationSchedule_;
756     }
757     return com.google.protobuf.Duration.getDefaultInstance();
758   }
759 
760   public static final int VERSION_TEMPLATE_FIELD_NUMBER = 11;
761   private com.google.cloud.kms.v1.CryptoKeyVersionTemplate versionTemplate_;
762   /**
763    *
764    *
765    * <pre>
766    * A template describing settings for new
767    * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
768    * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
769    * instances created by either
770    * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
771    * or auto-rotation are controlled by this template.
772    * </pre>
773    *
774    * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
775    *
776    * @return Whether the versionTemplate field is set.
777    */
778   @java.lang.Override
hasVersionTemplate()779   public boolean hasVersionTemplate() {
780     return versionTemplate_ != null;
781   }
782   /**
783    *
784    *
785    * <pre>
786    * A template describing settings for new
787    * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
788    * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
789    * instances created by either
790    * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
791    * or auto-rotation are controlled by this template.
792    * </pre>
793    *
794    * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
795    *
796    * @return The versionTemplate.
797    */
798   @java.lang.Override
getVersionTemplate()799   public com.google.cloud.kms.v1.CryptoKeyVersionTemplate getVersionTemplate() {
800     return versionTemplate_ == null
801         ? com.google.cloud.kms.v1.CryptoKeyVersionTemplate.getDefaultInstance()
802         : versionTemplate_;
803   }
804   /**
805    *
806    *
807    * <pre>
808    * A template describing settings for new
809    * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
810    * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
811    * instances created by either
812    * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
813    * or auto-rotation are controlled by this template.
814    * </pre>
815    *
816    * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
817    */
818   @java.lang.Override
getVersionTemplateOrBuilder()819   public com.google.cloud.kms.v1.CryptoKeyVersionTemplateOrBuilder getVersionTemplateOrBuilder() {
820     return versionTemplate_ == null
821         ? com.google.cloud.kms.v1.CryptoKeyVersionTemplate.getDefaultInstance()
822         : versionTemplate_;
823   }
824 
825   public static final int LABELS_FIELD_NUMBER = 10;
826 
827   private static final class LabelsDefaultEntryHolder {
828     static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry =
829         com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(
830             com.google.cloud.kms.v1.KmsResourcesProto
831                 .internal_static_google_cloud_kms_v1_CryptoKey_LabelsEntry_descriptor,
832             com.google.protobuf.WireFormat.FieldType.STRING,
833             "",
834             com.google.protobuf.WireFormat.FieldType.STRING,
835             "");
836   }
837 
838   @SuppressWarnings("serial")
839   private com.google.protobuf.MapField<java.lang.String, java.lang.String> labels_;
840 
internalGetLabels()841   private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetLabels() {
842     if (labels_ == null) {
843       return com.google.protobuf.MapField.emptyMapField(LabelsDefaultEntryHolder.defaultEntry);
844     }
845     return labels_;
846   }
847 
getLabelsCount()848   public int getLabelsCount() {
849     return internalGetLabels().getMap().size();
850   }
851   /**
852    *
853    *
854    * <pre>
855    * Labels with user-defined metadata. For more information, see
856    * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
857    * </pre>
858    *
859    * <code>map&lt;string, string&gt; labels = 10;</code>
860    */
861   @java.lang.Override
containsLabels(java.lang.String key)862   public boolean containsLabels(java.lang.String key) {
863     if (key == null) {
864       throw new NullPointerException("map key");
865     }
866     return internalGetLabels().getMap().containsKey(key);
867   }
868   /** Use {@link #getLabelsMap()} instead. */
869   @java.lang.Override
870   @java.lang.Deprecated
getLabels()871   public java.util.Map<java.lang.String, java.lang.String> getLabels() {
872     return getLabelsMap();
873   }
874   /**
875    *
876    *
877    * <pre>
878    * Labels with user-defined metadata. For more information, see
879    * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
880    * </pre>
881    *
882    * <code>map&lt;string, string&gt; labels = 10;</code>
883    */
884   @java.lang.Override
getLabelsMap()885   public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
886     return internalGetLabels().getMap();
887   }
888   /**
889    *
890    *
891    * <pre>
892    * Labels with user-defined metadata. For more information, see
893    * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
894    * </pre>
895    *
896    * <code>map&lt;string, string&gt; labels = 10;</code>
897    */
898   @java.lang.Override
getLabelsOrDefault( java.lang.String key, java.lang.String defaultValue)899   public /* nullable */ java.lang.String getLabelsOrDefault(
900       java.lang.String key,
901       /* nullable */
902       java.lang.String defaultValue) {
903     if (key == null) {
904       throw new NullPointerException("map key");
905     }
906     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
907     return map.containsKey(key) ? map.get(key) : defaultValue;
908   }
909   /**
910    *
911    *
912    * <pre>
913    * Labels with user-defined metadata. For more information, see
914    * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
915    * </pre>
916    *
917    * <code>map&lt;string, string&gt; labels = 10;</code>
918    */
919   @java.lang.Override
getLabelsOrThrow(java.lang.String key)920   public java.lang.String getLabelsOrThrow(java.lang.String key) {
921     if (key == null) {
922       throw new NullPointerException("map key");
923     }
924     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
925     if (!map.containsKey(key)) {
926       throw new java.lang.IllegalArgumentException();
927     }
928     return map.get(key);
929   }
930 
931   public static final int IMPORT_ONLY_FIELD_NUMBER = 13;
932   private boolean importOnly_ = false;
933   /**
934    *
935    *
936    * <pre>
937    * Immutable. Whether this key may contain imported versions only.
938    * </pre>
939    *
940    * <code>bool import_only = 13 [(.google.api.field_behavior) = IMMUTABLE];</code>
941    *
942    * @return The importOnly.
943    */
944   @java.lang.Override
getImportOnly()945   public boolean getImportOnly() {
946     return importOnly_;
947   }
948 
949   public static final int DESTROY_SCHEDULED_DURATION_FIELD_NUMBER = 14;
950   private com.google.protobuf.Duration destroyScheduledDuration_;
951   /**
952    *
953    *
954    * <pre>
955    * Immutable. The period of time that versions of this key spend in the
956    * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
957    * state before transitioning to
958    * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
959    * If not specified at creation time, the default duration is 24 hours.
960    * </pre>
961    *
962    * <code>
963    * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
964    * </code>
965    *
966    * @return Whether the destroyScheduledDuration field is set.
967    */
968   @java.lang.Override
hasDestroyScheduledDuration()969   public boolean hasDestroyScheduledDuration() {
970     return destroyScheduledDuration_ != null;
971   }
972   /**
973    *
974    *
975    * <pre>
976    * Immutable. The period of time that versions of this key spend in the
977    * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
978    * state before transitioning to
979    * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
980    * If not specified at creation time, the default duration is 24 hours.
981    * </pre>
982    *
983    * <code>
984    * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
985    * </code>
986    *
987    * @return The destroyScheduledDuration.
988    */
989   @java.lang.Override
getDestroyScheduledDuration()990   public com.google.protobuf.Duration getDestroyScheduledDuration() {
991     return destroyScheduledDuration_ == null
992         ? com.google.protobuf.Duration.getDefaultInstance()
993         : destroyScheduledDuration_;
994   }
995   /**
996    *
997    *
998    * <pre>
999    * Immutable. The period of time that versions of this key spend in the
1000    * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
1001    * state before transitioning to
1002    * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
1003    * If not specified at creation time, the default duration is 24 hours.
1004    * </pre>
1005    *
1006    * <code>
1007    * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
1008    * </code>
1009    */
1010   @java.lang.Override
getDestroyScheduledDurationOrBuilder()1011   public com.google.protobuf.DurationOrBuilder getDestroyScheduledDurationOrBuilder() {
1012     return destroyScheduledDuration_ == null
1013         ? com.google.protobuf.Duration.getDefaultInstance()
1014         : destroyScheduledDuration_;
1015   }
1016 
1017   public static final int CRYPTO_KEY_BACKEND_FIELD_NUMBER = 15;
1018 
1019   @SuppressWarnings("serial")
1020   private volatile java.lang.Object cryptoKeyBackend_ = "";
1021   /**
1022    *
1023    *
1024    * <pre>
1025    * Immutable. The resource name of the backend environment where the key
1026    * material for all [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]
1027    * associated with this [CryptoKey][google.cloud.kms.v1.CryptoKey] reside and
1028    * where all related cryptographic operations are performed. Only applicable
1029    * if [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] have a
1030    * [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] of
1031    * [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
1032    * resource name in the format `projects/&#42;&#47;locations/&#42;&#47;ekmConnections/&#42;`.
1033    * Note, this list is non-exhaustive and may apply to additional
1034    * [ProtectionLevels][google.cloud.kms.v1.ProtectionLevel] in the future.
1035    * </pre>
1036    *
1037    * <code>
1038    * string crypto_key_backend = 15 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }
1039    * </code>
1040    *
1041    * @return The cryptoKeyBackend.
1042    */
1043   @java.lang.Override
getCryptoKeyBackend()1044   public java.lang.String getCryptoKeyBackend() {
1045     java.lang.Object ref = cryptoKeyBackend_;
1046     if (ref instanceof java.lang.String) {
1047       return (java.lang.String) ref;
1048     } else {
1049       com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
1050       java.lang.String s = bs.toStringUtf8();
1051       cryptoKeyBackend_ = s;
1052       return s;
1053     }
1054   }
1055   /**
1056    *
1057    *
1058    * <pre>
1059    * Immutable. The resource name of the backend environment where the key
1060    * material for all [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]
1061    * associated with this [CryptoKey][google.cloud.kms.v1.CryptoKey] reside and
1062    * where all related cryptographic operations are performed. Only applicable
1063    * if [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] have a
1064    * [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] of
1065    * [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
1066    * resource name in the format `projects/&#42;&#47;locations/&#42;&#47;ekmConnections/&#42;`.
1067    * Note, this list is non-exhaustive and may apply to additional
1068    * [ProtectionLevels][google.cloud.kms.v1.ProtectionLevel] in the future.
1069    * </pre>
1070    *
1071    * <code>
1072    * string crypto_key_backend = 15 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }
1073    * </code>
1074    *
1075    * @return The bytes for cryptoKeyBackend.
1076    */
1077   @java.lang.Override
getCryptoKeyBackendBytes()1078   public com.google.protobuf.ByteString getCryptoKeyBackendBytes() {
1079     java.lang.Object ref = cryptoKeyBackend_;
1080     if (ref instanceof java.lang.String) {
1081       com.google.protobuf.ByteString b =
1082           com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
1083       cryptoKeyBackend_ = b;
1084       return b;
1085     } else {
1086       return (com.google.protobuf.ByteString) ref;
1087     }
1088   }
1089 
1090   private byte memoizedIsInitialized = -1;
1091 
1092   @java.lang.Override
isInitialized()1093   public final boolean isInitialized() {
1094     byte isInitialized = memoizedIsInitialized;
1095     if (isInitialized == 1) return true;
1096     if (isInitialized == 0) return false;
1097 
1098     memoizedIsInitialized = 1;
1099     return true;
1100   }
1101 
1102   @java.lang.Override
writeTo(com.google.protobuf.CodedOutputStream output)1103   public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
1104     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
1105       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
1106     }
1107     if (primary_ != null) {
1108       output.writeMessage(2, getPrimary());
1109     }
1110     if (purpose_
1111         != com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.CRYPTO_KEY_PURPOSE_UNSPECIFIED
1112             .getNumber()) {
1113       output.writeEnum(3, purpose_);
1114     }
1115     if (createTime_ != null) {
1116       output.writeMessage(5, getCreateTime());
1117     }
1118     if (nextRotationTime_ != null) {
1119       output.writeMessage(7, getNextRotationTime());
1120     }
1121     if (rotationScheduleCase_ == 8) {
1122       output.writeMessage(8, (com.google.protobuf.Duration) rotationSchedule_);
1123     }
1124     com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
1125         output, internalGetLabels(), LabelsDefaultEntryHolder.defaultEntry, 10);
1126     if (versionTemplate_ != null) {
1127       output.writeMessage(11, getVersionTemplate());
1128     }
1129     if (importOnly_ != false) {
1130       output.writeBool(13, importOnly_);
1131     }
1132     if (destroyScheduledDuration_ != null) {
1133       output.writeMessage(14, getDestroyScheduledDuration());
1134     }
1135     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cryptoKeyBackend_)) {
1136       com.google.protobuf.GeneratedMessageV3.writeString(output, 15, cryptoKeyBackend_);
1137     }
1138     getUnknownFields().writeTo(output);
1139   }
1140 
1141   @java.lang.Override
getSerializedSize()1142   public int getSerializedSize() {
1143     int size = memoizedSize;
1144     if (size != -1) return size;
1145 
1146     size = 0;
1147     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
1148       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
1149     }
1150     if (primary_ != null) {
1151       size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getPrimary());
1152     }
1153     if (purpose_
1154         != com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.CRYPTO_KEY_PURPOSE_UNSPECIFIED
1155             .getNumber()) {
1156       size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, purpose_);
1157     }
1158     if (createTime_ != null) {
1159       size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getCreateTime());
1160     }
1161     if (nextRotationTime_ != null) {
1162       size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getNextRotationTime());
1163     }
1164     if (rotationScheduleCase_ == 8) {
1165       size +=
1166           com.google.protobuf.CodedOutputStream.computeMessageSize(
1167               8, (com.google.protobuf.Duration) rotationSchedule_);
1168     }
1169     for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
1170         internalGetLabels().getMap().entrySet()) {
1171       com.google.protobuf.MapEntry<java.lang.String, java.lang.String> labels__ =
1172           LabelsDefaultEntryHolder.defaultEntry
1173               .newBuilderForType()
1174               .setKey(entry.getKey())
1175               .setValue(entry.getValue())
1176               .build();
1177       size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, labels__);
1178     }
1179     if (versionTemplate_ != null) {
1180       size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getVersionTemplate());
1181     }
1182     if (importOnly_ != false) {
1183       size += com.google.protobuf.CodedOutputStream.computeBoolSize(13, importOnly_);
1184     }
1185     if (destroyScheduledDuration_ != null) {
1186       size +=
1187           com.google.protobuf.CodedOutputStream.computeMessageSize(
1188               14, getDestroyScheduledDuration());
1189     }
1190     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cryptoKeyBackend_)) {
1191       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, cryptoKeyBackend_);
1192     }
1193     size += getUnknownFields().getSerializedSize();
1194     memoizedSize = size;
1195     return size;
1196   }
1197 
1198   @java.lang.Override
equals(final java.lang.Object obj)1199   public boolean equals(final java.lang.Object obj) {
1200     if (obj == this) {
1201       return true;
1202     }
1203     if (!(obj instanceof com.google.cloud.kms.v1.CryptoKey)) {
1204       return super.equals(obj);
1205     }
1206     com.google.cloud.kms.v1.CryptoKey other = (com.google.cloud.kms.v1.CryptoKey) obj;
1207 
1208     if (!getName().equals(other.getName())) return false;
1209     if (hasPrimary() != other.hasPrimary()) return false;
1210     if (hasPrimary()) {
1211       if (!getPrimary().equals(other.getPrimary())) return false;
1212     }
1213     if (purpose_ != other.purpose_) return false;
1214     if (hasCreateTime() != other.hasCreateTime()) return false;
1215     if (hasCreateTime()) {
1216       if (!getCreateTime().equals(other.getCreateTime())) return false;
1217     }
1218     if (hasNextRotationTime() != other.hasNextRotationTime()) return false;
1219     if (hasNextRotationTime()) {
1220       if (!getNextRotationTime().equals(other.getNextRotationTime())) return false;
1221     }
1222     if (hasVersionTemplate() != other.hasVersionTemplate()) return false;
1223     if (hasVersionTemplate()) {
1224       if (!getVersionTemplate().equals(other.getVersionTemplate())) return false;
1225     }
1226     if (!internalGetLabels().equals(other.internalGetLabels())) return false;
1227     if (getImportOnly() != other.getImportOnly()) return false;
1228     if (hasDestroyScheduledDuration() != other.hasDestroyScheduledDuration()) return false;
1229     if (hasDestroyScheduledDuration()) {
1230       if (!getDestroyScheduledDuration().equals(other.getDestroyScheduledDuration())) return false;
1231     }
1232     if (!getCryptoKeyBackend().equals(other.getCryptoKeyBackend())) return false;
1233     if (!getRotationScheduleCase().equals(other.getRotationScheduleCase())) return false;
1234     switch (rotationScheduleCase_) {
1235       case 8:
1236         if (!getRotationPeriod().equals(other.getRotationPeriod())) return false;
1237         break;
1238       case 0:
1239       default:
1240     }
1241     if (!getUnknownFields().equals(other.getUnknownFields())) return false;
1242     return true;
1243   }
1244 
1245   @java.lang.Override
hashCode()1246   public int hashCode() {
1247     if (memoizedHashCode != 0) {
1248       return memoizedHashCode;
1249     }
1250     int hash = 41;
1251     hash = (19 * hash) + getDescriptor().hashCode();
1252     hash = (37 * hash) + NAME_FIELD_NUMBER;
1253     hash = (53 * hash) + getName().hashCode();
1254     if (hasPrimary()) {
1255       hash = (37 * hash) + PRIMARY_FIELD_NUMBER;
1256       hash = (53 * hash) + getPrimary().hashCode();
1257     }
1258     hash = (37 * hash) + PURPOSE_FIELD_NUMBER;
1259     hash = (53 * hash) + purpose_;
1260     if (hasCreateTime()) {
1261       hash = (37 * hash) + CREATE_TIME_FIELD_NUMBER;
1262       hash = (53 * hash) + getCreateTime().hashCode();
1263     }
1264     if (hasNextRotationTime()) {
1265       hash = (37 * hash) + NEXT_ROTATION_TIME_FIELD_NUMBER;
1266       hash = (53 * hash) + getNextRotationTime().hashCode();
1267     }
1268     if (hasVersionTemplate()) {
1269       hash = (37 * hash) + VERSION_TEMPLATE_FIELD_NUMBER;
1270       hash = (53 * hash) + getVersionTemplate().hashCode();
1271     }
1272     if (!internalGetLabels().getMap().isEmpty()) {
1273       hash = (37 * hash) + LABELS_FIELD_NUMBER;
1274       hash = (53 * hash) + internalGetLabels().hashCode();
1275     }
1276     hash = (37 * hash) + IMPORT_ONLY_FIELD_NUMBER;
1277     hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getImportOnly());
1278     if (hasDestroyScheduledDuration()) {
1279       hash = (37 * hash) + DESTROY_SCHEDULED_DURATION_FIELD_NUMBER;
1280       hash = (53 * hash) + getDestroyScheduledDuration().hashCode();
1281     }
1282     hash = (37 * hash) + CRYPTO_KEY_BACKEND_FIELD_NUMBER;
1283     hash = (53 * hash) + getCryptoKeyBackend().hashCode();
1284     switch (rotationScheduleCase_) {
1285       case 8:
1286         hash = (37 * hash) + ROTATION_PERIOD_FIELD_NUMBER;
1287         hash = (53 * hash) + getRotationPeriod().hashCode();
1288         break;
1289       case 0:
1290       default:
1291     }
1292     hash = (29 * hash) + getUnknownFields().hashCode();
1293     memoizedHashCode = hash;
1294     return hash;
1295   }
1296 
parseFrom(java.nio.ByteBuffer data)1297   public static com.google.cloud.kms.v1.CryptoKey parseFrom(java.nio.ByteBuffer data)
1298       throws com.google.protobuf.InvalidProtocolBufferException {
1299     return PARSER.parseFrom(data);
1300   }
1301 
parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1302   public static com.google.cloud.kms.v1.CryptoKey parseFrom(
1303       java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1304       throws com.google.protobuf.InvalidProtocolBufferException {
1305     return PARSER.parseFrom(data, extensionRegistry);
1306   }
1307 
parseFrom(com.google.protobuf.ByteString data)1308   public static com.google.cloud.kms.v1.CryptoKey parseFrom(com.google.protobuf.ByteString data)
1309       throws com.google.protobuf.InvalidProtocolBufferException {
1310     return PARSER.parseFrom(data);
1311   }
1312 
parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1313   public static com.google.cloud.kms.v1.CryptoKey parseFrom(
1314       com.google.protobuf.ByteString data,
1315       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1316       throws com.google.protobuf.InvalidProtocolBufferException {
1317     return PARSER.parseFrom(data, extensionRegistry);
1318   }
1319 
parseFrom(byte[] data)1320   public static com.google.cloud.kms.v1.CryptoKey parseFrom(byte[] data)
1321       throws com.google.protobuf.InvalidProtocolBufferException {
1322     return PARSER.parseFrom(data);
1323   }
1324 
parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1325   public static com.google.cloud.kms.v1.CryptoKey parseFrom(
1326       byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1327       throws com.google.protobuf.InvalidProtocolBufferException {
1328     return PARSER.parseFrom(data, extensionRegistry);
1329   }
1330 
parseFrom(java.io.InputStream input)1331   public static com.google.cloud.kms.v1.CryptoKey parseFrom(java.io.InputStream input)
1332       throws java.io.IOException {
1333     return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
1334   }
1335 
parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1336   public static com.google.cloud.kms.v1.CryptoKey parseFrom(
1337       java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1338       throws java.io.IOException {
1339     return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
1340         PARSER, input, extensionRegistry);
1341   }
1342 
parseDelimitedFrom(java.io.InputStream input)1343   public static com.google.cloud.kms.v1.CryptoKey parseDelimitedFrom(java.io.InputStream input)
1344       throws java.io.IOException {
1345     return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
1346   }
1347 
parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1348   public static com.google.cloud.kms.v1.CryptoKey parseDelimitedFrom(
1349       java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1350       throws java.io.IOException {
1351     return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
1352         PARSER, input, extensionRegistry);
1353   }
1354 
parseFrom( com.google.protobuf.CodedInputStream input)1355   public static com.google.cloud.kms.v1.CryptoKey parseFrom(
1356       com.google.protobuf.CodedInputStream input) throws java.io.IOException {
1357     return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
1358   }
1359 
parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1360   public static com.google.cloud.kms.v1.CryptoKey parseFrom(
1361       com.google.protobuf.CodedInputStream input,
1362       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1363       throws java.io.IOException {
1364     return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
1365         PARSER, input, extensionRegistry);
1366   }
1367 
1368   @java.lang.Override
newBuilderForType()1369   public Builder newBuilderForType() {
1370     return newBuilder();
1371   }
1372 
newBuilder()1373   public static Builder newBuilder() {
1374     return DEFAULT_INSTANCE.toBuilder();
1375   }
1376 
newBuilder(com.google.cloud.kms.v1.CryptoKey prototype)1377   public static Builder newBuilder(com.google.cloud.kms.v1.CryptoKey prototype) {
1378     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
1379   }
1380 
1381   @java.lang.Override
toBuilder()1382   public Builder toBuilder() {
1383     return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
1384   }
1385 
1386   @java.lang.Override
newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)1387   protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
1388     Builder builder = new Builder(parent);
1389     return builder;
1390   }
1391   /**
1392    *
1393    *
1394    * <pre>
1395    * A [CryptoKey][google.cloud.kms.v1.CryptoKey] represents a logical key that
1396    * can be used for cryptographic operations.
1397    * A [CryptoKey][google.cloud.kms.v1.CryptoKey] is made up of zero or more
1398    * [versions][google.cloud.kms.v1.CryptoKeyVersion], which represent the actual
1399    * key material used in cryptographic operations.
1400    * </pre>
1401    *
1402    * Protobuf type {@code google.cloud.kms.v1.CryptoKey}
1403    */
1404   public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
1405       implements
1406       // @@protoc_insertion_point(builder_implements:google.cloud.kms.v1.CryptoKey)
1407       com.google.cloud.kms.v1.CryptoKeyOrBuilder {
getDescriptor()1408     public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
1409       return com.google.cloud.kms.v1.KmsResourcesProto
1410           .internal_static_google_cloud_kms_v1_CryptoKey_descriptor;
1411     }
1412 
1413     @SuppressWarnings({"rawtypes"})
internalGetMapField(int number)1414     protected com.google.protobuf.MapField internalGetMapField(int number) {
1415       switch (number) {
1416         case 10:
1417           return internalGetLabels();
1418         default:
1419           throw new RuntimeException("Invalid map field number: " + number);
1420       }
1421     }
1422 
1423     @SuppressWarnings({"rawtypes"})
internalGetMutableMapField(int number)1424     protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
1425       switch (number) {
1426         case 10:
1427           return internalGetMutableLabels();
1428         default:
1429           throw new RuntimeException("Invalid map field number: " + number);
1430       }
1431     }
1432 
1433     @java.lang.Override
1434     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable()1435         internalGetFieldAccessorTable() {
1436       return com.google.cloud.kms.v1.KmsResourcesProto
1437           .internal_static_google_cloud_kms_v1_CryptoKey_fieldAccessorTable
1438           .ensureFieldAccessorsInitialized(
1439               com.google.cloud.kms.v1.CryptoKey.class,
1440               com.google.cloud.kms.v1.CryptoKey.Builder.class);
1441     }
1442 
1443     // Construct using com.google.cloud.kms.v1.CryptoKey.newBuilder()
Builder()1444     private Builder() {}
1445 
Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)1446     private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
1447       super(parent);
1448     }
1449 
1450     @java.lang.Override
clear()1451     public Builder clear() {
1452       super.clear();
1453       bitField0_ = 0;
1454       name_ = "";
1455       primary_ = null;
1456       if (primaryBuilder_ != null) {
1457         primaryBuilder_.dispose();
1458         primaryBuilder_ = null;
1459       }
1460       purpose_ = 0;
1461       createTime_ = null;
1462       if (createTimeBuilder_ != null) {
1463         createTimeBuilder_.dispose();
1464         createTimeBuilder_ = null;
1465       }
1466       nextRotationTime_ = null;
1467       if (nextRotationTimeBuilder_ != null) {
1468         nextRotationTimeBuilder_.dispose();
1469         nextRotationTimeBuilder_ = null;
1470       }
1471       if (rotationPeriodBuilder_ != null) {
1472         rotationPeriodBuilder_.clear();
1473       }
1474       versionTemplate_ = null;
1475       if (versionTemplateBuilder_ != null) {
1476         versionTemplateBuilder_.dispose();
1477         versionTemplateBuilder_ = null;
1478       }
1479       internalGetMutableLabels().clear();
1480       importOnly_ = false;
1481       destroyScheduledDuration_ = null;
1482       if (destroyScheduledDurationBuilder_ != null) {
1483         destroyScheduledDurationBuilder_.dispose();
1484         destroyScheduledDurationBuilder_ = null;
1485       }
1486       cryptoKeyBackend_ = "";
1487       rotationScheduleCase_ = 0;
1488       rotationSchedule_ = null;
1489       return this;
1490     }
1491 
1492     @java.lang.Override
getDescriptorForType()1493     public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
1494       return com.google.cloud.kms.v1.KmsResourcesProto
1495           .internal_static_google_cloud_kms_v1_CryptoKey_descriptor;
1496     }
1497 
1498     @java.lang.Override
getDefaultInstanceForType()1499     public com.google.cloud.kms.v1.CryptoKey getDefaultInstanceForType() {
1500       return com.google.cloud.kms.v1.CryptoKey.getDefaultInstance();
1501     }
1502 
1503     @java.lang.Override
build()1504     public com.google.cloud.kms.v1.CryptoKey build() {
1505       com.google.cloud.kms.v1.CryptoKey result = buildPartial();
1506       if (!result.isInitialized()) {
1507         throw newUninitializedMessageException(result);
1508       }
1509       return result;
1510     }
1511 
1512     @java.lang.Override
buildPartial()1513     public com.google.cloud.kms.v1.CryptoKey buildPartial() {
1514       com.google.cloud.kms.v1.CryptoKey result = new com.google.cloud.kms.v1.CryptoKey(this);
1515       if (bitField0_ != 0) {
1516         buildPartial0(result);
1517       }
1518       buildPartialOneofs(result);
1519       onBuilt();
1520       return result;
1521     }
1522 
buildPartial0(com.google.cloud.kms.v1.CryptoKey result)1523     private void buildPartial0(com.google.cloud.kms.v1.CryptoKey result) {
1524       int from_bitField0_ = bitField0_;
1525       if (((from_bitField0_ & 0x00000001) != 0)) {
1526         result.name_ = name_;
1527       }
1528       if (((from_bitField0_ & 0x00000002) != 0)) {
1529         result.primary_ = primaryBuilder_ == null ? primary_ : primaryBuilder_.build();
1530       }
1531       if (((from_bitField0_ & 0x00000004) != 0)) {
1532         result.purpose_ = purpose_;
1533       }
1534       if (((from_bitField0_ & 0x00000008) != 0)) {
1535         result.createTime_ = createTimeBuilder_ == null ? createTime_ : createTimeBuilder_.build();
1536       }
1537       if (((from_bitField0_ & 0x00000010) != 0)) {
1538         result.nextRotationTime_ =
1539             nextRotationTimeBuilder_ == null ? nextRotationTime_ : nextRotationTimeBuilder_.build();
1540       }
1541       if (((from_bitField0_ & 0x00000040) != 0)) {
1542         result.versionTemplate_ =
1543             versionTemplateBuilder_ == null ? versionTemplate_ : versionTemplateBuilder_.build();
1544       }
1545       if (((from_bitField0_ & 0x00000080) != 0)) {
1546         result.labels_ = internalGetLabels();
1547         result.labels_.makeImmutable();
1548       }
1549       if (((from_bitField0_ & 0x00000100) != 0)) {
1550         result.importOnly_ = importOnly_;
1551       }
1552       if (((from_bitField0_ & 0x00000200) != 0)) {
1553         result.destroyScheduledDuration_ =
1554             destroyScheduledDurationBuilder_ == null
1555                 ? destroyScheduledDuration_
1556                 : destroyScheduledDurationBuilder_.build();
1557       }
1558       if (((from_bitField0_ & 0x00000400) != 0)) {
1559         result.cryptoKeyBackend_ = cryptoKeyBackend_;
1560       }
1561     }
1562 
buildPartialOneofs(com.google.cloud.kms.v1.CryptoKey result)1563     private void buildPartialOneofs(com.google.cloud.kms.v1.CryptoKey result) {
1564       result.rotationScheduleCase_ = rotationScheduleCase_;
1565       result.rotationSchedule_ = this.rotationSchedule_;
1566       if (rotationScheduleCase_ == 8 && rotationPeriodBuilder_ != null) {
1567         result.rotationSchedule_ = rotationPeriodBuilder_.build();
1568       }
1569     }
1570 
1571     @java.lang.Override
clone()1572     public Builder clone() {
1573       return super.clone();
1574     }
1575 
1576     @java.lang.Override
setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)1577     public Builder setField(
1578         com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
1579       return super.setField(field, value);
1580     }
1581 
1582     @java.lang.Override
clearField(com.google.protobuf.Descriptors.FieldDescriptor field)1583     public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
1584       return super.clearField(field);
1585     }
1586 
1587     @java.lang.Override
clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)1588     public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
1589       return super.clearOneof(oneof);
1590     }
1591 
1592     @java.lang.Override
setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)1593     public Builder setRepeatedField(
1594         com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
1595       return super.setRepeatedField(field, index, value);
1596     }
1597 
1598     @java.lang.Override
addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)1599     public Builder addRepeatedField(
1600         com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
1601       return super.addRepeatedField(field, value);
1602     }
1603 
1604     @java.lang.Override
mergeFrom(com.google.protobuf.Message other)1605     public Builder mergeFrom(com.google.protobuf.Message other) {
1606       if (other instanceof com.google.cloud.kms.v1.CryptoKey) {
1607         return mergeFrom((com.google.cloud.kms.v1.CryptoKey) other);
1608       } else {
1609         super.mergeFrom(other);
1610         return this;
1611       }
1612     }
1613 
mergeFrom(com.google.cloud.kms.v1.CryptoKey other)1614     public Builder mergeFrom(com.google.cloud.kms.v1.CryptoKey other) {
1615       if (other == com.google.cloud.kms.v1.CryptoKey.getDefaultInstance()) return this;
1616       if (!other.getName().isEmpty()) {
1617         name_ = other.name_;
1618         bitField0_ |= 0x00000001;
1619         onChanged();
1620       }
1621       if (other.hasPrimary()) {
1622         mergePrimary(other.getPrimary());
1623       }
1624       if (other.purpose_ != 0) {
1625         setPurposeValue(other.getPurposeValue());
1626       }
1627       if (other.hasCreateTime()) {
1628         mergeCreateTime(other.getCreateTime());
1629       }
1630       if (other.hasNextRotationTime()) {
1631         mergeNextRotationTime(other.getNextRotationTime());
1632       }
1633       if (other.hasVersionTemplate()) {
1634         mergeVersionTemplate(other.getVersionTemplate());
1635       }
1636       internalGetMutableLabels().mergeFrom(other.internalGetLabels());
1637       bitField0_ |= 0x00000080;
1638       if (other.getImportOnly() != false) {
1639         setImportOnly(other.getImportOnly());
1640       }
1641       if (other.hasDestroyScheduledDuration()) {
1642         mergeDestroyScheduledDuration(other.getDestroyScheduledDuration());
1643       }
1644       if (!other.getCryptoKeyBackend().isEmpty()) {
1645         cryptoKeyBackend_ = other.cryptoKeyBackend_;
1646         bitField0_ |= 0x00000400;
1647         onChanged();
1648       }
1649       switch (other.getRotationScheduleCase()) {
1650         case ROTATION_PERIOD:
1651           {
1652             mergeRotationPeriod(other.getRotationPeriod());
1653             break;
1654           }
1655         case ROTATIONSCHEDULE_NOT_SET:
1656           {
1657             break;
1658           }
1659       }
1660       this.mergeUnknownFields(other.getUnknownFields());
1661       onChanged();
1662       return this;
1663     }
1664 
1665     @java.lang.Override
isInitialized()1666     public final boolean isInitialized() {
1667       return true;
1668     }
1669 
1670     @java.lang.Override
mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1671     public Builder mergeFrom(
1672         com.google.protobuf.CodedInputStream input,
1673         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1674         throws java.io.IOException {
1675       if (extensionRegistry == null) {
1676         throw new java.lang.NullPointerException();
1677       }
1678       try {
1679         boolean done = false;
1680         while (!done) {
1681           int tag = input.readTag();
1682           switch (tag) {
1683             case 0:
1684               done = true;
1685               break;
1686             case 10:
1687               {
1688                 name_ = input.readStringRequireUtf8();
1689                 bitField0_ |= 0x00000001;
1690                 break;
1691               } // case 10
1692             case 18:
1693               {
1694                 input.readMessage(getPrimaryFieldBuilder().getBuilder(), extensionRegistry);
1695                 bitField0_ |= 0x00000002;
1696                 break;
1697               } // case 18
1698             case 24:
1699               {
1700                 purpose_ = input.readEnum();
1701                 bitField0_ |= 0x00000004;
1702                 break;
1703               } // case 24
1704             case 42:
1705               {
1706                 input.readMessage(getCreateTimeFieldBuilder().getBuilder(), extensionRegistry);
1707                 bitField0_ |= 0x00000008;
1708                 break;
1709               } // case 42
1710             case 58:
1711               {
1712                 input.readMessage(
1713                     getNextRotationTimeFieldBuilder().getBuilder(), extensionRegistry);
1714                 bitField0_ |= 0x00000010;
1715                 break;
1716               } // case 58
1717             case 66:
1718               {
1719                 input.readMessage(getRotationPeriodFieldBuilder().getBuilder(), extensionRegistry);
1720                 rotationScheduleCase_ = 8;
1721                 break;
1722               } // case 66
1723             case 82:
1724               {
1725                 com.google.protobuf.MapEntry<java.lang.String, java.lang.String> labels__ =
1726                     input.readMessage(
1727                         LabelsDefaultEntryHolder.defaultEntry.getParserForType(),
1728                         extensionRegistry);
1729                 internalGetMutableLabels()
1730                     .getMutableMap()
1731                     .put(labels__.getKey(), labels__.getValue());
1732                 bitField0_ |= 0x00000080;
1733                 break;
1734               } // case 82
1735             case 90:
1736               {
1737                 input.readMessage(getVersionTemplateFieldBuilder().getBuilder(), extensionRegistry);
1738                 bitField0_ |= 0x00000040;
1739                 break;
1740               } // case 90
1741             case 104:
1742               {
1743                 importOnly_ = input.readBool();
1744                 bitField0_ |= 0x00000100;
1745                 break;
1746               } // case 104
1747             case 114:
1748               {
1749                 input.readMessage(
1750                     getDestroyScheduledDurationFieldBuilder().getBuilder(), extensionRegistry);
1751                 bitField0_ |= 0x00000200;
1752                 break;
1753               } // case 114
1754             case 122:
1755               {
1756                 cryptoKeyBackend_ = input.readStringRequireUtf8();
1757                 bitField0_ |= 0x00000400;
1758                 break;
1759               } // case 122
1760             default:
1761               {
1762                 if (!super.parseUnknownField(input, extensionRegistry, tag)) {
1763                   done = true; // was an endgroup tag
1764                 }
1765                 break;
1766               } // default:
1767           } // switch (tag)
1768         } // while (!done)
1769       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
1770         throw e.unwrapIOException();
1771       } finally {
1772         onChanged();
1773       } // finally
1774       return this;
1775     }
1776 
1777     private int rotationScheduleCase_ = 0;
1778     private java.lang.Object rotationSchedule_;
1779 
getRotationScheduleCase()1780     public RotationScheduleCase getRotationScheduleCase() {
1781       return RotationScheduleCase.forNumber(rotationScheduleCase_);
1782     }
1783 
clearRotationSchedule()1784     public Builder clearRotationSchedule() {
1785       rotationScheduleCase_ = 0;
1786       rotationSchedule_ = null;
1787       onChanged();
1788       return this;
1789     }
1790 
1791     private int bitField0_;
1792 
1793     private java.lang.Object name_ = "";
1794     /**
1795      *
1796      *
1797      * <pre>
1798      * Output only. The resource name for this
1799      * [CryptoKey][google.cloud.kms.v1.CryptoKey] in the format
1800      * `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
1801      * </pre>
1802      *
1803      * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
1804      *
1805      * @return The name.
1806      */
getName()1807     public java.lang.String getName() {
1808       java.lang.Object ref = name_;
1809       if (!(ref instanceof java.lang.String)) {
1810         com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
1811         java.lang.String s = bs.toStringUtf8();
1812         name_ = s;
1813         return s;
1814       } else {
1815         return (java.lang.String) ref;
1816       }
1817     }
1818     /**
1819      *
1820      *
1821      * <pre>
1822      * Output only. The resource name for this
1823      * [CryptoKey][google.cloud.kms.v1.CryptoKey] in the format
1824      * `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
1825      * </pre>
1826      *
1827      * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
1828      *
1829      * @return The bytes for name.
1830      */
getNameBytes()1831     public com.google.protobuf.ByteString getNameBytes() {
1832       java.lang.Object ref = name_;
1833       if (ref instanceof String) {
1834         com.google.protobuf.ByteString b =
1835             com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
1836         name_ = b;
1837         return b;
1838       } else {
1839         return (com.google.protobuf.ByteString) ref;
1840       }
1841     }
1842     /**
1843      *
1844      *
1845      * <pre>
1846      * Output only. The resource name for this
1847      * [CryptoKey][google.cloud.kms.v1.CryptoKey] in the format
1848      * `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
1849      * </pre>
1850      *
1851      * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
1852      *
1853      * @param value The name to set.
1854      * @return This builder for chaining.
1855      */
setName(java.lang.String value)1856     public Builder setName(java.lang.String value) {
1857       if (value == null) {
1858         throw new NullPointerException();
1859       }
1860       name_ = value;
1861       bitField0_ |= 0x00000001;
1862       onChanged();
1863       return this;
1864     }
1865     /**
1866      *
1867      *
1868      * <pre>
1869      * Output only. The resource name for this
1870      * [CryptoKey][google.cloud.kms.v1.CryptoKey] in the format
1871      * `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
1872      * </pre>
1873      *
1874      * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
1875      *
1876      * @return This builder for chaining.
1877      */
clearName()1878     public Builder clearName() {
1879       name_ = getDefaultInstance().getName();
1880       bitField0_ = (bitField0_ & ~0x00000001);
1881       onChanged();
1882       return this;
1883     }
1884     /**
1885      *
1886      *
1887      * <pre>
1888      * Output only. The resource name for this
1889      * [CryptoKey][google.cloud.kms.v1.CryptoKey] in the format
1890      * `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
1891      * </pre>
1892      *
1893      * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
1894      *
1895      * @param value The bytes for name to set.
1896      * @return This builder for chaining.
1897      */
setNameBytes(com.google.protobuf.ByteString value)1898     public Builder setNameBytes(com.google.protobuf.ByteString value) {
1899       if (value == null) {
1900         throw new NullPointerException();
1901       }
1902       checkByteStringIsUtf8(value);
1903       name_ = value;
1904       bitField0_ |= 0x00000001;
1905       onChanged();
1906       return this;
1907     }
1908 
1909     private com.google.cloud.kms.v1.CryptoKeyVersion primary_;
1910     private com.google.protobuf.SingleFieldBuilderV3<
1911             com.google.cloud.kms.v1.CryptoKeyVersion,
1912             com.google.cloud.kms.v1.CryptoKeyVersion.Builder,
1913             com.google.cloud.kms.v1.CryptoKeyVersionOrBuilder>
1914         primaryBuilder_;
1915     /**
1916      *
1917      *
1918      * <pre>
1919      * Output only. A copy of the "primary"
1920      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
1921      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
1922      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
1923      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
1924      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
1925      * updated via
1926      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
1927      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
1928      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
1929      * may have a primary. For other keys, this field will be omitted.
1930      * </pre>
1931      *
1932      * <code>
1933      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
1934      * </code>
1935      *
1936      * @return Whether the primary field is set.
1937      */
hasPrimary()1938     public boolean hasPrimary() {
1939       return ((bitField0_ & 0x00000002) != 0);
1940     }
1941     /**
1942      *
1943      *
1944      * <pre>
1945      * Output only. A copy of the "primary"
1946      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
1947      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
1948      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
1949      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
1950      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
1951      * updated via
1952      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
1953      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
1954      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
1955      * may have a primary. For other keys, this field will be omitted.
1956      * </pre>
1957      *
1958      * <code>
1959      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
1960      * </code>
1961      *
1962      * @return The primary.
1963      */
getPrimary()1964     public com.google.cloud.kms.v1.CryptoKeyVersion getPrimary() {
1965       if (primaryBuilder_ == null) {
1966         return primary_ == null
1967             ? com.google.cloud.kms.v1.CryptoKeyVersion.getDefaultInstance()
1968             : primary_;
1969       } else {
1970         return primaryBuilder_.getMessage();
1971       }
1972     }
1973     /**
1974      *
1975      *
1976      * <pre>
1977      * Output only. A copy of the "primary"
1978      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
1979      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
1980      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
1981      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
1982      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
1983      * updated via
1984      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
1985      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
1986      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
1987      * may have a primary. For other keys, this field will be omitted.
1988      * </pre>
1989      *
1990      * <code>
1991      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
1992      * </code>
1993      */
setPrimary(com.google.cloud.kms.v1.CryptoKeyVersion value)1994     public Builder setPrimary(com.google.cloud.kms.v1.CryptoKeyVersion value) {
1995       if (primaryBuilder_ == null) {
1996         if (value == null) {
1997           throw new NullPointerException();
1998         }
1999         primary_ = value;
2000       } else {
2001         primaryBuilder_.setMessage(value);
2002       }
2003       bitField0_ |= 0x00000002;
2004       onChanged();
2005       return this;
2006     }
2007     /**
2008      *
2009      *
2010      * <pre>
2011      * Output only. A copy of the "primary"
2012      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
2013      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
2014      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
2015      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
2016      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
2017      * updated via
2018      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
2019      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2020      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2021      * may have a primary. For other keys, this field will be omitted.
2022      * </pre>
2023      *
2024      * <code>
2025      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
2026      * </code>
2027      */
setPrimary(com.google.cloud.kms.v1.CryptoKeyVersion.Builder builderForValue)2028     public Builder setPrimary(com.google.cloud.kms.v1.CryptoKeyVersion.Builder builderForValue) {
2029       if (primaryBuilder_ == null) {
2030         primary_ = builderForValue.build();
2031       } else {
2032         primaryBuilder_.setMessage(builderForValue.build());
2033       }
2034       bitField0_ |= 0x00000002;
2035       onChanged();
2036       return this;
2037     }
2038     /**
2039      *
2040      *
2041      * <pre>
2042      * Output only. A copy of the "primary"
2043      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
2044      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
2045      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
2046      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
2047      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
2048      * updated via
2049      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
2050      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2051      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2052      * may have a primary. For other keys, this field will be omitted.
2053      * </pre>
2054      *
2055      * <code>
2056      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
2057      * </code>
2058      */
mergePrimary(com.google.cloud.kms.v1.CryptoKeyVersion value)2059     public Builder mergePrimary(com.google.cloud.kms.v1.CryptoKeyVersion value) {
2060       if (primaryBuilder_ == null) {
2061         if (((bitField0_ & 0x00000002) != 0)
2062             && primary_ != null
2063             && primary_ != com.google.cloud.kms.v1.CryptoKeyVersion.getDefaultInstance()) {
2064           getPrimaryBuilder().mergeFrom(value);
2065         } else {
2066           primary_ = value;
2067         }
2068       } else {
2069         primaryBuilder_.mergeFrom(value);
2070       }
2071       bitField0_ |= 0x00000002;
2072       onChanged();
2073       return this;
2074     }
2075     /**
2076      *
2077      *
2078      * <pre>
2079      * Output only. A copy of the "primary"
2080      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
2081      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
2082      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
2083      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
2084      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
2085      * updated via
2086      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
2087      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2088      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2089      * may have a primary. For other keys, this field will be omitted.
2090      * </pre>
2091      *
2092      * <code>
2093      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
2094      * </code>
2095      */
clearPrimary()2096     public Builder clearPrimary() {
2097       bitField0_ = (bitField0_ & ~0x00000002);
2098       primary_ = null;
2099       if (primaryBuilder_ != null) {
2100         primaryBuilder_.dispose();
2101         primaryBuilder_ = null;
2102       }
2103       onChanged();
2104       return this;
2105     }
2106     /**
2107      *
2108      *
2109      * <pre>
2110      * Output only. A copy of the "primary"
2111      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
2112      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
2113      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
2114      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
2115      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
2116      * updated via
2117      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
2118      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2119      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2120      * may have a primary. For other keys, this field will be omitted.
2121      * </pre>
2122      *
2123      * <code>
2124      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
2125      * </code>
2126      */
getPrimaryBuilder()2127     public com.google.cloud.kms.v1.CryptoKeyVersion.Builder getPrimaryBuilder() {
2128       bitField0_ |= 0x00000002;
2129       onChanged();
2130       return getPrimaryFieldBuilder().getBuilder();
2131     }
2132     /**
2133      *
2134      *
2135      * <pre>
2136      * Output only. A copy of the "primary"
2137      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
2138      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
2139      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
2140      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
2141      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
2142      * updated via
2143      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
2144      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2145      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2146      * may have a primary. For other keys, this field will be omitted.
2147      * </pre>
2148      *
2149      * <code>
2150      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
2151      * </code>
2152      */
getPrimaryOrBuilder()2153     public com.google.cloud.kms.v1.CryptoKeyVersionOrBuilder getPrimaryOrBuilder() {
2154       if (primaryBuilder_ != null) {
2155         return primaryBuilder_.getMessageOrBuilder();
2156       } else {
2157         return primary_ == null
2158             ? com.google.cloud.kms.v1.CryptoKeyVersion.getDefaultInstance()
2159             : primary_;
2160       }
2161     }
2162     /**
2163      *
2164      *
2165      * <pre>
2166      * Output only. A copy of the "primary"
2167      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that will be used
2168      * by [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt] when this
2169      * [CryptoKey][google.cloud.kms.v1.CryptoKey] is given in
2170      * [EncryptRequest.name][google.cloud.kms.v1.EncryptRequest.name].
2171      * The [CryptoKey][google.cloud.kms.v1.CryptoKey]'s primary version can be
2172      * updated via
2173      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion].
2174      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2175      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2176      * may have a primary. For other keys, this field will be omitted.
2177      * </pre>
2178      *
2179      * <code>
2180      * .google.cloud.kms.v1.CryptoKeyVersion primary = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
2181      * </code>
2182      */
2183     private com.google.protobuf.SingleFieldBuilderV3<
2184             com.google.cloud.kms.v1.CryptoKeyVersion,
2185             com.google.cloud.kms.v1.CryptoKeyVersion.Builder,
2186             com.google.cloud.kms.v1.CryptoKeyVersionOrBuilder>
getPrimaryFieldBuilder()2187         getPrimaryFieldBuilder() {
2188       if (primaryBuilder_ == null) {
2189         primaryBuilder_ =
2190             new com.google.protobuf.SingleFieldBuilderV3<
2191                 com.google.cloud.kms.v1.CryptoKeyVersion,
2192                 com.google.cloud.kms.v1.CryptoKeyVersion.Builder,
2193                 com.google.cloud.kms.v1.CryptoKeyVersionOrBuilder>(
2194                 getPrimary(), getParentForChildren(), isClean());
2195         primary_ = null;
2196       }
2197       return primaryBuilder_;
2198     }
2199 
2200     private int purpose_ = 0;
2201     /**
2202      *
2203      *
2204      * <pre>
2205      * Immutable. The immutable purpose of this
2206      * [CryptoKey][google.cloud.kms.v1.CryptoKey].
2207      * </pre>
2208      *
2209      * <code>
2210      * .google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose purpose = 3 [(.google.api.field_behavior) = IMMUTABLE];
2211      * </code>
2212      *
2213      * @return The enum numeric value on the wire for purpose.
2214      */
2215     @java.lang.Override
getPurposeValue()2216     public int getPurposeValue() {
2217       return purpose_;
2218     }
2219     /**
2220      *
2221      *
2222      * <pre>
2223      * Immutable. The immutable purpose of this
2224      * [CryptoKey][google.cloud.kms.v1.CryptoKey].
2225      * </pre>
2226      *
2227      * <code>
2228      * .google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose purpose = 3 [(.google.api.field_behavior) = IMMUTABLE];
2229      * </code>
2230      *
2231      * @param value The enum numeric value on the wire for purpose to set.
2232      * @return This builder for chaining.
2233      */
setPurposeValue(int value)2234     public Builder setPurposeValue(int value) {
2235       purpose_ = value;
2236       bitField0_ |= 0x00000004;
2237       onChanged();
2238       return this;
2239     }
2240     /**
2241      *
2242      *
2243      * <pre>
2244      * Immutable. The immutable purpose of this
2245      * [CryptoKey][google.cloud.kms.v1.CryptoKey].
2246      * </pre>
2247      *
2248      * <code>
2249      * .google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose purpose = 3 [(.google.api.field_behavior) = IMMUTABLE];
2250      * </code>
2251      *
2252      * @return The purpose.
2253      */
2254     @java.lang.Override
getPurpose()2255     public com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose getPurpose() {
2256       com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose result =
2257           com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.forNumber(purpose_);
2258       return result == null
2259           ? com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.UNRECOGNIZED
2260           : result;
2261     }
2262     /**
2263      *
2264      *
2265      * <pre>
2266      * Immutable. The immutable purpose of this
2267      * [CryptoKey][google.cloud.kms.v1.CryptoKey].
2268      * </pre>
2269      *
2270      * <code>
2271      * .google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose purpose = 3 [(.google.api.field_behavior) = IMMUTABLE];
2272      * </code>
2273      *
2274      * @param value The purpose to set.
2275      * @return This builder for chaining.
2276      */
setPurpose(com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose value)2277     public Builder setPurpose(com.google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose value) {
2278       if (value == null) {
2279         throw new NullPointerException();
2280       }
2281       bitField0_ |= 0x00000004;
2282       purpose_ = value.getNumber();
2283       onChanged();
2284       return this;
2285     }
2286     /**
2287      *
2288      *
2289      * <pre>
2290      * Immutable. The immutable purpose of this
2291      * [CryptoKey][google.cloud.kms.v1.CryptoKey].
2292      * </pre>
2293      *
2294      * <code>
2295      * .google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose purpose = 3 [(.google.api.field_behavior) = IMMUTABLE];
2296      * </code>
2297      *
2298      * @return This builder for chaining.
2299      */
clearPurpose()2300     public Builder clearPurpose() {
2301       bitField0_ = (bitField0_ & ~0x00000004);
2302       purpose_ = 0;
2303       onChanged();
2304       return this;
2305     }
2306 
2307     private com.google.protobuf.Timestamp createTime_;
2308     private com.google.protobuf.SingleFieldBuilderV3<
2309             com.google.protobuf.Timestamp,
2310             com.google.protobuf.Timestamp.Builder,
2311             com.google.protobuf.TimestampOrBuilder>
2312         createTimeBuilder_;
2313     /**
2314      *
2315      *
2316      * <pre>
2317      * Output only. The time at which this
2318      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2319      * </pre>
2320      *
2321      * <code>
2322      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2323      * </code>
2324      *
2325      * @return Whether the createTime field is set.
2326      */
hasCreateTime()2327     public boolean hasCreateTime() {
2328       return ((bitField0_ & 0x00000008) != 0);
2329     }
2330     /**
2331      *
2332      *
2333      * <pre>
2334      * Output only. The time at which this
2335      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2336      * </pre>
2337      *
2338      * <code>
2339      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2340      * </code>
2341      *
2342      * @return The createTime.
2343      */
getCreateTime()2344     public com.google.protobuf.Timestamp getCreateTime() {
2345       if (createTimeBuilder_ == null) {
2346         return createTime_ == null
2347             ? com.google.protobuf.Timestamp.getDefaultInstance()
2348             : createTime_;
2349       } else {
2350         return createTimeBuilder_.getMessage();
2351       }
2352     }
2353     /**
2354      *
2355      *
2356      * <pre>
2357      * Output only. The time at which this
2358      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2359      * </pre>
2360      *
2361      * <code>
2362      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2363      * </code>
2364      */
setCreateTime(com.google.protobuf.Timestamp value)2365     public Builder setCreateTime(com.google.protobuf.Timestamp value) {
2366       if (createTimeBuilder_ == null) {
2367         if (value == null) {
2368           throw new NullPointerException();
2369         }
2370         createTime_ = value;
2371       } else {
2372         createTimeBuilder_.setMessage(value);
2373       }
2374       bitField0_ |= 0x00000008;
2375       onChanged();
2376       return this;
2377     }
2378     /**
2379      *
2380      *
2381      * <pre>
2382      * Output only. The time at which this
2383      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2384      * </pre>
2385      *
2386      * <code>
2387      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2388      * </code>
2389      */
setCreateTime(com.google.protobuf.Timestamp.Builder builderForValue)2390     public Builder setCreateTime(com.google.protobuf.Timestamp.Builder builderForValue) {
2391       if (createTimeBuilder_ == null) {
2392         createTime_ = builderForValue.build();
2393       } else {
2394         createTimeBuilder_.setMessage(builderForValue.build());
2395       }
2396       bitField0_ |= 0x00000008;
2397       onChanged();
2398       return this;
2399     }
2400     /**
2401      *
2402      *
2403      * <pre>
2404      * Output only. The time at which this
2405      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2406      * </pre>
2407      *
2408      * <code>
2409      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2410      * </code>
2411      */
mergeCreateTime(com.google.protobuf.Timestamp value)2412     public Builder mergeCreateTime(com.google.protobuf.Timestamp value) {
2413       if (createTimeBuilder_ == null) {
2414         if (((bitField0_ & 0x00000008) != 0)
2415             && createTime_ != null
2416             && createTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
2417           getCreateTimeBuilder().mergeFrom(value);
2418         } else {
2419           createTime_ = value;
2420         }
2421       } else {
2422         createTimeBuilder_.mergeFrom(value);
2423       }
2424       bitField0_ |= 0x00000008;
2425       onChanged();
2426       return this;
2427     }
2428     /**
2429      *
2430      *
2431      * <pre>
2432      * Output only. The time at which this
2433      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2434      * </pre>
2435      *
2436      * <code>
2437      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2438      * </code>
2439      */
clearCreateTime()2440     public Builder clearCreateTime() {
2441       bitField0_ = (bitField0_ & ~0x00000008);
2442       createTime_ = null;
2443       if (createTimeBuilder_ != null) {
2444         createTimeBuilder_.dispose();
2445         createTimeBuilder_ = null;
2446       }
2447       onChanged();
2448       return this;
2449     }
2450     /**
2451      *
2452      *
2453      * <pre>
2454      * Output only. The time at which this
2455      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2456      * </pre>
2457      *
2458      * <code>
2459      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2460      * </code>
2461      */
getCreateTimeBuilder()2462     public com.google.protobuf.Timestamp.Builder getCreateTimeBuilder() {
2463       bitField0_ |= 0x00000008;
2464       onChanged();
2465       return getCreateTimeFieldBuilder().getBuilder();
2466     }
2467     /**
2468      *
2469      *
2470      * <pre>
2471      * Output only. The time at which this
2472      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2473      * </pre>
2474      *
2475      * <code>
2476      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2477      * </code>
2478      */
getCreateTimeOrBuilder()2479     public com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder() {
2480       if (createTimeBuilder_ != null) {
2481         return createTimeBuilder_.getMessageOrBuilder();
2482       } else {
2483         return createTime_ == null
2484             ? com.google.protobuf.Timestamp.getDefaultInstance()
2485             : createTime_;
2486       }
2487     }
2488     /**
2489      *
2490      *
2491      * <pre>
2492      * Output only. The time at which this
2493      * [CryptoKey][google.cloud.kms.v1.CryptoKey] was created.
2494      * </pre>
2495      *
2496      * <code>
2497      * .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
2498      * </code>
2499      */
2500     private com.google.protobuf.SingleFieldBuilderV3<
2501             com.google.protobuf.Timestamp,
2502             com.google.protobuf.Timestamp.Builder,
2503             com.google.protobuf.TimestampOrBuilder>
getCreateTimeFieldBuilder()2504         getCreateTimeFieldBuilder() {
2505       if (createTimeBuilder_ == null) {
2506         createTimeBuilder_ =
2507             new com.google.protobuf.SingleFieldBuilderV3<
2508                 com.google.protobuf.Timestamp,
2509                 com.google.protobuf.Timestamp.Builder,
2510                 com.google.protobuf.TimestampOrBuilder>(
2511                 getCreateTime(), getParentForChildren(), isClean());
2512         createTime_ = null;
2513       }
2514       return createTimeBuilder_;
2515     }
2516 
2517     private com.google.protobuf.Timestamp nextRotationTime_;
2518     private com.google.protobuf.SingleFieldBuilderV3<
2519             com.google.protobuf.Timestamp,
2520             com.google.protobuf.Timestamp.Builder,
2521             com.google.protobuf.TimestampOrBuilder>
2522         nextRotationTimeBuilder_;
2523     /**
2524      *
2525      *
2526      * <pre>
2527      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2528      * the Key Management Service will automatically:
2529      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2530      * 2. Mark the new version as primary.
2531      * Key rotations performed manually via
2532      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2533      * and
2534      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2535      * do not affect
2536      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2537      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2538      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2539      * support automatic rotation. For other keys, this field must be omitted.
2540      * </pre>
2541      *
2542      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2543      *
2544      * @return Whether the nextRotationTime field is set.
2545      */
hasNextRotationTime()2546     public boolean hasNextRotationTime() {
2547       return ((bitField0_ & 0x00000010) != 0);
2548     }
2549     /**
2550      *
2551      *
2552      * <pre>
2553      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2554      * the Key Management Service will automatically:
2555      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2556      * 2. Mark the new version as primary.
2557      * Key rotations performed manually via
2558      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2559      * and
2560      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2561      * do not affect
2562      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2563      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2564      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2565      * support automatic rotation. For other keys, this field must be omitted.
2566      * </pre>
2567      *
2568      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2569      *
2570      * @return The nextRotationTime.
2571      */
getNextRotationTime()2572     public com.google.protobuf.Timestamp getNextRotationTime() {
2573       if (nextRotationTimeBuilder_ == null) {
2574         return nextRotationTime_ == null
2575             ? com.google.protobuf.Timestamp.getDefaultInstance()
2576             : nextRotationTime_;
2577       } else {
2578         return nextRotationTimeBuilder_.getMessage();
2579       }
2580     }
2581     /**
2582      *
2583      *
2584      * <pre>
2585      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2586      * the Key Management Service will automatically:
2587      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2588      * 2. Mark the new version as primary.
2589      * Key rotations performed manually via
2590      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2591      * and
2592      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2593      * do not affect
2594      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2595      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2596      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2597      * support automatic rotation. For other keys, this field must be omitted.
2598      * </pre>
2599      *
2600      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2601      */
setNextRotationTime(com.google.protobuf.Timestamp value)2602     public Builder setNextRotationTime(com.google.protobuf.Timestamp value) {
2603       if (nextRotationTimeBuilder_ == null) {
2604         if (value == null) {
2605           throw new NullPointerException();
2606         }
2607         nextRotationTime_ = value;
2608       } else {
2609         nextRotationTimeBuilder_.setMessage(value);
2610       }
2611       bitField0_ |= 0x00000010;
2612       onChanged();
2613       return this;
2614     }
2615     /**
2616      *
2617      *
2618      * <pre>
2619      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2620      * the Key Management Service will automatically:
2621      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2622      * 2. Mark the new version as primary.
2623      * Key rotations performed manually via
2624      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2625      * and
2626      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2627      * do not affect
2628      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2629      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2630      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2631      * support automatic rotation. For other keys, this field must be omitted.
2632      * </pre>
2633      *
2634      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2635      */
setNextRotationTime(com.google.protobuf.Timestamp.Builder builderForValue)2636     public Builder setNextRotationTime(com.google.protobuf.Timestamp.Builder builderForValue) {
2637       if (nextRotationTimeBuilder_ == null) {
2638         nextRotationTime_ = builderForValue.build();
2639       } else {
2640         nextRotationTimeBuilder_.setMessage(builderForValue.build());
2641       }
2642       bitField0_ |= 0x00000010;
2643       onChanged();
2644       return this;
2645     }
2646     /**
2647      *
2648      *
2649      * <pre>
2650      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2651      * the Key Management Service will automatically:
2652      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2653      * 2. Mark the new version as primary.
2654      * Key rotations performed manually via
2655      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2656      * and
2657      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2658      * do not affect
2659      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2660      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2661      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2662      * support automatic rotation. For other keys, this field must be omitted.
2663      * </pre>
2664      *
2665      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2666      */
mergeNextRotationTime(com.google.protobuf.Timestamp value)2667     public Builder mergeNextRotationTime(com.google.protobuf.Timestamp value) {
2668       if (nextRotationTimeBuilder_ == null) {
2669         if (((bitField0_ & 0x00000010) != 0)
2670             && nextRotationTime_ != null
2671             && nextRotationTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
2672           getNextRotationTimeBuilder().mergeFrom(value);
2673         } else {
2674           nextRotationTime_ = value;
2675         }
2676       } else {
2677         nextRotationTimeBuilder_.mergeFrom(value);
2678       }
2679       bitField0_ |= 0x00000010;
2680       onChanged();
2681       return this;
2682     }
2683     /**
2684      *
2685      *
2686      * <pre>
2687      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2688      * the Key Management Service will automatically:
2689      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2690      * 2. Mark the new version as primary.
2691      * Key rotations performed manually via
2692      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2693      * and
2694      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2695      * do not affect
2696      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2697      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2698      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2699      * support automatic rotation. For other keys, this field must be omitted.
2700      * </pre>
2701      *
2702      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2703      */
clearNextRotationTime()2704     public Builder clearNextRotationTime() {
2705       bitField0_ = (bitField0_ & ~0x00000010);
2706       nextRotationTime_ = null;
2707       if (nextRotationTimeBuilder_ != null) {
2708         nextRotationTimeBuilder_.dispose();
2709         nextRotationTimeBuilder_ = null;
2710       }
2711       onChanged();
2712       return this;
2713     }
2714     /**
2715      *
2716      *
2717      * <pre>
2718      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2719      * the Key Management Service will automatically:
2720      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2721      * 2. Mark the new version as primary.
2722      * Key rotations performed manually via
2723      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2724      * and
2725      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2726      * do not affect
2727      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2728      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2729      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2730      * support automatic rotation. For other keys, this field must be omitted.
2731      * </pre>
2732      *
2733      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2734      */
getNextRotationTimeBuilder()2735     public com.google.protobuf.Timestamp.Builder getNextRotationTimeBuilder() {
2736       bitField0_ |= 0x00000010;
2737       onChanged();
2738       return getNextRotationTimeFieldBuilder().getBuilder();
2739     }
2740     /**
2741      *
2742      *
2743      * <pre>
2744      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2745      * the Key Management Service will automatically:
2746      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2747      * 2. Mark the new version as primary.
2748      * Key rotations performed manually via
2749      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2750      * and
2751      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2752      * do not affect
2753      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2754      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2755      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2756      * support automatic rotation. For other keys, this field must be omitted.
2757      * </pre>
2758      *
2759      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2760      */
getNextRotationTimeOrBuilder()2761     public com.google.protobuf.TimestampOrBuilder getNextRotationTimeOrBuilder() {
2762       if (nextRotationTimeBuilder_ != null) {
2763         return nextRotationTimeBuilder_.getMessageOrBuilder();
2764       } else {
2765         return nextRotationTime_ == null
2766             ? com.google.protobuf.Timestamp.getDefaultInstance()
2767             : nextRotationTime_;
2768       }
2769     }
2770     /**
2771      *
2772      *
2773      * <pre>
2774      * At [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time],
2775      * the Key Management Service will automatically:
2776      * 1. Create a new version of this [CryptoKey][google.cloud.kms.v1.CryptoKey].
2777      * 2. Mark the new version as primary.
2778      * Key rotations performed manually via
2779      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
2780      * and
2781      * [UpdateCryptoKeyPrimaryVersion][google.cloud.kms.v1.KeyManagementService.UpdateCryptoKeyPrimaryVersion]
2782      * do not affect
2783      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time].
2784      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2785      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2786      * support automatic rotation. For other keys, this field must be omitted.
2787      * </pre>
2788      *
2789      * <code>.google.protobuf.Timestamp next_rotation_time = 7;</code>
2790      */
2791     private com.google.protobuf.SingleFieldBuilderV3<
2792             com.google.protobuf.Timestamp,
2793             com.google.protobuf.Timestamp.Builder,
2794             com.google.protobuf.TimestampOrBuilder>
getNextRotationTimeFieldBuilder()2795         getNextRotationTimeFieldBuilder() {
2796       if (nextRotationTimeBuilder_ == null) {
2797         nextRotationTimeBuilder_ =
2798             new com.google.protobuf.SingleFieldBuilderV3<
2799                 com.google.protobuf.Timestamp,
2800                 com.google.protobuf.Timestamp.Builder,
2801                 com.google.protobuf.TimestampOrBuilder>(
2802                 getNextRotationTime(), getParentForChildren(), isClean());
2803         nextRotationTime_ = null;
2804       }
2805       return nextRotationTimeBuilder_;
2806     }
2807 
2808     private com.google.protobuf.SingleFieldBuilderV3<
2809             com.google.protobuf.Duration,
2810             com.google.protobuf.Duration.Builder,
2811             com.google.protobuf.DurationOrBuilder>
2812         rotationPeriodBuilder_;
2813     /**
2814      *
2815      *
2816      * <pre>
2817      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2818      * will be advanced by this period when the service automatically rotates a
2819      * key. Must be at least 24 hours and at most 876,000 hours.
2820      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
2821      * set,
2822      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2823      * must also be set.
2824      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2825      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2826      * support automatic rotation. For other keys, this field must be omitted.
2827      * </pre>
2828      *
2829      * <code>.google.protobuf.Duration rotation_period = 8;</code>
2830      *
2831      * @return Whether the rotationPeriod field is set.
2832      */
2833     @java.lang.Override
hasRotationPeriod()2834     public boolean hasRotationPeriod() {
2835       return rotationScheduleCase_ == 8;
2836     }
2837     /**
2838      *
2839      *
2840      * <pre>
2841      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2842      * will be advanced by this period when the service automatically rotates a
2843      * key. Must be at least 24 hours and at most 876,000 hours.
2844      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
2845      * set,
2846      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2847      * must also be set.
2848      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2849      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2850      * support automatic rotation. For other keys, this field must be omitted.
2851      * </pre>
2852      *
2853      * <code>.google.protobuf.Duration rotation_period = 8;</code>
2854      *
2855      * @return The rotationPeriod.
2856      */
2857     @java.lang.Override
getRotationPeriod()2858     public com.google.protobuf.Duration getRotationPeriod() {
2859       if (rotationPeriodBuilder_ == null) {
2860         if (rotationScheduleCase_ == 8) {
2861           return (com.google.protobuf.Duration) rotationSchedule_;
2862         }
2863         return com.google.protobuf.Duration.getDefaultInstance();
2864       } else {
2865         if (rotationScheduleCase_ == 8) {
2866           return rotationPeriodBuilder_.getMessage();
2867         }
2868         return com.google.protobuf.Duration.getDefaultInstance();
2869       }
2870     }
2871     /**
2872      *
2873      *
2874      * <pre>
2875      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2876      * will be advanced by this period when the service automatically rotates a
2877      * key. Must be at least 24 hours and at most 876,000 hours.
2878      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
2879      * set,
2880      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2881      * must also be set.
2882      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2883      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2884      * support automatic rotation. For other keys, this field must be omitted.
2885      * </pre>
2886      *
2887      * <code>.google.protobuf.Duration rotation_period = 8;</code>
2888      */
setRotationPeriod(com.google.protobuf.Duration value)2889     public Builder setRotationPeriod(com.google.protobuf.Duration value) {
2890       if (rotationPeriodBuilder_ == null) {
2891         if (value == null) {
2892           throw new NullPointerException();
2893         }
2894         rotationSchedule_ = value;
2895         onChanged();
2896       } else {
2897         rotationPeriodBuilder_.setMessage(value);
2898       }
2899       rotationScheduleCase_ = 8;
2900       return this;
2901     }
2902     /**
2903      *
2904      *
2905      * <pre>
2906      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2907      * will be advanced by this period when the service automatically rotates a
2908      * key. Must be at least 24 hours and at most 876,000 hours.
2909      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
2910      * set,
2911      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2912      * must also be set.
2913      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2914      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2915      * support automatic rotation. For other keys, this field must be omitted.
2916      * </pre>
2917      *
2918      * <code>.google.protobuf.Duration rotation_period = 8;</code>
2919      */
setRotationPeriod(com.google.protobuf.Duration.Builder builderForValue)2920     public Builder setRotationPeriod(com.google.protobuf.Duration.Builder builderForValue) {
2921       if (rotationPeriodBuilder_ == null) {
2922         rotationSchedule_ = builderForValue.build();
2923         onChanged();
2924       } else {
2925         rotationPeriodBuilder_.setMessage(builderForValue.build());
2926       }
2927       rotationScheduleCase_ = 8;
2928       return this;
2929     }
2930     /**
2931      *
2932      *
2933      * <pre>
2934      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2935      * will be advanced by this period when the service automatically rotates a
2936      * key. Must be at least 24 hours and at most 876,000 hours.
2937      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
2938      * set,
2939      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2940      * must also be set.
2941      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2942      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2943      * support automatic rotation. For other keys, this field must be omitted.
2944      * </pre>
2945      *
2946      * <code>.google.protobuf.Duration rotation_period = 8;</code>
2947      */
mergeRotationPeriod(com.google.protobuf.Duration value)2948     public Builder mergeRotationPeriod(com.google.protobuf.Duration value) {
2949       if (rotationPeriodBuilder_ == null) {
2950         if (rotationScheduleCase_ == 8
2951             && rotationSchedule_ != com.google.protobuf.Duration.getDefaultInstance()) {
2952           rotationSchedule_ =
2953               com.google.protobuf.Duration.newBuilder(
2954                       (com.google.protobuf.Duration) rotationSchedule_)
2955                   .mergeFrom(value)
2956                   .buildPartial();
2957         } else {
2958           rotationSchedule_ = value;
2959         }
2960         onChanged();
2961       } else {
2962         if (rotationScheduleCase_ == 8) {
2963           rotationPeriodBuilder_.mergeFrom(value);
2964         } else {
2965           rotationPeriodBuilder_.setMessage(value);
2966         }
2967       }
2968       rotationScheduleCase_ = 8;
2969       return this;
2970     }
2971     /**
2972      *
2973      *
2974      * <pre>
2975      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2976      * will be advanced by this period when the service automatically rotates a
2977      * key. Must be at least 24 hours and at most 876,000 hours.
2978      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
2979      * set,
2980      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
2981      * must also be set.
2982      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
2983      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
2984      * support automatic rotation. For other keys, this field must be omitted.
2985      * </pre>
2986      *
2987      * <code>.google.protobuf.Duration rotation_period = 8;</code>
2988      */
clearRotationPeriod()2989     public Builder clearRotationPeriod() {
2990       if (rotationPeriodBuilder_ == null) {
2991         if (rotationScheduleCase_ == 8) {
2992           rotationScheduleCase_ = 0;
2993           rotationSchedule_ = null;
2994           onChanged();
2995         }
2996       } else {
2997         if (rotationScheduleCase_ == 8) {
2998           rotationScheduleCase_ = 0;
2999           rotationSchedule_ = null;
3000         }
3001         rotationPeriodBuilder_.clear();
3002       }
3003       return this;
3004     }
3005     /**
3006      *
3007      *
3008      * <pre>
3009      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
3010      * will be advanced by this period when the service automatically rotates a
3011      * key. Must be at least 24 hours and at most 876,000 hours.
3012      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
3013      * set,
3014      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
3015      * must also be set.
3016      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
3017      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
3018      * support automatic rotation. For other keys, this field must be omitted.
3019      * </pre>
3020      *
3021      * <code>.google.protobuf.Duration rotation_period = 8;</code>
3022      */
getRotationPeriodBuilder()3023     public com.google.protobuf.Duration.Builder getRotationPeriodBuilder() {
3024       return getRotationPeriodFieldBuilder().getBuilder();
3025     }
3026     /**
3027      *
3028      *
3029      * <pre>
3030      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
3031      * will be advanced by this period when the service automatically rotates a
3032      * key. Must be at least 24 hours and at most 876,000 hours.
3033      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
3034      * set,
3035      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
3036      * must also be set.
3037      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
3038      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
3039      * support automatic rotation. For other keys, this field must be omitted.
3040      * </pre>
3041      *
3042      * <code>.google.protobuf.Duration rotation_period = 8;</code>
3043      */
3044     @java.lang.Override
getRotationPeriodOrBuilder()3045     public com.google.protobuf.DurationOrBuilder getRotationPeriodOrBuilder() {
3046       if ((rotationScheduleCase_ == 8) && (rotationPeriodBuilder_ != null)) {
3047         return rotationPeriodBuilder_.getMessageOrBuilder();
3048       } else {
3049         if (rotationScheduleCase_ == 8) {
3050           return (com.google.protobuf.Duration) rotationSchedule_;
3051         }
3052         return com.google.protobuf.Duration.getDefaultInstance();
3053       }
3054     }
3055     /**
3056      *
3057      *
3058      * <pre>
3059      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
3060      * will be advanced by this period when the service automatically rotates a
3061      * key. Must be at least 24 hours and at most 876,000 hours.
3062      * If [rotation_period][google.cloud.kms.v1.CryptoKey.rotation_period] is
3063      * set,
3064      * [next_rotation_time][google.cloud.kms.v1.CryptoKey.next_rotation_time]
3065      * must also be set.
3066      * Keys with [purpose][google.cloud.kms.v1.CryptoKey.purpose]
3067      * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]
3068      * support automatic rotation. For other keys, this field must be omitted.
3069      * </pre>
3070      *
3071      * <code>.google.protobuf.Duration rotation_period = 8;</code>
3072      */
3073     private com.google.protobuf.SingleFieldBuilderV3<
3074             com.google.protobuf.Duration,
3075             com.google.protobuf.Duration.Builder,
3076             com.google.protobuf.DurationOrBuilder>
getRotationPeriodFieldBuilder()3077         getRotationPeriodFieldBuilder() {
3078       if (rotationPeriodBuilder_ == null) {
3079         if (!(rotationScheduleCase_ == 8)) {
3080           rotationSchedule_ = com.google.protobuf.Duration.getDefaultInstance();
3081         }
3082         rotationPeriodBuilder_ =
3083             new com.google.protobuf.SingleFieldBuilderV3<
3084                 com.google.protobuf.Duration,
3085                 com.google.protobuf.Duration.Builder,
3086                 com.google.protobuf.DurationOrBuilder>(
3087                 (com.google.protobuf.Duration) rotationSchedule_,
3088                 getParentForChildren(),
3089                 isClean());
3090         rotationSchedule_ = null;
3091       }
3092       rotationScheduleCase_ = 8;
3093       onChanged();
3094       return rotationPeriodBuilder_;
3095     }
3096 
3097     private com.google.cloud.kms.v1.CryptoKeyVersionTemplate versionTemplate_;
3098     private com.google.protobuf.SingleFieldBuilderV3<
3099             com.google.cloud.kms.v1.CryptoKeyVersionTemplate,
3100             com.google.cloud.kms.v1.CryptoKeyVersionTemplate.Builder,
3101             com.google.cloud.kms.v1.CryptoKeyVersionTemplateOrBuilder>
3102         versionTemplateBuilder_;
3103     /**
3104      *
3105      *
3106      * <pre>
3107      * A template describing settings for new
3108      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3109      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3110      * instances created by either
3111      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3112      * or auto-rotation are controlled by this template.
3113      * </pre>
3114      *
3115      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3116      *
3117      * @return Whether the versionTemplate field is set.
3118      */
hasVersionTemplate()3119     public boolean hasVersionTemplate() {
3120       return ((bitField0_ & 0x00000040) != 0);
3121     }
3122     /**
3123      *
3124      *
3125      * <pre>
3126      * A template describing settings for new
3127      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3128      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3129      * instances created by either
3130      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3131      * or auto-rotation are controlled by this template.
3132      * </pre>
3133      *
3134      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3135      *
3136      * @return The versionTemplate.
3137      */
getVersionTemplate()3138     public com.google.cloud.kms.v1.CryptoKeyVersionTemplate getVersionTemplate() {
3139       if (versionTemplateBuilder_ == null) {
3140         return versionTemplate_ == null
3141             ? com.google.cloud.kms.v1.CryptoKeyVersionTemplate.getDefaultInstance()
3142             : versionTemplate_;
3143       } else {
3144         return versionTemplateBuilder_.getMessage();
3145       }
3146     }
3147     /**
3148      *
3149      *
3150      * <pre>
3151      * A template describing settings for new
3152      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3153      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3154      * instances created by either
3155      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3156      * or auto-rotation are controlled by this template.
3157      * </pre>
3158      *
3159      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3160      */
setVersionTemplate(com.google.cloud.kms.v1.CryptoKeyVersionTemplate value)3161     public Builder setVersionTemplate(com.google.cloud.kms.v1.CryptoKeyVersionTemplate value) {
3162       if (versionTemplateBuilder_ == null) {
3163         if (value == null) {
3164           throw new NullPointerException();
3165         }
3166         versionTemplate_ = value;
3167       } else {
3168         versionTemplateBuilder_.setMessage(value);
3169       }
3170       bitField0_ |= 0x00000040;
3171       onChanged();
3172       return this;
3173     }
3174     /**
3175      *
3176      *
3177      * <pre>
3178      * A template describing settings for new
3179      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3180      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3181      * instances created by either
3182      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3183      * or auto-rotation are controlled by this template.
3184      * </pre>
3185      *
3186      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3187      */
setVersionTemplate( com.google.cloud.kms.v1.CryptoKeyVersionTemplate.Builder builderForValue)3188     public Builder setVersionTemplate(
3189         com.google.cloud.kms.v1.CryptoKeyVersionTemplate.Builder builderForValue) {
3190       if (versionTemplateBuilder_ == null) {
3191         versionTemplate_ = builderForValue.build();
3192       } else {
3193         versionTemplateBuilder_.setMessage(builderForValue.build());
3194       }
3195       bitField0_ |= 0x00000040;
3196       onChanged();
3197       return this;
3198     }
3199     /**
3200      *
3201      *
3202      * <pre>
3203      * A template describing settings for new
3204      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3205      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3206      * instances created by either
3207      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3208      * or auto-rotation are controlled by this template.
3209      * </pre>
3210      *
3211      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3212      */
mergeVersionTemplate(com.google.cloud.kms.v1.CryptoKeyVersionTemplate value)3213     public Builder mergeVersionTemplate(com.google.cloud.kms.v1.CryptoKeyVersionTemplate value) {
3214       if (versionTemplateBuilder_ == null) {
3215         if (((bitField0_ & 0x00000040) != 0)
3216             && versionTemplate_ != null
3217             && versionTemplate_
3218                 != com.google.cloud.kms.v1.CryptoKeyVersionTemplate.getDefaultInstance()) {
3219           getVersionTemplateBuilder().mergeFrom(value);
3220         } else {
3221           versionTemplate_ = value;
3222         }
3223       } else {
3224         versionTemplateBuilder_.mergeFrom(value);
3225       }
3226       bitField0_ |= 0x00000040;
3227       onChanged();
3228       return this;
3229     }
3230     /**
3231      *
3232      *
3233      * <pre>
3234      * A template describing settings for new
3235      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3236      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3237      * instances created by either
3238      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3239      * or auto-rotation are controlled by this template.
3240      * </pre>
3241      *
3242      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3243      */
clearVersionTemplate()3244     public Builder clearVersionTemplate() {
3245       bitField0_ = (bitField0_ & ~0x00000040);
3246       versionTemplate_ = null;
3247       if (versionTemplateBuilder_ != null) {
3248         versionTemplateBuilder_.dispose();
3249         versionTemplateBuilder_ = null;
3250       }
3251       onChanged();
3252       return this;
3253     }
3254     /**
3255      *
3256      *
3257      * <pre>
3258      * A template describing settings for new
3259      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3260      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3261      * instances created by either
3262      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3263      * or auto-rotation are controlled by this template.
3264      * </pre>
3265      *
3266      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3267      */
getVersionTemplateBuilder()3268     public com.google.cloud.kms.v1.CryptoKeyVersionTemplate.Builder getVersionTemplateBuilder() {
3269       bitField0_ |= 0x00000040;
3270       onChanged();
3271       return getVersionTemplateFieldBuilder().getBuilder();
3272     }
3273     /**
3274      *
3275      *
3276      * <pre>
3277      * A template describing settings for new
3278      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3279      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3280      * instances created by either
3281      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3282      * or auto-rotation are controlled by this template.
3283      * </pre>
3284      *
3285      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3286      */
getVersionTemplateOrBuilder()3287     public com.google.cloud.kms.v1.CryptoKeyVersionTemplateOrBuilder getVersionTemplateOrBuilder() {
3288       if (versionTemplateBuilder_ != null) {
3289         return versionTemplateBuilder_.getMessageOrBuilder();
3290       } else {
3291         return versionTemplate_ == null
3292             ? com.google.cloud.kms.v1.CryptoKeyVersionTemplate.getDefaultInstance()
3293             : versionTemplate_;
3294       }
3295     }
3296     /**
3297      *
3298      *
3299      * <pre>
3300      * A template describing settings for new
3301      * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] instances. The
3302      * properties of new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]
3303      * instances created by either
3304      * [CreateCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.CreateCryptoKeyVersion]
3305      * or auto-rotation are controlled by this template.
3306      * </pre>
3307      *
3308      * <code>.google.cloud.kms.v1.CryptoKeyVersionTemplate version_template = 11;</code>
3309      */
3310     private com.google.protobuf.SingleFieldBuilderV3<
3311             com.google.cloud.kms.v1.CryptoKeyVersionTemplate,
3312             com.google.cloud.kms.v1.CryptoKeyVersionTemplate.Builder,
3313             com.google.cloud.kms.v1.CryptoKeyVersionTemplateOrBuilder>
getVersionTemplateFieldBuilder()3314         getVersionTemplateFieldBuilder() {
3315       if (versionTemplateBuilder_ == null) {
3316         versionTemplateBuilder_ =
3317             new com.google.protobuf.SingleFieldBuilderV3<
3318                 com.google.cloud.kms.v1.CryptoKeyVersionTemplate,
3319                 com.google.cloud.kms.v1.CryptoKeyVersionTemplate.Builder,
3320                 com.google.cloud.kms.v1.CryptoKeyVersionTemplateOrBuilder>(
3321                 getVersionTemplate(), getParentForChildren(), isClean());
3322         versionTemplate_ = null;
3323       }
3324       return versionTemplateBuilder_;
3325     }
3326 
3327     private com.google.protobuf.MapField<java.lang.String, java.lang.String> labels_;
3328 
internalGetLabels()3329     private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetLabels() {
3330       if (labels_ == null) {
3331         return com.google.protobuf.MapField.emptyMapField(LabelsDefaultEntryHolder.defaultEntry);
3332       }
3333       return labels_;
3334     }
3335 
3336     private com.google.protobuf.MapField<java.lang.String, java.lang.String>
internalGetMutableLabels()3337         internalGetMutableLabels() {
3338       if (labels_ == null) {
3339         labels_ = com.google.protobuf.MapField.newMapField(LabelsDefaultEntryHolder.defaultEntry);
3340       }
3341       if (!labels_.isMutable()) {
3342         labels_ = labels_.copy();
3343       }
3344       bitField0_ |= 0x00000080;
3345       onChanged();
3346       return labels_;
3347     }
3348 
getLabelsCount()3349     public int getLabelsCount() {
3350       return internalGetLabels().getMap().size();
3351     }
3352     /**
3353      *
3354      *
3355      * <pre>
3356      * Labels with user-defined metadata. For more information, see
3357      * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
3358      * </pre>
3359      *
3360      * <code>map&lt;string, string&gt; labels = 10;</code>
3361      */
3362     @java.lang.Override
containsLabels(java.lang.String key)3363     public boolean containsLabels(java.lang.String key) {
3364       if (key == null) {
3365         throw new NullPointerException("map key");
3366       }
3367       return internalGetLabels().getMap().containsKey(key);
3368     }
3369     /** Use {@link #getLabelsMap()} instead. */
3370     @java.lang.Override
3371     @java.lang.Deprecated
getLabels()3372     public java.util.Map<java.lang.String, java.lang.String> getLabels() {
3373       return getLabelsMap();
3374     }
3375     /**
3376      *
3377      *
3378      * <pre>
3379      * Labels with user-defined metadata. For more information, see
3380      * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
3381      * </pre>
3382      *
3383      * <code>map&lt;string, string&gt; labels = 10;</code>
3384      */
3385     @java.lang.Override
getLabelsMap()3386     public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
3387       return internalGetLabels().getMap();
3388     }
3389     /**
3390      *
3391      *
3392      * <pre>
3393      * Labels with user-defined metadata. For more information, see
3394      * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
3395      * </pre>
3396      *
3397      * <code>map&lt;string, string&gt; labels = 10;</code>
3398      */
3399     @java.lang.Override
getLabelsOrDefault( java.lang.String key, java.lang.String defaultValue)3400     public /* nullable */ java.lang.String getLabelsOrDefault(
3401         java.lang.String key,
3402         /* nullable */
3403         java.lang.String defaultValue) {
3404       if (key == null) {
3405         throw new NullPointerException("map key");
3406       }
3407       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
3408       return map.containsKey(key) ? map.get(key) : defaultValue;
3409     }
3410     /**
3411      *
3412      *
3413      * <pre>
3414      * Labels with user-defined metadata. For more information, see
3415      * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
3416      * </pre>
3417      *
3418      * <code>map&lt;string, string&gt; labels = 10;</code>
3419      */
3420     @java.lang.Override
getLabelsOrThrow(java.lang.String key)3421     public java.lang.String getLabelsOrThrow(java.lang.String key) {
3422       if (key == null) {
3423         throw new NullPointerException("map key");
3424       }
3425       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
3426       if (!map.containsKey(key)) {
3427         throw new java.lang.IllegalArgumentException();
3428       }
3429       return map.get(key);
3430     }
3431 
clearLabels()3432     public Builder clearLabels() {
3433       bitField0_ = (bitField0_ & ~0x00000080);
3434       internalGetMutableLabels().getMutableMap().clear();
3435       return this;
3436     }
3437     /**
3438      *
3439      *
3440      * <pre>
3441      * Labels with user-defined metadata. For more information, see
3442      * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
3443      * </pre>
3444      *
3445      * <code>map&lt;string, string&gt; labels = 10;</code>
3446      */
removeLabels(java.lang.String key)3447     public Builder removeLabels(java.lang.String key) {
3448       if (key == null) {
3449         throw new NullPointerException("map key");
3450       }
3451       internalGetMutableLabels().getMutableMap().remove(key);
3452       return this;
3453     }
3454     /** Use alternate mutation accessors instead. */
3455     @java.lang.Deprecated
getMutableLabels()3456     public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
3457       bitField0_ |= 0x00000080;
3458       return internalGetMutableLabels().getMutableMap();
3459     }
3460     /**
3461      *
3462      *
3463      * <pre>
3464      * Labels with user-defined metadata. For more information, see
3465      * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
3466      * </pre>
3467      *
3468      * <code>map&lt;string, string&gt; labels = 10;</code>
3469      */
putLabels(java.lang.String key, java.lang.String value)3470     public Builder putLabels(java.lang.String key, java.lang.String value) {
3471       if (key == null) {
3472         throw new NullPointerException("map key");
3473       }
3474       if (value == null) {
3475         throw new NullPointerException("map value");
3476       }
3477       internalGetMutableLabels().getMutableMap().put(key, value);
3478       bitField0_ |= 0x00000080;
3479       return this;
3480     }
3481     /**
3482      *
3483      *
3484      * <pre>
3485      * Labels with user-defined metadata. For more information, see
3486      * [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).
3487      * </pre>
3488      *
3489      * <code>map&lt;string, string&gt; labels = 10;</code>
3490      */
putAllLabels(java.util.Map<java.lang.String, java.lang.String> values)3491     public Builder putAllLabels(java.util.Map<java.lang.String, java.lang.String> values) {
3492       internalGetMutableLabels().getMutableMap().putAll(values);
3493       bitField0_ |= 0x00000080;
3494       return this;
3495     }
3496 
3497     private boolean importOnly_;
3498     /**
3499      *
3500      *
3501      * <pre>
3502      * Immutable. Whether this key may contain imported versions only.
3503      * </pre>
3504      *
3505      * <code>bool import_only = 13 [(.google.api.field_behavior) = IMMUTABLE];</code>
3506      *
3507      * @return The importOnly.
3508      */
3509     @java.lang.Override
getImportOnly()3510     public boolean getImportOnly() {
3511       return importOnly_;
3512     }
3513     /**
3514      *
3515      *
3516      * <pre>
3517      * Immutable. Whether this key may contain imported versions only.
3518      * </pre>
3519      *
3520      * <code>bool import_only = 13 [(.google.api.field_behavior) = IMMUTABLE];</code>
3521      *
3522      * @param value The importOnly to set.
3523      * @return This builder for chaining.
3524      */
setImportOnly(boolean value)3525     public Builder setImportOnly(boolean value) {
3526 
3527       importOnly_ = value;
3528       bitField0_ |= 0x00000100;
3529       onChanged();
3530       return this;
3531     }
3532     /**
3533      *
3534      *
3535      * <pre>
3536      * Immutable. Whether this key may contain imported versions only.
3537      * </pre>
3538      *
3539      * <code>bool import_only = 13 [(.google.api.field_behavior) = IMMUTABLE];</code>
3540      *
3541      * @return This builder for chaining.
3542      */
clearImportOnly()3543     public Builder clearImportOnly() {
3544       bitField0_ = (bitField0_ & ~0x00000100);
3545       importOnly_ = false;
3546       onChanged();
3547       return this;
3548     }
3549 
3550     private com.google.protobuf.Duration destroyScheduledDuration_;
3551     private com.google.protobuf.SingleFieldBuilderV3<
3552             com.google.protobuf.Duration,
3553             com.google.protobuf.Duration.Builder,
3554             com.google.protobuf.DurationOrBuilder>
3555         destroyScheduledDurationBuilder_;
3556     /**
3557      *
3558      *
3559      * <pre>
3560      * Immutable. The period of time that versions of this key spend in the
3561      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3562      * state before transitioning to
3563      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3564      * If not specified at creation time, the default duration is 24 hours.
3565      * </pre>
3566      *
3567      * <code>
3568      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3569      * </code>
3570      *
3571      * @return Whether the destroyScheduledDuration field is set.
3572      */
hasDestroyScheduledDuration()3573     public boolean hasDestroyScheduledDuration() {
3574       return ((bitField0_ & 0x00000200) != 0);
3575     }
3576     /**
3577      *
3578      *
3579      * <pre>
3580      * Immutable. The period of time that versions of this key spend in the
3581      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3582      * state before transitioning to
3583      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3584      * If not specified at creation time, the default duration is 24 hours.
3585      * </pre>
3586      *
3587      * <code>
3588      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3589      * </code>
3590      *
3591      * @return The destroyScheduledDuration.
3592      */
getDestroyScheduledDuration()3593     public com.google.protobuf.Duration getDestroyScheduledDuration() {
3594       if (destroyScheduledDurationBuilder_ == null) {
3595         return destroyScheduledDuration_ == null
3596             ? com.google.protobuf.Duration.getDefaultInstance()
3597             : destroyScheduledDuration_;
3598       } else {
3599         return destroyScheduledDurationBuilder_.getMessage();
3600       }
3601     }
3602     /**
3603      *
3604      *
3605      * <pre>
3606      * Immutable. The period of time that versions of this key spend in the
3607      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3608      * state before transitioning to
3609      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3610      * If not specified at creation time, the default duration is 24 hours.
3611      * </pre>
3612      *
3613      * <code>
3614      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3615      * </code>
3616      */
setDestroyScheduledDuration(com.google.protobuf.Duration value)3617     public Builder setDestroyScheduledDuration(com.google.protobuf.Duration value) {
3618       if (destroyScheduledDurationBuilder_ == null) {
3619         if (value == null) {
3620           throw new NullPointerException();
3621         }
3622         destroyScheduledDuration_ = value;
3623       } else {
3624         destroyScheduledDurationBuilder_.setMessage(value);
3625       }
3626       bitField0_ |= 0x00000200;
3627       onChanged();
3628       return this;
3629     }
3630     /**
3631      *
3632      *
3633      * <pre>
3634      * Immutable. The period of time that versions of this key spend in the
3635      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3636      * state before transitioning to
3637      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3638      * If not specified at creation time, the default duration is 24 hours.
3639      * </pre>
3640      *
3641      * <code>
3642      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3643      * </code>
3644      */
setDestroyScheduledDuration( com.google.protobuf.Duration.Builder builderForValue)3645     public Builder setDestroyScheduledDuration(
3646         com.google.protobuf.Duration.Builder builderForValue) {
3647       if (destroyScheduledDurationBuilder_ == null) {
3648         destroyScheduledDuration_ = builderForValue.build();
3649       } else {
3650         destroyScheduledDurationBuilder_.setMessage(builderForValue.build());
3651       }
3652       bitField0_ |= 0x00000200;
3653       onChanged();
3654       return this;
3655     }
3656     /**
3657      *
3658      *
3659      * <pre>
3660      * Immutable. The period of time that versions of this key spend in the
3661      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3662      * state before transitioning to
3663      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3664      * If not specified at creation time, the default duration is 24 hours.
3665      * </pre>
3666      *
3667      * <code>
3668      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3669      * </code>
3670      */
mergeDestroyScheduledDuration(com.google.protobuf.Duration value)3671     public Builder mergeDestroyScheduledDuration(com.google.protobuf.Duration value) {
3672       if (destroyScheduledDurationBuilder_ == null) {
3673         if (((bitField0_ & 0x00000200) != 0)
3674             && destroyScheduledDuration_ != null
3675             && destroyScheduledDuration_ != com.google.protobuf.Duration.getDefaultInstance()) {
3676           getDestroyScheduledDurationBuilder().mergeFrom(value);
3677         } else {
3678           destroyScheduledDuration_ = value;
3679         }
3680       } else {
3681         destroyScheduledDurationBuilder_.mergeFrom(value);
3682       }
3683       bitField0_ |= 0x00000200;
3684       onChanged();
3685       return this;
3686     }
3687     /**
3688      *
3689      *
3690      * <pre>
3691      * Immutable. The period of time that versions of this key spend in the
3692      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3693      * state before transitioning to
3694      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3695      * If not specified at creation time, the default duration is 24 hours.
3696      * </pre>
3697      *
3698      * <code>
3699      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3700      * </code>
3701      */
clearDestroyScheduledDuration()3702     public Builder clearDestroyScheduledDuration() {
3703       bitField0_ = (bitField0_ & ~0x00000200);
3704       destroyScheduledDuration_ = null;
3705       if (destroyScheduledDurationBuilder_ != null) {
3706         destroyScheduledDurationBuilder_.dispose();
3707         destroyScheduledDurationBuilder_ = null;
3708       }
3709       onChanged();
3710       return this;
3711     }
3712     /**
3713      *
3714      *
3715      * <pre>
3716      * Immutable. The period of time that versions of this key spend in the
3717      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3718      * state before transitioning to
3719      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3720      * If not specified at creation time, the default duration is 24 hours.
3721      * </pre>
3722      *
3723      * <code>
3724      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3725      * </code>
3726      */
getDestroyScheduledDurationBuilder()3727     public com.google.protobuf.Duration.Builder getDestroyScheduledDurationBuilder() {
3728       bitField0_ |= 0x00000200;
3729       onChanged();
3730       return getDestroyScheduledDurationFieldBuilder().getBuilder();
3731     }
3732     /**
3733      *
3734      *
3735      * <pre>
3736      * Immutable. The period of time that versions of this key spend in the
3737      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3738      * state before transitioning to
3739      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3740      * If not specified at creation time, the default duration is 24 hours.
3741      * </pre>
3742      *
3743      * <code>
3744      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3745      * </code>
3746      */
getDestroyScheduledDurationOrBuilder()3747     public com.google.protobuf.DurationOrBuilder getDestroyScheduledDurationOrBuilder() {
3748       if (destroyScheduledDurationBuilder_ != null) {
3749         return destroyScheduledDurationBuilder_.getMessageOrBuilder();
3750       } else {
3751         return destroyScheduledDuration_ == null
3752             ? com.google.protobuf.Duration.getDefaultInstance()
3753             : destroyScheduledDuration_;
3754       }
3755     }
3756     /**
3757      *
3758      *
3759      * <pre>
3760      * Immutable. The period of time that versions of this key spend in the
3761      * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
3762      * state before transitioning to
3763      * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
3764      * If not specified at creation time, the default duration is 24 hours.
3765      * </pre>
3766      *
3767      * <code>
3768      * .google.protobuf.Duration destroy_scheduled_duration = 14 [(.google.api.field_behavior) = IMMUTABLE];
3769      * </code>
3770      */
3771     private com.google.protobuf.SingleFieldBuilderV3<
3772             com.google.protobuf.Duration,
3773             com.google.protobuf.Duration.Builder,
3774             com.google.protobuf.DurationOrBuilder>
getDestroyScheduledDurationFieldBuilder()3775         getDestroyScheduledDurationFieldBuilder() {
3776       if (destroyScheduledDurationBuilder_ == null) {
3777         destroyScheduledDurationBuilder_ =
3778             new com.google.protobuf.SingleFieldBuilderV3<
3779                 com.google.protobuf.Duration,
3780                 com.google.protobuf.Duration.Builder,
3781                 com.google.protobuf.DurationOrBuilder>(
3782                 getDestroyScheduledDuration(), getParentForChildren(), isClean());
3783         destroyScheduledDuration_ = null;
3784       }
3785       return destroyScheduledDurationBuilder_;
3786     }
3787 
3788     private java.lang.Object cryptoKeyBackend_ = "";
3789     /**
3790      *
3791      *
3792      * <pre>
3793      * Immutable. The resource name of the backend environment where the key
3794      * material for all [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]
3795      * associated with this [CryptoKey][google.cloud.kms.v1.CryptoKey] reside and
3796      * where all related cryptographic operations are performed. Only applicable
3797      * if [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] have a
3798      * [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] of
3799      * [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
3800      * resource name in the format `projects/&#42;&#47;locations/&#42;&#47;ekmConnections/&#42;`.
3801      * Note, this list is non-exhaustive and may apply to additional
3802      * [ProtectionLevels][google.cloud.kms.v1.ProtectionLevel] in the future.
3803      * </pre>
3804      *
3805      * <code>
3806      * string crypto_key_backend = 15 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }
3807      * </code>
3808      *
3809      * @return The cryptoKeyBackend.
3810      */
getCryptoKeyBackend()3811     public java.lang.String getCryptoKeyBackend() {
3812       java.lang.Object ref = cryptoKeyBackend_;
3813       if (!(ref instanceof java.lang.String)) {
3814         com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
3815         java.lang.String s = bs.toStringUtf8();
3816         cryptoKeyBackend_ = s;
3817         return s;
3818       } else {
3819         return (java.lang.String) ref;
3820       }
3821     }
3822     /**
3823      *
3824      *
3825      * <pre>
3826      * Immutable. The resource name of the backend environment where the key
3827      * material for all [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]
3828      * associated with this [CryptoKey][google.cloud.kms.v1.CryptoKey] reside and
3829      * where all related cryptographic operations are performed. Only applicable
3830      * if [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] have a
3831      * [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] of
3832      * [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
3833      * resource name in the format `projects/&#42;&#47;locations/&#42;&#47;ekmConnections/&#42;`.
3834      * Note, this list is non-exhaustive and may apply to additional
3835      * [ProtectionLevels][google.cloud.kms.v1.ProtectionLevel] in the future.
3836      * </pre>
3837      *
3838      * <code>
3839      * string crypto_key_backend = 15 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }
3840      * </code>
3841      *
3842      * @return The bytes for cryptoKeyBackend.
3843      */
getCryptoKeyBackendBytes()3844     public com.google.protobuf.ByteString getCryptoKeyBackendBytes() {
3845       java.lang.Object ref = cryptoKeyBackend_;
3846       if (ref instanceof String) {
3847         com.google.protobuf.ByteString b =
3848             com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
3849         cryptoKeyBackend_ = b;
3850         return b;
3851       } else {
3852         return (com.google.protobuf.ByteString) ref;
3853       }
3854     }
3855     /**
3856      *
3857      *
3858      * <pre>
3859      * Immutable. The resource name of the backend environment where the key
3860      * material for all [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]
3861      * associated with this [CryptoKey][google.cloud.kms.v1.CryptoKey] reside and
3862      * where all related cryptographic operations are performed. Only applicable
3863      * if [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] have a
3864      * [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] of
3865      * [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
3866      * resource name in the format `projects/&#42;&#47;locations/&#42;&#47;ekmConnections/&#42;`.
3867      * Note, this list is non-exhaustive and may apply to additional
3868      * [ProtectionLevels][google.cloud.kms.v1.ProtectionLevel] in the future.
3869      * </pre>
3870      *
3871      * <code>
3872      * string crypto_key_backend = 15 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }
3873      * </code>
3874      *
3875      * @param value The cryptoKeyBackend to set.
3876      * @return This builder for chaining.
3877      */
setCryptoKeyBackend(java.lang.String value)3878     public Builder setCryptoKeyBackend(java.lang.String value) {
3879       if (value == null) {
3880         throw new NullPointerException();
3881       }
3882       cryptoKeyBackend_ = value;
3883       bitField0_ |= 0x00000400;
3884       onChanged();
3885       return this;
3886     }
3887     /**
3888      *
3889      *
3890      * <pre>
3891      * Immutable. The resource name of the backend environment where the key
3892      * material for all [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]
3893      * associated with this [CryptoKey][google.cloud.kms.v1.CryptoKey] reside and
3894      * where all related cryptographic operations are performed. Only applicable
3895      * if [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] have a
3896      * [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] of
3897      * [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
3898      * resource name in the format `projects/&#42;&#47;locations/&#42;&#47;ekmConnections/&#42;`.
3899      * Note, this list is non-exhaustive and may apply to additional
3900      * [ProtectionLevels][google.cloud.kms.v1.ProtectionLevel] in the future.
3901      * </pre>
3902      *
3903      * <code>
3904      * string crypto_key_backend = 15 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }
3905      * </code>
3906      *
3907      * @return This builder for chaining.
3908      */
clearCryptoKeyBackend()3909     public Builder clearCryptoKeyBackend() {
3910       cryptoKeyBackend_ = getDefaultInstance().getCryptoKeyBackend();
3911       bitField0_ = (bitField0_ & ~0x00000400);
3912       onChanged();
3913       return this;
3914     }
3915     /**
3916      *
3917      *
3918      * <pre>
3919      * Immutable. The resource name of the backend environment where the key
3920      * material for all [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]
3921      * associated with this [CryptoKey][google.cloud.kms.v1.CryptoKey] reside and
3922      * where all related cryptographic operations are performed. Only applicable
3923      * if [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] have a
3924      * [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] of
3925      * [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], with the
3926      * resource name in the format `projects/&#42;&#47;locations/&#42;&#47;ekmConnections/&#42;`.
3927      * Note, this list is non-exhaustive and may apply to additional
3928      * [ProtectionLevels][google.cloud.kms.v1.ProtectionLevel] in the future.
3929      * </pre>
3930      *
3931      * <code>
3932      * string crypto_key_backend = 15 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }
3933      * </code>
3934      *
3935      * @param value The bytes for cryptoKeyBackend to set.
3936      * @return This builder for chaining.
3937      */
setCryptoKeyBackendBytes(com.google.protobuf.ByteString value)3938     public Builder setCryptoKeyBackendBytes(com.google.protobuf.ByteString value) {
3939       if (value == null) {
3940         throw new NullPointerException();
3941       }
3942       checkByteStringIsUtf8(value);
3943       cryptoKeyBackend_ = value;
3944       bitField0_ |= 0x00000400;
3945       onChanged();
3946       return this;
3947     }
3948 
3949     @java.lang.Override
setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)3950     public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
3951       return super.setUnknownFields(unknownFields);
3952     }
3953 
3954     @java.lang.Override
mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields)3955     public final Builder mergeUnknownFields(
3956         final com.google.protobuf.UnknownFieldSet unknownFields) {
3957       return super.mergeUnknownFields(unknownFields);
3958     }
3959 
3960     // @@protoc_insertion_point(builder_scope:google.cloud.kms.v1.CryptoKey)
3961   }
3962 
3963   // @@protoc_insertion_point(class_scope:google.cloud.kms.v1.CryptoKey)
3964   private static final com.google.cloud.kms.v1.CryptoKey DEFAULT_INSTANCE;
3965 
3966   static {
3967     DEFAULT_INSTANCE = new com.google.cloud.kms.v1.CryptoKey();
3968   }
3969 
getDefaultInstance()3970   public static com.google.cloud.kms.v1.CryptoKey getDefaultInstance() {
3971     return DEFAULT_INSTANCE;
3972   }
3973 
3974   private static final com.google.protobuf.Parser<CryptoKey> PARSER =
3975       new com.google.protobuf.AbstractParser<CryptoKey>() {
3976         @java.lang.Override
3977         public CryptoKey parsePartialFrom(
3978             com.google.protobuf.CodedInputStream input,
3979             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
3980             throws com.google.protobuf.InvalidProtocolBufferException {
3981           Builder builder = newBuilder();
3982           try {
3983             builder.mergeFrom(input, extensionRegistry);
3984           } catch (com.google.protobuf.InvalidProtocolBufferException e) {
3985             throw e.setUnfinishedMessage(builder.buildPartial());
3986           } catch (com.google.protobuf.UninitializedMessageException e) {
3987             throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
3988           } catch (java.io.IOException e) {
3989             throw new com.google.protobuf.InvalidProtocolBufferException(e)
3990                 .setUnfinishedMessage(builder.buildPartial());
3991           }
3992           return builder.buildPartial();
3993         }
3994       };
3995 
parser()3996   public static com.google.protobuf.Parser<CryptoKey> parser() {
3997     return PARSER;
3998   }
3999 
4000   @java.lang.Override
getParserForType()4001   public com.google.protobuf.Parser<CryptoKey> getParserForType() {
4002     return PARSER;
4003   }
4004 
4005   @java.lang.Override
getDefaultInstanceForType()4006   public com.google.cloud.kms.v1.CryptoKey getDefaultInstanceForType() {
4007     return DEFAULT_INSTANCE;
4008   }
4009 }
4010