|
58 | 58 | from sigstore_protobuf_specs.dev.sigstore.common.v1 import Rfc3161SignedTimestamp
|
59 | 59 | from sigstore_protobuf_specs.dev.sigstore.rekor import v1 as rekor_v1
|
60 | 60 | from sigstore_protobuf_specs.dev.sigstore.rekor.v1 import (
|
61 |
| - InclusionProof, |
| 61 | + InclusionProof, KindVersion |
62 | 62 | )
|
63 | 63 |
|
64 | 64 | from sigstore import dsse
|
@@ -172,6 +172,11 @@ class LogEntry:
|
172 | 172 | log entry.
|
173 | 173 | """
|
174 | 174 |
|
| 175 | + kind_version: KindVersion |
| 176 | + """ |
| 177 | + The kind and version of the log entry. |
| 178 | + """ |
| 179 | +
10000
div> |
175 | 180 | @classmethod
|
176 | 181 | def _from_response(cls, dict_: dict[str, Any]) -> LogEntry:
|
177 | 182 | """
|
@@ -230,6 +235,7 @@ def _from_dict_rekor(cls, dict_: dict[str, Any]) -> LogEntry:
|
230 | 235 | tlog_entry.inclusion_promise.signed_entry_timestamp
|
231 | 236 | ).decode()
|
232 | 237 | ),
|
| 238 | + kind_version=tlog_entry.kind_version, |
233 | 239 | )
|
234 | 240 |
|
235 | 241 | def _to_rekor(self) -> rekor_v1.TransparencyLogEntry:
|
@@ -258,32 +264,10 @@ def _to_rekor(self) -> rekor_v1.TransparencyLogEntry:
|
258 | 264 | integrated_time=self.integrated_time,
|
259 | 265 | inclusion_promise=inclusion_promise, # type: ignore[arg-type]
|
260 | 266 | inclusion_proof=inclusion_proof,
|
| 267 | + kind_version=self.kind_version, |
261 | 268 | canonicalized_body=base64.b64decode(self.body),
|
262 | 269 | )
|
263 | 270 |
|
264 |
| - # NOTE fix the canonicalized_body |
265 |
| - import json |
266 |
| - tlog_entry.canonicalized_body = bytes(json.dumps({ |
267 |
| - # **json.loads(tlog_entry.canonicalized_body), |
268 |
| - 'kind': 'hashedrekord', |
269 |
| - 'api_version': '0.0.2', |
270 |
| - 'spec': { |
271 |
| - 'signature': json.loads(tlog_entry.canonicalized_body)['signature'], |
272 |
| - 'data': json.loads(tlog_entry.canonicalized_body)['data'] |
273 |
| - } |
274 |
| - }), encoding='utf-8') |
275 |
| - |
276 |
| - # Fill in the appropriate kind |
277 |
| - body_entry: ProposedEntry = TypeAdapter(ProposedEntry).validate_json( |
278 |
| - tlog_entry.canonicalized_body |
279 |
| - ) |
280 |
| - if not isinstance(body_entry, (Hashedrekord, Dsse)): |
281 |
| - raise InvalidBundle("log entry is not of expected type") |
282 |
| - |
283 |
| - tlog_entry.kind_version = rekor_v1.KindVersion( |
284 |
| - kind=body_entry.kind, version=body_entry.api_version |
285 |
| - ) |
286 |
| - |
287 | 271 | return tlog_entry
|
288 | 272 |
|
289 | 273 | def encode_canonical(self) -> bytes:
|
|
0 commit comments