@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]  
99
10+ ## [ 0.0.28]  
11+ 
12+ ### Changed  
13+ 
14+ -  Upgraded ` sigstore `  dependency to ` >=4.0.0 ` . Since version ` 4.0.0 ` ,
15+   ` sigstore `  supports signing using the new Rekor v2 instance, which
16+   will become the default in the future. We force the version to 1,
17+   so any attestations created with ` pypi-attestations==0.0.28 `  will
18+   still contain Rekor v1 entries.
19+ -  Repository has been moved to the ` pypi `  GitHub org. The new URL
20+   is https://github.com/pypi/pypi-attestations .
21+ 
1022## [ 0.0.27]  
1123
1224### Fixed  
@@ -17,30 +29,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1729  string comparison. This fixes an issue where verification would fail
1830  due to the artifact filename having the wheel tags in a different
1931  order than the ones in the attestation.
20-   ([ #127  ] ( https://github.com/trailofbits /pypi-attestations/pull/127 ) )
32+   ([ #127  ] ( https://github.com/pypi /pypi-attestations/pull/127 ) )
2133
2234## [ 0.0.26]  
2335
2436### Fixed  
2537
2638-  This library no longer enforces distribution name "ultranormalization,"
2739  which went above the requirements specified in PEP 740
28-   ([ #124  ] ( https://github.com/trailofbits /pypi-attestations/pull/124 ) )
40+   ([ #124  ] ( https://github.com/pypi /pypi-attestations/pull/124 ) )
2941
3042## [ 0.0.25]  
3143
3244### Fixed  
3345
3446-  Make the ` GooglePublisher `  type and APIs public
35-   ([ #117  ] ( https://github.com/trailofbits /pypi-attestations/pull/117 ) )
47+   ([ #117  ] ( https://github.com/pypi /pypi-attestations/pull/117 ) )
3648
3749## [ 0.0.24]  
3850
3951### Added  
4052
4153-  The ` GooglePublisher `  type has been added to support
4254  Google Cloud-based Trusted Publishers
43-   ([ #114  ] ( https://github.com/trailofbits /pypi-attestations/pull/114 ) )
55+   ([ #114  ] ( https://github.com/pypi /pypi-attestations/pull/114 ) )
4456
4557## [ 0.0.23]  
4658
@@ -64,15 +76,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6476  if the ` Source Repository Ref `  or ` Source Repository Digest `  claim
6577  was missing from the attestation's certificate. We require at least
6678  one of the two claims, but not necessarily both
67-   ([ #109  ] ( https://github.com/trailofbits /pypi-attestations/pull/109 ) )
79+   ([ #109  ] ( https://github.com/pypi /pypi-attestations/pull/109 ) )
6880
6981## [ 0.0.22]  
7082
7183### Changed  
7284
7385-  The ` inspect `  subcommand now ignores inputs that don't match ` *.attestation ` ,
7486  rather than failing on them
75-   ([ #93  ] ( https://github.com/trailofbits /pypi-attestations/pull/93 ) )
87+   ([ #93  ] ( https://github.com/pypi /pypi-attestations/pull/93 ) )
7688
7789### Added  
7890
@@ -95,10 +107,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
95107### Changed  
96108
97109-  The CLI entrypoint is now ` pypi-attestations ` 
98-   ([ #82  ] ( https://github.com/trailofbits /pypi-attestations/pull/82 ) )
110+   ([ #82  ] ( https://github.com/pypi /pypi-attestations/pull/82 ) )
99111-  The CLI ` verify `  subcommand has been changed to ` verify attestation ` ,
100112  as in ` pypi-attestations verify attestation --identity ... ` 
101-   ([ #82  ] ( https://github.com/trailofbits /pypi-attestations/pull/82 ) )
113+   ([ #82  ] ( https://github.com/pypi /pypi-attestations/pull/82 ) )
102114
103115### Added  
104116
@@ -108,14 +120,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
108120  downloading it and its provenance from PyPI, verifying them using
109121  ` sigstore `  and checking that the repository matches the one in the
110122  PyPI provenance file.
111-   ([ #82  ] ( https://github.com/trailofbits /pypi-attestations/pull/82 ) )
123+   ([ #82  ] ( https://github.com/pypi /pypi-attestations/pull/82 ) )
112124
113125## [ 0.0.20]  
114126
115127### Changed  
116128
117129-  Explicitly support sigstore-python 3.6
118-   ([ #79  ] ( https://github.com/trailofbits /pypi-attestations/pull/79 ) )
130+   ([ #79  ] ( https://github.com/pypi /pypi-attestations/pull/79 ) )
119131
120132## [ 0.0.19]  
121133
@@ -127,26 +139,26 @@ This is a corrective release for [0.0.18].
127139
128140-  The ` Attestation `  type now has a ` certificate_claims `  property to expose
129141  underlying Fulcio signing certificate extensions
130-   ([ #70  ] ( https://github.com/trailofbits /pypi-attestations/pull/70 ) )
142+   ([ #70  ] ( https://github.com/pypi /pypi-attestations/pull/70 ) )
131143
132144## [ 0.0.17]  
133145
134146### Fixed  
135147
136148-  The ` GitLabPublisher `  policy now takes the workflow file path in order to
137149  verify attestations, rathen than assuming it will always be ` gitlab-ci.yml ` 
138-   ([ #71  ] ( https://github.com/trailofbits /pypi-attestations/pull/71 ) ).
150+   ([ #71  ] ( https://github.com/pypi /pypi-attestations/pull/71 ) ).
139151-  The ` GitLabPublisher `  now longer expects claims being passed during construction,
140152  rather the ` ref `  and ` sha `  claims are extracted from the certificate's extensions,
141153  similar to ` GitHubPublisher ` 's behavior
142-   ([ #71  ] ( https://github.com/trailofbits /pypi-attestations/pull/71 ) ).
154+   ([ #71  ] ( https://github.com/pypi /pypi-attestations/pull/71 ) ).
143155
144156
145157### Changed  
146158
147159-  Publisher classes (` GitLabPublisher `  and ` GitHubPublisher ` ) no longer take a claims
148160  dictionary during construction
149-   ([ #72  ] ( https://github.com/trailofbits /pypi-attestations/pull/72 ) ).
161+   ([ #72  ] ( https://github.com/pypi /pypi-attestations/pull/72 ) ).
150162
151163## [ 0.0.16]  
152164
@@ -165,19 +177,19 @@ This is a corrective release for [0.0.14].
165177
166178-  The ` Distribution `  API now handles ZIP source distributions
167179  (those ending with ` .zip ` ) instead of rejecting them as invalid
168-   ([ #68  ] ( https://github.com/trailofbits /pypi-attestations/pull/68 ) )
180+   ([ #68  ] ( https://github.com/pypi /pypi-attestations/pull/68 ) )
169181
170182## [ 0.0.13]  
171183
172184### Changed  
173185
174186-  The minimum Python version required has been brought back to ` 3.9 ` 
175-   ([ #64  ] ( https://github.com/trailofbits /pypi-attestations/pull/64 ) ).
187+   ([ #64  ] ( https://github.com/pypi /pypi-attestations/pull/64 ) ).
176188
177189-  The ` Attestation.verify(...) `  API has been changed to remove the ` Verifier ` 
178190  argument in favor of an optional ` staging: bool `  kwarg to select the
179191  Sigstore instance
180-   ([ #62  ] ( https://github.com/trailofbits /pypi-attestations/pull/62 ) )
192+   ([ #62  ] ( https://github.com/pypi /pypi-attestations/pull/62 ) )
181193
182194-  The ` Attestation.verify(...) `  API has been changed to accept both ` Publisher ` 
183195  and ` VerificationPolicy `  objects as a policy. The publisher object is internally
@@ -190,7 +202,7 @@ This is a corrective release for [0.0.14].
190202
191203-  ` python -m pypi_attestations verify `  now exits with a non-zero exit code
192204  if the verification step fails
193-   ([ #57  ] ( https://github.com/trailofbits /pypi-attestations/pull/57 ) )
205+   ([ #57  ] ( https://github.com/pypi /pypi-attestations/pull/57 ) )
194206
195207## [ 0.0.12]  
196208
@@ -199,74 +211,74 @@ This is a corrective release for [0.0.14].
199211-  Base64-encoded bytes inside Attestation objects contained newline characters
200212  every 76 characters due to a bug in Pydantic's Base64Bytes type. Those
201213  newlines were also (incorrectly) ignored by Pydantic during decoding
202-   ([ #48  ] ( https://github.com/trailofbits /pypi-attestations/pull/48 ) ).
214+   ([ #48  ] ( https://github.com/pypi /pypi-attestations/pull/48 ) ).
203215
204216## [ 0.0.11]  
205217
206218### Changed  
207219
208220-  The minimum version of sigstore-python is now ` 3.2.0 ` , owing to private
209-   API changes ([ #45  ] ( https://github.com/trailofbits /pypi-attestations/pull/45 ) )
221+   API changes ([ #45  ] ( https://github.com/pypi /pypi-attestations/pull/45 ) )
210222
211223## [ 0.0.10]  
212224
213225### Changed  
214226
215227-  The minimum Python version required has been bumped to ` 3.11 ` 
216-   ([ #37  ] ( https://github.com/trailofbits /pypi-attestations/pull/37 ) )
228+   ([ #37  ] ( https://github.com/pypi /pypi-attestations/pull/37 ) )
217229
218230### Added  
219231
220232-  The ` Provenance ` , ` Publisher ` , ` GitHubPublisher ` , ` GitLabPublisher ` , and
221233  ` AttestationBundle `  types have been added
222-   ([ #36  ] ( https://github.com/trailofbits /pypi-attestations/pull/36 ) ).
234+   ([ #36  ] ( https://github.com/pypi /pypi-attestations/pull/36 ) ).
223235
224236## [ 0.0.9]  
225237
226238### Added  
227239
228240-  The ` Distribution `  type and APIs have been added, allowing a user to supply
229241  a pre-computed digest instead of performing I/O
230-   ([ #34  ] ( https://github.com/trailofbits /pypi-attestations/pull/34 ) )
242+   ([ #34  ] ( https://github.com/pypi /pypi-attestations/pull/34 ) )
231243
232244### Changed  
233245
234246-  ` sign `  and ` verify `  no longer perform I/O
235-   ([ #34  ] ( https://github.com/trailofbits /pypi-attestations/pull/34 ) )
247+   ([ #34  ] ( https://github.com/pypi /pypi-attestations/pull/34 ) )
236248
237249
238250### Fixed  
239251
240252-  ` verify ` : catch another leaky error case
241-   ([ #32  ] ( https://github.com/trailofbits /pypi-attestations/pull/32 ) )
253+   ([ #32  ] ( https://github.com/pypi /pypi-attestations/pull/32 ) )
242254
243255
244256## [ 0.0.8]  
245257
246258### Fixed  
247259
248260-  ` AttestationType `  is now re-exported at the top-level as a public API
249-   ([ #31  ] ( https://github.com/trailofbits /pypi-attestations/pull/31 ) )
261+   ([ #31  ] ( https://github.com/pypi /pypi-attestations/pull/31 ) )
250262
251263## [ 0.0.7]  
252264
253265### Added  
254266
255267-  ` AttestationType `  has been added, as an enumeration of all currently known
256268  attestation types (by URL)
257-   ([ #29  ] ( https://github.com/trailofbits /pypi-attestations/pull/29 ) )
269+   ([ #29  ] ( https://github.com/pypi /pypi-attestations/pull/29 ) )
258270
259271### Changed  
260272
261273-  ` Attestation.verify `  now checks the attestation's type against
262274  ` AttestationType `  before returning it
263-   ([ #29  ] ( https://github.com/trailofbits /pypi-attestations/pull/29 ) )
275+   ([ #29  ] ( https://github.com/pypi /pypi-attestations/pull/29 ) )
264276
265277### Fixed  
266278
267279-  ` Attestation.sign `  now only returns ` AttestationError `  when failing to sign a
268280  distribution file
269-   ([ #28  ] ( https://github.com/trailofbits /pypi-attestations/pull/28 ) )
281+   ([ #28  ] ( https://github.com/pypi /pypi-attestations/pull/28 ) )
270282
271283## [ 0.0.6]  
272284
@@ -276,28 +288,28 @@ This is a corrective release for [0.0.14].
276288  intended for local development, and not for external use. Its flags and
277289  commands are not subject to stabilization unless explicitly documented
278290  in a future release
279-   ([ #22  ] ( https://github.com/trailofbits /pypi-attestations/pull/22 ) )
291+   ([ #22  ] ( https://github.com/pypi /pypi-attestations/pull/22 ) )
280292
281293### Changed  
282294
283295-  The name of this project is now ` pypi-attestations ` , renamed from
284-   ` pypi-attestion-models `  ([ #25  ] ( https://github.com/trailofbits /pypi-attestations/pull/25 ) )
296+   ` pypi-attestion-models `  ([ #25  ] ( https://github.com/pypi /pypi-attestations/pull/25 ) )
285297
286298-  The model conversion functions have been moved into the ` Attestation `  class
287-   ([ #24  ] ( https://github.com/trailofbits /pypi-attestations/pull/24 ) )
299+   ([ #24  ] ( https://github.com/pypi /pypi-attestations/pull/24 ) )
288300
289301## [ 0.0.5]  - 2024-06-20 
290302
291303### Added  
292304
293305-  ` Attestation.verify `  now returns the inner statement's predicate components
294-   ([ #20  ] ( https://github.com/trailofbits /pypi-attestations/pull/20 ) )
306+   ([ #20  ] ( https://github.com/pypi /pypi-attestations/pull/20 ) )
295307
296308## [ 0.0.4]  - 2024-06-11 
297309
298310### Changed  
299311
300- -  Switch to in-toto statements ([ #18  ] ( https://github.com/trailofbits /pypi-attestations/pull/18 ) )
312+ -  Switch to in-toto statements ([ #18  ] ( https://github.com/pypi /pypi-attestations/pull/18 ) )
301313
302314## [ 0.0.3]  - 2024-06-10 
303315
@@ -315,31 +327,33 @@ This is a corrective release for [0.0.14].
315327
316328-  Initial implementation
317329
318- [ Unreleased ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.27...HEAD 
319- [ 0.0.27 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.26...v0.0.27 
320- [ 0.0.26 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.25...v0.0.26 
321- [ 0.0.25 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.24...v0.0.25 
322- [ 0.0.24 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.23...v0.0.24 
323- [ 0.0.23 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.22...v0.0.23 
324- [ 0.0.22 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.21...v0.0.22 
325- [ 0.0.21 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.20...v0.0.21 
326- [ 0.0.20 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.19...v0.0.20 
327- [ 0.0.19 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.18...v0.0.19 
328- [ 0.0.18 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.17...v0.0.18 
329- [ 0.0.17 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.16...v0.0.17 
330- [ 0.0.16 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.15...v0.0.16 
331- [ 0.0.15 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.14...v0.0.15 
332- [ 0.0.14 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.13...v0.0.14 
333- [ 0.0.13 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.12...v0.0.13 
334- [ 0.0.12 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.11...v0.0.12 
335- [ 0.0.11 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.10...v0.0.11 
336- [ 0.0.10 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.9...v0.0.10 
337- [ 0.0.9 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.8...v0.0.9 
338- [ 0.0.8 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.7...v0.0.8 
339- [ 0.0.7 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.6...v0.0.7 
340- [ 0.0.6 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.5...v0.0.6 
341- [ 0.0.5 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.4...v0.0.5 
342- [ 0.0.4 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.3...v0.0.4 
343- [ 0.0.3 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.2...v0.0.3 
344- [ 0.0.2 ] : https://github.com/trailofbits/pypi-attestation-models/compare/v0.0.1...v0.0.2 
345- [ 0.0.1 ] : https://github.com/trailofbits/pypi-attestation-models/releases/tag/v0.0.1 
330+ [ Unreleased ] : https://github.com/pypi/pypi-attestations/compare/v0.0.28...HEAD 
331+ [ 0.0.28 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.27...v0.0.28 
332+ [ 0.0.27 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.26...v0.0.27 
333+ [ 0.0.26 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.25...v0.0.26 
334+ [ 0.0.25 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.24...v0.0.25 
335+ [ 0.0.24 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.23...v0.0.24 
336+ [ 0.0.23 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.22...v0.0.23 
337+ [ 0.0.22 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.21...v0.0.22 
338+ [ 0.0.21 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.20...v0.0.21 
339+ [ 0.0.20 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.19...v0.0.20 
340+ [ 0.0.19 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.18...v0.0.19 
341+ [ 0.0.18 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.17...v0.0.18 
342+ [ 0.0.17 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.16...v0.0.17 
343+ [ 0.0.16 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.15...v0.0.16 
344+ [ 0.0.15 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.14...v0.0.15 
345+ [ 0.0.14 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.13...v0.0.14 
346+ [ 0.0.13 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.12...v0.0.13 
347+ [ 0.0.12 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.11...v0.0.12 
348+ [ 0.0.11 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.10...v0.0.11 
349+ [ 0.0.10 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.9...v0.0.10 
350+ [ 0.0.9 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.8...v0.0.9 
351+ [ 0.0.8 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.7...v0.0.8 
352+ [ 0.0.7 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.6...v0.0.7 
353+ [ 0.0.6 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.5...v0.0.6 
354+ [ 0.0.5 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.4...v0.0.5 
355+ [ 0.0.4 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.3...v0.0.4 
356+ [ 0.0.3 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.2...v0.0.3 
357+ [ 0.0.2 ] : https://github.com/pypi/pypi-attestations/compare/v0.0.1...v0.0.2 
358+ [ 0.0.1 ] : https://github.com/pypi/pypi-attestations/releases/tag/v0.0.1 
359+ 
0 commit comments