protobug_sigstore_protos 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30f6e577a588ca3dd5284829aba9f5d77a7091b5ac7a1c1649fac0ea4b95b39d
4
- data.tar.gz: b8c7bff445bb381dfbdffd4b077c928262aca8eb6e17c3e7b94ae0e836710c65
3
+ metadata.gz: 0504c516bab267d783a873441a208156a864a425a01fae152c6656e509259ead
4
+ data.tar.gz: a710b2dd77f2ebc60a4f70cfacd4007b53682b7143de623a5898aeb5f3abc493
5
5
  SHA512:
6
- metadata.gz: b6d033e11fa51e33c47a8ec09195ee6a422a4b96c5da291ec14e9345e1df7b1789d74f08466d2afeaf6a562bfbb6d3143738bbb18091d101b90fd24a43e89785
7
- data.tar.gz: 71ed97d7f53a21d3d4a1c0a03be2395282b24601c2a8e47b1a71d759cecfbd1e94fed8f10790b156a66d2c0b90672becef3cfd3b48a1f9b72e0c083c0ef0504b
6
+ metadata.gz: e118595cae5999335cb42ad3bc61c11bb5de56ae18b33894aeac75ebe57cd6b306bf277d8b74444fa773ba10290b042d35107db2b34dde5870d8fd8986bd07b0
7
+ data.tar.gz: 364fa09cd78175e0df0e25d86be413e3ff79bb1e084e7fb0d550d495ae332d9ce1c0559e4037449557732adf04cc28dd632f2ae67eb3536cb6c83b34c244a62f
@@ -216,6 +216,14 @@ module Sigstore
216
216
  # supported and expected type. This is part of the DSSE
217
217
  # protocol which is defined here:
218
218
  # <https://github.com/secure-systems-lab/dsse/blob/master/protocol.md>
219
+ # DSSE envelopes in a bundle MUST have exactly one signature.
220
+ # This is a limitation from the DSSE spec, as it can contain
221
+ # multiple signatures. There are two primary reasons:
222
+ # 1. It simplifies the verification logic and policy
223
+ # 2. The bundle (currently) can only contain a single
224
+ # instance of the required verification materials
225
+ # During verification a client MUST reject an envelope if
226
+ # the number of signatures is not equal to one.
219
227
  optional(
220
228
  4,
221
229
  "dsse_envelope",
@@ -53,7 +53,9 @@ module Sigstore
53
53
  SHA2_256 = new("SHA2_256", 1).freeze
54
54
  SHA2_384 = new("SHA2_384", 2).freeze
55
55
  SHA2_512 = new("SHA2_512", 3).freeze
56
+ # Used for LMS
56
57
  SHA3_256 = new("SHA3_256", 4).freeze
58
+ # Used for LMS
57
59
  SHA3_384 = new("SHA3_384", 5).freeze
58
60
  end
59
61
 
@@ -67,7 +69,8 @@ module Sigstore
67
69
  # opinionated options instead of allowing every possible permutation.
68
70
  #
69
71
  # Any changes to this enum MUST be reflected in the algorithm registry.
70
- # See: docs/algorithm-registry.md
72
+ #
73
+ # See: <https://github.com/sigstore/architecture-docs/blob/main/algorithm-registry.md>
71
74
  #
72
75
  # To avoid the possibility of contradicting formats such as PKCS1 with
73
76
  # ED25519 the valid permutations are listed as a linear set instead of a
@@ -121,11 +124,14 @@ module Sigstore
121
124
  # Ed 25519
122
125
  PKIX_ED25519 = new("PKIX_ED25519", 7).freeze # See RFC8032
123
126
  PKIX_ED25519_PH = new("PKIX_ED25519_PH", 8).freeze
127
+ # These algorithms are deprecated and should not be used, but they
128
+ # were/are being used by most Sigstore clients implementations.
129
+ PKIX_ECDSA_P384_SHA_256 = new("PKIX_ECDSA_P384_SHA_256", 19).freeze
130
+ PKIX_ECDSA_P521_SHA_256 = new("PKIX_ECDSA_P521_SHA_256", 20).freeze
124
131
  # LMS and LM-OTS
125
132
  #
126
- # These keys and signatures may be used by private Sigstore
127
- # deployments, but are not currently supported by the public
128
- # good instance.
133
+ # These algorithms are deprecated and should not be used.
134
+ # There are no plans to support SLH-DSA at this time.
129
135
  #
130
136
  # USER WARNING: LMS and LM-OTS are both stateful signature schemes.
131
137
  # Using them correctly requires discretion and careful consideration
@@ -136,8 +142,26 @@ module Sigstore
136
142
  # schemes.
137
143
  LMS_SHA256 = new("LMS_SHA256", 14).freeze
138
144
  LMOTS_SHA256 = new("LMOTS_SHA256", 15).freeze
145
+ # ML-DSA
146
+ #
147
+ # These ML_DSA_44, ML_DSA_65 and ML-DSA_87 algorithms are the pure variants
148
+ # that take data to sign rather than the prehash variants (HashML-DSA), which
149
+ # take digests. While considered quantum-resistant, their usage
150
+ # involves tradeoffs in that signatures and keys are much larger, and
151
+ # this makes deployments more costly.
152
+ #
153
+ # USER WARNING: ML_DSA_44, ML_DSA_65 and ML_DSA_87 are experimental algorithms.
154
+ # In the future they MAY be used by private Sigstore deployments, but
155
+ # they are not yet fully functional. This warning will be removed when
156
+ # these algorithms are widely supported by Sigstore clients and servers,
157
+ # but care should still be taken for production environments.
158
+ #
159
+ # See NIST FIPS 204, RFC 9881 for algorithm identifiers
160
+ ML_DSA_44 = new("ML_DSA_44", 23).freeze
161
+ ML_DSA_65 = new("ML_DSA_65", 21).freeze
162
+ ML_DSA_87 = new("ML_DSA_87", 22).freeze
139
163
 
140
- reserved_range(19..49)
164
+ reserved_range(24..49)
141
165
  end
142
166
 
143
167
  # HashOutput captures a digest of a 'message' (generic octet sequence)
@@ -181,6 +181,8 @@ module Sigstore
181
181
  proto3_optional: false
182
182
  )
183
183
  # The UNIX timestamp from the log when the entry was persisted.
184
+ # The integration time MUST NOT be trusted if inclusion_promise
185
+ # is omitted.
184
186
  optional(
185
187
  4,
186
188
  "integrated_time",
@@ -190,8 +192,11 @@ module Sigstore
190
192
  )
191
193
  # The inclusion promise/signed entry timestamp from the log.
192
194
  # Required for v0.1 bundles, and MUST be verified.
193
- # Optional for >= v0.2 bundles, and SHOULD be verified when present.
194
- # Also may be used as a signed timestamp.
195
+ # Optional for >= v0.2 bundles if another suitable source of
196
+ # time is present (such as another source of signed time,
197
+ # or the current system time for long-lived certificates).
198
+ # MUST be verified if no other suitable source of time is present,
199
+ # and SHOULD be verified otherwise.
195
200
  optional(
196
201
  5,
197
202
  "inclusion_promise",
@@ -47,6 +47,8 @@ module Sigstore
47
47
  self.full_name = "dev.sigstore.trustroot.v1.TransparencyLogInstance"
48
48
 
49
49
  # The base URL at which can be used to URLs for the client.
50
+ # SHOULD match the origin on the log checkpoint:
51
+ # https://github.com/C2SP/C2SP/blob/main/tlog-checkpoint.md#note-text.
50
52
  optional(
51
53
  1,
52
54
  "base_url",
@@ -73,11 +75,19 @@ module Sigstore
73
75
  json_name: "publicKey",
74
76
  proto3_optional: false
75
77
  )
76
- # The unique identifier for this transparency log.
78
+ # The identifier for this transparency log.
77
79
  # Represented as the SHA-256 hash of the log's public key,
78
80
  # calculated over the DER encoding of the key represented as
79
81
  # SubjectPublicKeyInfo.
80
82
  # See https://www.rfc-editor.org/rfc/rfc6962#section-3.2
83
+ # For Rekor v2 instances, log_id and checkpoint_key_id will be set
84
+ # to the same value.
85
+ # It is recommended to use checkpoint_key_id instead, since log_id is not
86
+ # guaranteed to be unique across multiple deployments. Clients
87
+ # must use the key name and key ID, as defined by the signed-note spec
88
+ # linked below, from a checkpoint to determine the correct
89
+ # TransparencyLogInstance to verify a proof.
90
+ # log_id will eventually be deprecated in favor of checkpoint_id.
81
91
  optional(
82
92
  4,
83
93
  "log_id",
@@ -86,21 +96,30 @@ module Sigstore
86
96
  json_name: "logId",
87
97
  proto3_optional: false
88
98
  )
89
- # The checkpoint key identifier for the log used in a checkpoint.
90
- # Optional, not provided for logs that do not generate checkpoints.
91
- # For logs that do generate checkpoints, if not set, assume
92
- # log_id equals checkpoint_key_id.
93
- # Follows the specification described here
94
- # for ECDSA and Ed25519 signatures:
99
+ # The unique identifier for the log, used in the checkpoint.
100
+ # Only supported for TrustedRoot media types matching or greater than
101
+ # application/vnd.dev.sigstore.trustedroot.v0.2+json
102
+ # Its calculation is described in
95
103
  # https://github.com/C2SP/C2SP/blob/main/signed-note.md#signatures
96
- # For RSA signatures, the key ID will match the ECDSA format, the
97
- # hashed DER-encoded SPKI public key. Publicly witnessed logs MUST NOT
98
- # use RSA-signed checkpoints, since witnesses do not support
99
- # RSA signatures.
104
+ # SHOULD be set for all logs. When not set, clients MUST use log_id.
105
+ #
106
+ # For Ed25519 signatures, the key ID is computed per the C2SP spec:
107
+ # key ID = SHA-256(key name || 0x0A || 0x01 || 32-byte Ed25519 public key)[:4]
108
+ # For ECDSA signatures, the key ID is computed per the C2SP spec:
109
+ # key ID = SHA-256(PKIX ASN.1 DER-encoded public key, in SubjectPublicKeyInfo format)[:4]
110
+ # For RSA signatures, the signature type will be 0xff with an appended identifier for the format,
111
+ # "PKIX-RSA-PKCS#1v1.5":
112
+ # key ID = SHA-256(key name || 0x0A || 0xff || PKIX-RSA-PKCS#1v1.5 || PKIX ASN.1 DER-encoded public key)[:4]
113
+ #
100
114
  # This is provided for convenience. Clients can also calculate the
101
115
  # checkpoint key ID given the log's public key.
102
- # SHOULD be set for logs generating Ed25519 signatures.
103
116
  # SHOULD be 4 bytes long, as a truncated hash.
117
+ #
118
+ # To find a matching TransparencyLogInstance in the TrustedRoot,
119
+ # clients will parse the checkpoint, and for each signature line,
120
+ # use the key name (i.e. log origin, base_url from TrustedRoot)
121
+ # and checkpoint key ID (i.e. checkpoint_key_id from TrustedRoot)
122
+ # which can then be compared against the TrustedRoot log instances.
104
123
  optional(
105
124
  5,
106
125
  "checkpoint_key_id",
@@ -109,6 +128,15 @@ module Sigstore
109
128
  json_name: "checkpointKeyId",
110
129
  proto3_optional: false
111
130
  )
131
+ # The name of the operator of this log deployment. Operator MUST be
132
+ # formatted as a scheme-less URI, e.g. sigstore.dev
133
+ # Only supported for TrustedRoot media types matching or greater than
134
+ # application/vnd.dev.sigstore.trustedroot.v0.2+json
135
+ # This MUST be used when there are multiple transparency log instances
136
+ # to determine if log proof verification meets a specified threshold,
137
+ # e.g. two proofs from log deployments operated by the same operator
138
+ # should count as only one valid proof.
139
+ optional(6, "operator", type: :string, proto3_optional: false)
112
140
  end
113
141
 
114
142
  # CertificateAuthority enlists the information required to identify which
@@ -160,6 +188,14 @@ module Sigstore
160
188
  json_name: "validFor",
161
189
  proto3_optional: false
162
190
  )
191
+ # The name of the operator of this certificate or timestamp authority.
192
+ # Operator MUST be formatted as a scheme-less URI, e.g. sigstore.dev
193
+ # This MUST be used when there are multiple timestamp authorities to
194
+ # determine if the signed timestamp verification meets a specified
195
+ # threshold, e.g. two signed timestamps from timestamp authorities
196
+ # operated by the same operator should count as only one valid
197
+ # timestamp.
198
+ optional(5, "operator", type: :string, proto3_optional: false)
163
199
  end
164
200
 
165
201
  # TrustedRoot describes the client's complete set of trusted entities.
@@ -178,13 +214,10 @@ module Sigstore
178
214
  # previously used instance -- otherwise signatures made in the past cannot
179
215
  # be verified.
180
216
  #
181
- # All the listed instances SHOULD be sorted by the 'valid_for' in ascending
182
- # order, that is, the oldest instance first. Only the last instance is
183
- # allowed to have their 'end' timestamp unset. All previous instances MUST
184
- # have a closed interval of validity. The last instance MAY have a closed
185
- # interval. Clients MUST accept instances that overlaps in time, if not
186
- # clients may experience problems during rotations of verification
187
- # materials.
217
+ # All the listed instances SHOULD be sorted by the 'valid_for.start'
218
+ # in ascending order, that is, the oldest instance first. Clients
219
+ # MUST accept instances that overlaps in time, if not clients may
220
+ # experience problems during rotations of verification materials.
188
221
  #
189
222
  # To be able to manage planned rotations of either transparency logs or
190
223
  # certificate authorities, clienst MUST accept lists of instances where
@@ -197,10 +230,12 @@ module Sigstore
197
230
 
198
231
  self.full_name = "dev.sigstore.trustroot.v1.TrustedRoot"
199
232
 
200
- # MUST be application/vnd.dev.sigstore.trustedroot.v0.1+json
233
+ # MUST be application/vnd.dev.sigstore.trustedroot.v0.2+json
201
234
  # when encoded as JSON.
202
- # Clients MUST be able to process and parse content with the media
203
- # type defined in the old format:
235
+ # Clients MAY choose to also support
236
+ # application/vnd.dev.sigstore.trustedroot.v0.1+json
237
+ # Clients MAY process and parse content with the media type defined
238
+ # in the old format:
204
239
  # application/vnd.dev.sigstore.trustedroot+json;version=0.1
205
240
  optional(
206
241
  1,
@@ -256,44 +291,221 @@ module Sigstore
256
291
 
257
292
  self.full_name = "dev.sigstore.trustroot.v1.SigningConfig"
258
293
 
259
- # A URL to a Fulcio-compatible CA, capable of receiving
294
+ # MUST be application/vnd.dev.sigstore.signingconfig.v0.2+json
295
+ # Clients MAY choose to also support
296
+ # application/vnd.dev.sigstore.signingconfig.v0.1+json
297
+ optional(
298
+ 5,
299
+ "media_type",
300
+ type: :string,
301
+ json_name: "mediaType",
302
+ proto3_optional: false
303
+ )
304
+ # URLs to Fulcio-compatible CAs, capable of receiving
260
305
  # Certificate Signing Requests (CSRs) and responding with
261
306
  # issued certificates.
262
307
  #
263
- # This URL **MUST** be the "base" URL for the CA, which clients
308
+ # These URLs MUST be the "base" URL for the CAs, which clients
264
309
  # should construct an appropriate CSR endpoint on top of.
265
- # For example, if `ca_url` is `https://example.com/ca`, then
266
- # the client **MAY** construct the CSR endpoint as
310
+ # For example, if a CA URL is `https://example.com/ca`, then
311
+ # the client MAY construct the CSR endpoint as
267
312
  # `https://example.com/ca/api/v2/signingCert`.
268
- optional(
269
- 1,
270
- "ca_url",
271
- type: :string,
272
- json_name: "caUrl",
273
- proto3_optional: false
313
+ #
314
+ # Clients MUST select only one Service with the highest API version
315
+ # that the client is compatible with, that is within its
316
+ # validity period, and has the newest validity start date.
317
+ # Client SHOULD select the first Service that meets this requirement.
318
+ # All listed Services SHOULD be sorted by the `valid_for` window in
319
+ # descending order, with the newest instance first.
320
+ repeated(
321
+ 6,
322
+ "ca_urls",
323
+ type: :message,
324
+ message_type: "dev.sigstore.trustroot.v1.Service",
325
+ json_name: "caUrls"
274
326
  )
275
- # A URL to an OpenID Connect identity provider.
327
+ # URLs to OpenID Connect identity providers.
276
328
  #
277
- # This URL **MUST** be the "base" URL for the OIDC IdP, which clients
329
+ # These URLs MUST be the "base" URLs for the OIDC IdPs, which clients
278
330
  # should perform well-known OpenID Connect discovery against.
279
- optional(
280
- 2,
281
- "oidc_url",
282
- type: :string,
283
- json_name: "oidcUrl",
284
- proto3_optional: false
331
+ #
332
+ # Clients MUST select only one Service with the highest API version
333
+ # that the client is compatible with, that is within its
334
+ # validity period, and has the newest validity start date.
335
+ # Client SHOULD select the first Service that meets this requirement.
336
+ # All listed Services SHOULD be sorted by the `valid_for` window in
337
+ # descending order, with the newest instance first.
338
+ repeated(
339
+ 7,
340
+ "oidc_urls",
341
+ type: :message,
342
+ message_type: "dev.sigstore.trustroot.v1.Service",
343
+ json_name: "oidcUrls"
285
344
  )
286
- # One or more URLs to Rekor-compatible transparency log.
345
+ # URLs to Rekor transparency logs.
287
346
  #
288
- # Each URL **MUST** be the "base" URL for the transparency log,
347
+ # These URL MUST be the "base" URLs for the transparency logs,
289
348
  # which clients should construct appropriate API endpoints on top of.
290
- repeated(3, "tlog_urls", type: :string, json_name: "tlogUrls")
291
- # One ore more URLs to RFC 3161 Time Stamping Authority (TSA).
292
349
  #
293
- # Each URL **MUST** be the **full** URL for the TSA, meaning that it
350
+ # Clients MUST group Services by `operator` and select at most one
351
+ # Service from each operator. Clients MUST select Services with the
352
+ # highest API version that the client is compatible with, that are
353
+ # within its validity period, and have the newest validity start dates.
354
+ # All listed Services SHOULD be sorted by the `valid_for` window in
355
+ # descending order, with the newest instance first.
356
+ #
357
+ # Clients MUST select Services based on the selector value of
358
+ # `rekor_tlog_config`.
359
+ repeated(
360
+ 8,
361
+ "rekor_tlog_urls",
362
+ type: :message,
363
+ message_type: "dev.sigstore.trustroot.v1.Service",
364
+ json_name: "rekorTlogUrls"
365
+ )
366
+ # Specifies how a client should select the set of Rekor transparency
367
+ # logs to write to.
368
+ optional(
369
+ 9,
370
+ "rekor_tlog_config",
371
+ type: :message,
372
+ message_type: "dev.sigstore.trustroot.v1.ServiceConfiguration",
373
+ json_name: "rekorTlogConfig",
374
+ proto3_optional: false
375
+ )
376
+ # URLs to RFC 3161 Time Stamping Authorities (TSA).
377
+ #
378
+ # These URLs MUST be the *full* URL for the TSA, meaning that it
294
379
  # should be suitable for submitting Time Stamp Requests (TSRs) to
295
380
  # via HTTP, per RFC 3161.
296
- repeated(4, "tsa_urls", type: :string, json_name: "tsaUrls")
381
+ #
382
+ # Clients MUST group Services by `operator` and select at most one
383
+ # Service from each operator. Clients MUST select Services with the
384
+ # highest API version that the client is compatible with, that are
385
+ # within its validity period, and have the newest validity start dates.
386
+ # All listed Services SHOULD be sorted by the `valid_for` window in
387
+ # descending order, with the newest instance first.
388
+ #
389
+ # Clients MUST select Services based on the selector value of
390
+ # `tsa_config`.
391
+ repeated(
392
+ 10,
393
+ "tsa_urls",
394
+ type: :message,
395
+ message_type: "dev.sigstore.trustroot.v1.Service",
396
+ json_name: "tsaUrls"
397
+ )
398
+ # Specifies how a client should select the set of TSAs to request
399
+ # signed timestamps from.
400
+ optional(
401
+ 11,
402
+ "tsa_config",
403
+ type: :message,
404
+ message_type: "dev.sigstore.trustroot.v1.ServiceConfiguration",
405
+ json_name: "tsaConfig",
406
+ proto3_optional: false
407
+ )
408
+
409
+ # Reserved tags for previously defined service URL fields
410
+ reserved_range(1...5)
411
+ end
412
+
413
+ # Service represents an instance of a service that is a part of Sigstore infrastructure.
414
+ # When selecting one or multiple services from a list of services, clients MUST:
415
+ # * Use the API version hint to determine the service with the highest API version
416
+ # that the client is compatible with.
417
+ # * Only select services within the specified validity period and that have the
418
+ # newest validity start date.
419
+ # When selecting multiple services, clients MUST:
420
+ # * Use the ServiceConfiguration to determine how many services MUST be selected.
421
+ # Clients MUST return an error if there are not enough services that meet the
422
+ # selection criteria.
423
+ # * Group services by `operator` and select at most one service from an operator.
424
+ # During verification, clients MUST treat valid verification metadata from the
425
+ # operator as valid only once towards a threshold.
426
+ # * Select services from only the highest supported API version.
427
+ class Service
428
+ extend Protobug::Message
429
+
430
+ self.full_name = "dev.sigstore.trustroot.v1.Service"
431
+
432
+ # URL of the service. MUST include scheme and authority. MAY include path.
433
+ optional(1, "url", type: :string, proto3_optional: false)
434
+ # Specifies the major API version. A value of 0 represents a service that
435
+ # has not yet been released.
436
+ optional(
437
+ 2,
438
+ "major_api_version",
439
+ type: :uint32,
440
+ json_name: "majorApiVersion",
441
+ proto3_optional: false
442
+ )
443
+ # Validity period of a service. A service that has only a start date
444
+ # SHOULD be considered the most recent instance of that service, but
445
+ # the client MUST NOT assume there is only one valid instance.
446
+ # The TimeRange MUST be considered valid *inclusive* of the
447
+ # endpoints.
448
+ optional(
449
+ 3,
450
+ "valid_for",
451
+ type: :message,
452
+ message_type: "dev.sigstore.common.v1.TimeRange",
453
+ json_name: "validFor",
454
+ proto3_optional: false
455
+ )
456
+ # Specifies the name of the service operator. When selecting multiple
457
+ # services, clients MUST use the operator to select services from
458
+ # distinct operators. Operator MUST be formatted as a scheme-less
459
+ # URI, e.g. sigstore.dev
460
+ optional(4, "operator", type: :string, proto3_optional: false)
461
+ end
462
+
463
+ # ServiceSelector specifies how a client SHOULD select a set of
464
+ # Services to connect to. A client SHOULD throw an error if
465
+ # the value is SERVICE_SELECTOR_UNDEFINED.
466
+ class ServiceSelector
467
+ extend Protobug::Enum
468
+
469
+ self.full_name = "dev.sigstore.trustroot.v1.ServiceSelector"
470
+
471
+ SERVICE_SELECTOR_UNDEFINED = new("SERVICE_SELECTOR_UNDEFINED", 0).freeze
472
+ # Clients SHOULD select all Services based on supported API version
473
+ # and validity window.
474
+ ALL = new("ALL", 1).freeze
475
+ # Clients SHOULD select one Service based on supported API version
476
+ # and validity window. It is up to the client implementation to
477
+ # decide how to select the Service, e.g. random or round-robin.
478
+ ANY = new("ANY", 2).freeze
479
+ # Clients SHOULD select a specific number of Services based on
480
+ # supported API version and validity window, using the provided
481
+ # `count`. It is up to the client implementation to decide how to
482
+ # select the Service, e.g. random or round-robin.
483
+ EXACT = new("EXACT", 3).freeze
484
+ end
485
+
486
+ # ServiceConfiguration specifies how a client should select a set of
487
+ # Services to connect to, along with a count when a specific number
488
+ # of Services is requested.
489
+ class ServiceConfiguration
490
+ extend Protobug::Message
491
+
492
+ self.full_name = "dev.sigstore.trustroot.v1.ServiceConfiguration"
493
+
494
+ # How a client should select a set of Services to connect to.
495
+ # Clients SHOULD NOT select services from multiple API versions.
496
+ optional(
497
+ 1,
498
+ "selector",
499
+ type: :enum,
500
+ enum_type: "dev.sigstore.trustroot.v1.ServiceSelector",
501
+ proto3_optional: false
502
+ )
503
+ # count specifies the number of Services the client should use.
504
+ # Only used when selector is set to EXACT, and count MUST be greater
505
+ # than 0. count MUST be less than or equal to the number of Services.
506
+ # Clients MUST return an error is there are not enough services
507
+ # that meet selection criteria.
508
+ optional(2, "count", type: :uint32, proto3_optional: false)
297
509
  end
298
510
 
299
511
  # ClientTrustConfig describes the complete state needed by a client
@@ -339,6 +551,9 @@ module Sigstore
339
551
  registry.register(Sigstore::TrustRoot::V1::CertificateAuthority)
340
552
  registry.register(Sigstore::TrustRoot::V1::TrustedRoot)
341
553
  registry.register(Sigstore::TrustRoot::V1::SigningConfig)
554
+ registry.register(Sigstore::TrustRoot::V1::Service)
555
+ registry.register(Sigstore::TrustRoot::V1::ServiceSelector)
556
+ registry.register(Sigstore::TrustRoot::V1::ServiceConfiguration)
342
557
  registry.register(Sigstore::TrustRoot::V1::ClientTrustConfig)
343
558
  end
344
559
  end
@@ -281,6 +281,19 @@ module Sigstore
281
281
  oneof: :data,
282
282
  proto3_optional: false
283
283
  )
284
+ # Digest of the artifact. SHOULD NOT be used when verifying an
285
+ # in-toto attestation as the subject digest cannot be
286
+ # reconstructed. This option will not work with Ed25519
287
+ # signatures, use Ed25519Ph or another algorithm instead.
288
+ optional(
289
+ 3,
290
+ "artifact_digest",
291
+ type: :message,
292
+ message_type: "dev.sigstore.common.v1.HashOutput",
293
+ json_name: "artifactDigest",
294
+ oneof: :data,
295
+ proto3_optional: false
296
+ )
284
297
  end
285
298
 
286
299
  # Input captures all that is needed to call the bundle verification method,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobug_sigstore_protos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Giddins
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-25 00:00:00.000000000 Z
11
+ date: 2026-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: protobug
@@ -16,43 +16,43 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: 0.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.0
26
+ version: 0.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: protobug_well_known_protos
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.0
33
+ version: 0.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.0
40
+ version: 0.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: protobug_googleapis_field_behavior_protos
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.0
47
+ version: 0.2.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.0
55
- description:
54
+ version: 0.2.0
55
+ description:
56
56
  email:
57
57
  - segiddins@segiddins.me
58
58
  executables: []
@@ -67,12 +67,12 @@ files:
67
67
  - lib/sigstore/rekor/v1/sigstore_rekor_pb.rb
68
68
  - lib/sigstore/trustroot/v1/sigstore_trustroot_pb.rb
69
69
  - lib/sigstore/verification/v1/sigstore_verification_pb.rb
70
- homepage: https://github.com/segiddins/protobug/blob/v0.1.0/gen/protobug_sigstore_protos
70
+ homepage: https://github.com/segiddins/protobug/blob/v0.2.0/gen/protobug_sigstore_protos
71
71
  licenses:
72
72
  - Unlicense
73
73
  metadata:
74
74
  rubygems_mfa_required: 'true'
75
- post_install_message:
75
+ post_install_message:
76
76
  rdoc_options: []
77
77
  require_paths:
78
78
  - lib
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  requirements: []
90
90
  rubygems_version: 3.5.9
91
- signing_key:
91
+ signing_key:
92
92
  specification_version: 4
93
93
  summary: Compiled protos for protobug from https://github.com/sigstore/protobuf-specs
94
94
  (sigstore_protos)