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 +4 -4
- data/lib/sigstore/bundle/v1/sigstore_bundle_pb.rb +8 -0
- data/lib/sigstore/common/v1/sigstore_common_pb.rb +29 -5
- data/lib/sigstore/rekor/v1/sigstore_rekor_pb.rb +7 -2
- data/lib/sigstore/trustroot/v1/sigstore_trustroot_pb.rb +261 -46
- data/lib/sigstore/verification/v1/sigstore_verification_pb.rb +13 -0
- metadata +13 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0504c516bab267d783a873441a208156a864a425a01fae152c6656e509259ead
|
|
4
|
+
data.tar.gz: a710b2dd77f2ebc60a4f70cfacd4007b53682b7143de623a5898aeb5f3abc493
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
#
|
|
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
|
|
127
|
-
#
|
|
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(
|
|
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
|
|
194
|
-
#
|
|
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
|
|
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
|
|
90
|
-
#
|
|
91
|
-
#
|
|
92
|
-
#
|
|
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
|
-
#
|
|
97
|
-
#
|
|
98
|
-
#
|
|
99
|
-
#
|
|
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'
|
|
182
|
-
# order, that is, the oldest instance first.
|
|
183
|
-
#
|
|
184
|
-
#
|
|
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.
|
|
233
|
+
# MUST be application/vnd.dev.sigstore.trustedroot.v0.2+json
|
|
201
234
|
# when encoded as JSON.
|
|
202
|
-
# Clients
|
|
203
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
266
|
-
# the client
|
|
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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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
|
-
#
|
|
327
|
+
# URLs to OpenID Connect identity providers.
|
|
276
328
|
#
|
|
277
|
-
#
|
|
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
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
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
|
-
#
|
|
345
|
+
# URLs to Rekor transparency logs.
|
|
287
346
|
#
|
|
288
|
-
#
|
|
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
|
-
#
|
|
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
|
-
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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)
|