@@ -22,7 +22,6 @@ import "google/protobuf/duration.proto";
22
22
import "google/protobuf/timestamp.proto" ;
23
23
import "google/type/expr.proto" ;
24
24
25
- option cc_enable_arenas = true ;
26
25
option csharp_namespace = "Google.Cloud.Security.PrivateCA.V1" ;
27
26
option go_package = "cloud.google.com/go/security/privateca/apiv1/privatecapb;privatecapb" ;
28
27
option java_multiple_files = true ;
@@ -180,10 +179,32 @@ message CertificateAuthority {
180
179
EC_P384_SHA384 = 5 ;
181
180
}
182
181
183
- // Output only. The resource name for this
182
+ // User-defined URLs for accessing content published by this
183
+ // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
184
+ message UserDefinedAccessUrls {
185
+ // Optional. A list of URLs where the issuer CA certificate may be
186
+ // downloaded, which appears in the "Authority Information Access" extension
187
+ // in the certificate. If specified, the default [Cloud Storage
188
+ // URLs][google.cloud.security.privateca.v1.CertificateAuthority.AccessUrls.ca_certificate_access_url]
189
+ // will be omitted.
190
+ repeated string aia_issuing_certificate_urls = 1
191
+ [(google.api.field_behavior ) = OPTIONAL ];
192
+
193
+ // Optional. A list of URLs where to obtain CRL information, i.e.
194
+ // the DistributionPoint.fullName described by
195
+ // https://tools.ietf.org/html/rfc5280#section-4.2.1.13.
196
+ // If specified, the default
197
+ // [Cloud Storage
198
+ // URLs][google.cloud.security.privateca.v1.CertificateAuthority.AccessUrls.crl_access_urls]
199
+ // will be omitted.
200
+ repeated string crl_access_urls = 2
201
+ [(google.api.field_behavior ) = OPTIONAL ];
202
+ }
203
+
204
+ // Identifier. The resource name for this
184
205
// [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]
185
206
// in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
186
- string name = 1 [(google.api.field_behavior ) = OUTPUT_ONLY ];
207
+ string name = 1 [(google.api.field_behavior ) = IDENTIFIER ];
187
208
188
209
// Required. Immutable. The
189
210
// [Type][google.cloud.security.privateca.v1.CertificateAuthority.Type] of
@@ -302,6 +323,18 @@ message CertificateAuthority {
302
323
303
324
// Optional. Labels with user-defined metadata.
304
325
map <string , string > labels = 17 [(google.api.field_behavior ) = OPTIONAL ];
326
+
327
+ // Optional. User-defined URLs for CA certificate and CRLs. The service does
328
+ // not publish content to these URLs. It is up to the user to mirror content
329
+ // to these URLs.
330
+ UserDefinedAccessUrls user_defined_access_urls = 18
331
+ [(google.api.field_behavior ) = OPTIONAL ];
332
+
333
+ // Output only. Reserved for future use.
334
+ bool satisfies_pzs = 19 [(google.api.field_behavior ) = OUTPUT_ONLY ];
335
+
336
+ // Output only. Reserved for future use.
337
+ bool satisfies_pzi = 20 [(google.api.field_behavior ) = OUTPUT_ONLY ];
305
338
}
306
339
307
340
// A [CaPool][google.cloud.security.privateca.v1.CaPool] represents a group of
@@ -472,6 +505,16 @@ message CaPool {
472
505
repeated AllowedKeyType allowed_key_types = 1
473
506
[(google.api.field_behavior ) = OPTIONAL ];
474
507
508
+ // Optional. The duration to backdate all certificates issued from this
509
+ // [CaPool][google.cloud.security.privateca.v1.CaPool]. If not set, the
510
+ // certificates will be issued with a not_before_time of the issuance time
511
+ // (i.e. the current time). If set, the certificates will be issued with a
512
+ // not_before_time of the issuance time minus the backdate_duration. The
513
+ // not_after_time will be adjusted to preserve the requested lifetime. The
514
+ // backdate_duration must be less than or equal to 48 hours.
515
+ google.protobuf.Duration backdate_duration = 7
516
+ [(google.api.field_behavior ) = OPTIONAL ];
517
+
475
518
// Optional. The maximum lifetime allowed for issued
476
519
// [Certificates][google.cloud.security.privateca.v1.Certificate]. Note that
477
520
// if the issuing
@@ -529,10 +572,10 @@ message CaPool {
529
572
[(google.api.field_behavior ) = OPTIONAL ];
530
573
}
531
574
532
- // Output only . The resource name for this
575
+ // Identifier . The resource name for this
533
576
// [CaPool][google.cloud.security.privateca.v1.CaPool] in the format
534
577
// `projects/*/locations/*/caPools/*`.
535
- string name = 1 [(google.api.field_behavior ) = OUTPUT_ONLY ];
578
+ string name = 1 [(google.api.field_behavior ) = IDENTIFIER ];
536
579
537
580
// Required. Immutable. The
538
581
// [Tier][google.cloud.security.privateca.v1.CaPool.Tier] of this
@@ -610,11 +653,11 @@ message CertificateRevocationList {
610
653
SUPERSEDED = 2 ;
611
654
}
612
655
613
- // Output only . The resource name for this
656
+ // Identifier . The resource name for this
614
657
// [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList]
615
658
// in the format `projects/*/locations/*/caPools/*certificateAuthorities/*/
616
659
// certificateRevocationLists/*`.
617
- string name = 1 [(google.api.field_behavior ) = OUTPUT_ONLY ];
660
+ string name = 1 [(google.api.field_behavior ) = IDENTIFIER ];
618
661
619
662
// Output only. The CRL sequence number that appears in pem_crl.
620
663
int64 sequence_number = 2 [(google.api.field_behavior ) = OUTPUT_ONLY ];
@@ -680,15 +723,10 @@ message Certificate {
680
723
google.protobuf.Timestamp revocation_time = 2 ;
681
724
}
682
725
683
- // Output only . The resource name for this
726
+ // Identifier . The resource name for this
684
727
// [Certificate][google.cloud.security.privateca.v1.Certificate] in the format
685
728
// `projects/*/locations/*/caPools/*/certificates/*`.
686
- string name = 1 [
687
- (google.api.field_behavior ) = OUTPUT_ONLY ,
688
- (google.api.resource_reference ) = {
689
- type : "privateca.googleapis.com/Certificate"
690
- }
691
- ];
729
+ string name = 1 [(google.api.field_behavior ) = IDENTIFIER ];
692
730
693
731
// The config used to create a signed X.509 certificate.
694
732
oneof certificate_config {
@@ -782,15 +820,10 @@ message CertificateTemplate {
782
820
pattern : "projects/{project}/locations/{location}/certificateTemplates/{certificate_template}"
783
821
};
784
822
785
- // Output only . The resource name for this
823
+ // Identifier . The resource name for this
786
824
// [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate]
787
825
// in the format `projects/*/locations/*/certificateTemplates/*`.
788
- string name = 1 [
789
- (google.api.field_behavior ) = OUTPUT_ONLY ,
790
- (google.api.resource_reference ) = {
791
- type : "privateca.googleapis.com/CertificateTemplate"
792
- }
793
- ];
826
+ string name = 1 [(google.api.field_behavior ) = IDENTIFIER ];
794
827
795
828
// Optional. The maximum lifetime allowed for issued
796
829
// [Certificates][google.cloud.security.privateca.v1.Certificate] that use
@@ -873,19 +906,19 @@ message CertificateTemplate {
873
906
// usage fields, fields specific to CA certificates, certificate policy
874
907
// extensions and custom extensions.
875
908
message X509Parameters {
876
- // Describes values that are relevant in a CA certificate.
909
+ // Describes the X.509 basic constraints extension, per [RFC 5280
910
+ // section 4.2.1.9](https://tools.ietf.org/html/rfc5280#section-4.2.1.9)
877
911
message CaOptions {
878
- // Optional. Refers to the "CA" X.509 extension, which is a boolean value .
879
- // When this value is missing, the extension will be omitted from the CA
880
- // certificate.
912
+ // Optional. Refers to the "CA" boolean field in the X.509 extension .
913
+ // When this value is missing, the basic constraints extension will be
914
+ // omitted from the certificate.
881
915
optional bool is_ca = 1 [(google.api.field_behavior ) = OPTIONAL ];
882
916
883
- // Optional. Refers to the path length restriction X.509 extension. For a CA
884
- // certificate, this value describes the depth of subordinate CA
885
- // certificates that are allowed.
886
- // If this value is less than 0, the request will fail.
887
- // If this value is missing, the max path length will be omitted from the
888
- // CA certificate.
917
+ // Optional. Refers to the path length constraint field in the X.509
918
+ // extension. For a CA certificate, this value describes the depth of
919
+ // subordinate CA certificates that are allowed. If this value is less than
920
+ // 0, the request will fail. If this value is missing, the max path length
921
+ // will be omitted from the certificate.
889
922
optional int32 max_issuer_path_length = 2
890
923
[(google.api.field_behavior ) = OPTIONAL ];
891
924
}
@@ -951,7 +984,9 @@ message X509Parameters {
951
984
952
985
// Optional. Describes options in this
953
986
// [X509Parameters][google.cloud.security.privateca.v1.X509Parameters] that
954
- // are relevant in a CA certificate.
987
+ // are relevant in a CA certificate. If not specified, a default basic
988
+ // constraints extension with `is_ca=false` will be added for leaf
989
+ // certificates.
955
990
CaOptions ca_options = 2 [(google.api.field_behavior ) = OPTIONAL ];
956
991
957
992
// Optional. Describes the X.509 certificate policy object identifiers, per
@@ -1163,6 +1198,12 @@ message CertificateDescription {
1163
1198
1164
1199
// The hash of the x.509 certificate.
1165
1200
CertificateFingerprint cert_fingerprint = 8 ;
1201
+
1202
+ // The hash of the pre-signed certificate, which will be signed by the CA.
1203
+ // Corresponds to the TBS Certificate in
1204
+ // https://tools.ietf.org/html/rfc5280#section-4.1.2. The field will always be
1205
+ // populated.
1206
+ string tbs_certificate_digest = 9 ;
1166
1207
}
1167
1208
1168
1209
// An [ObjectId][google.cloud.security.privateca.v1.ObjectId] specifies an
@@ -1267,6 +1308,31 @@ message KeyUsage {
1267
1308
repeated ObjectId unknown_extended_key_usages = 3 ;
1268
1309
}
1269
1310
1311
+ // [AttributeTypeAndValue][google.cloud.security.privateca.v1.AttributeTypeAndValue]
1312
+ // specifies an attribute type and value. It can use either a OID or enum value
1313
+ // to specify the attribute type.
1314
+ message AttributeTypeAndValue {
1315
+ // The attribute type for the attribute and value pair.
1316
+ oneof attribute_type {
1317
+ // The attribute type of the attribute and value pair.
1318
+ AttributeType type = 1 ;
1319
+
1320
+ // Object ID for an attribute type of an attribute and value pair.
1321
+ ObjectId object_id = 2 ;
1322
+ }
1323
+
1324
+ // The value for the attribute type.
1325
+ string value = 3 ;
1326
+ }
1327
+
1328
+ // [RelativeDistinguishedName][google.cloud.security.privateca.v1.RelativeDistinguishedName]
1329
+ // specifies a relative distinguished name which will be used to build a
1330
+ // distinguished name.
1331
+ message RelativeDistinguishedName {
1332
+ // Attributes describes the attribute value assertions in the RDN.
1333
+ repeated AttributeTypeAndValue attributes = 1 ;
1334
+ }
1335
+
1270
1336
// [Subject][google.cloud.security.privateca.v1.Subject] describes parts of a
1271
1337
// distinguished name that, in turn, describes the subject of the certificate.
1272
1338
message Subject {
@@ -1293,6 +1359,9 @@ message Subject {
1293
1359
1294
1360
// The postal code of the subject.
1295
1361
string postal_code = 8 ;
1362
+
1363
+ // This field can be used in place of the named subject fields.
1364
+ repeated RelativeDistinguishedName rdn_sequence = 9 ;
1296
1365
}
1297
1366
1298
1367
// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames]
@@ -1419,6 +1488,37 @@ message CertificateExtensionConstraints {
1419
1488
[(google.api.field_behavior ) = OPTIONAL ];
1420
1489
}
1421
1490
1491
+ // [AttributeType][google.cloud.security.privateca.v1.AttributeType] specifies
1492
+ // the type of Attribute in a relative distinguished name.
1493
+ enum AttributeType {
1494
+ // Attribute type is unspecified.
1495
+ ATTRIBUTE_TYPE_UNSPECIFIED = 0 ;
1496
+
1497
+ // The "common name" of the subject.
1498
+ COMMON_NAME = 1 ;
1499
+
1500
+ // The country code of the subject.
1501
+ COUNTRY_CODE = 2 ;
1502
+
1503
+ // The organization of the subject.
1504
+ ORGANIZATION = 3 ;
1505
+
1506
+ // The organizational unit of the subject.
1507
+ ORGANIZATIONAL_UNIT = 4 ;
1508
+
1509
+ // The locality or city of the subject.
1510
+ LOCALITY = 5 ;
1511
+
1512
+ // The province, territory, or regional state of the subject.
1513
+ PROVINCE = 6 ;
1514
+
1515
+ // The street address of the subject.
1516
+ STREET_ADDRESS = 7 ;
1517
+
1518
+ // The postal code of the subject.
1519
+ POSTAL_CODE = 8 ;
1520
+ }
1521
+
1422
1522
// A [RevocationReason][google.cloud.security.privateca.v1.RevocationReason]
1423
1523
// indicates whether a
1424
1524
// [Certificate][google.cloud.security.privateca.v1.Certificate] has been
@@ -1484,6 +1584,17 @@ enum SubjectRequestMode {
1484
1584
// the `privateca.certificates.create` permission.
1485
1585
DEFAULT = 1 ;
1486
1586
1587
+ // A mode used to get an accurate representation of the Subject
1588
+ // field's distinguished name. Indicates that the certificate's
1589
+ // [Subject][google.cloud.security.privateca.v1.Subject] and/or
1590
+ // [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] are
1591
+ // specified in the certificate request. When parsing a PEM CSR this mode will
1592
+ // maintain the sequence of RDNs found in the CSR's subject field in the
1593
+ // issued [Certificate][google.cloud.security.privateca.v1.Certificate]. This
1594
+ // mode requires the caller to have the `privateca.certificates.create`
1595
+ // permission.
1596
+ RDN_SEQUENCE = 3 ;
1597
+
1487
1598
// A mode reserved for special cases. Indicates that the certificate should
1488
1599
// have one SPIFFE
1489
1600
// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] set
0 commit comments