Make TLE optional for Rekor v2 compat#632
Conversation
| int64 integrated_time = 4 [(google.api.field_behavior) = REQUIRED]; | ||
| int64 integrated_time = 4; | ||
| // The inclusion promise/signed entry timestamp from the log. | ||
| // The SET may be provided by Rekor v1 logs, but log entries |
There was a problem hiding this comment.
nit, SET isn't defined til later, can we say inclusion_promise?
| int64 integrated_time = 4 [(google.api.field_behavior) = REQUIRED]; | ||
| int64 integrated_time = 4; | ||
| // The inclusion promise/signed entry timestamp from the log. | ||
| // The SET may be provided by Rekor v1 logs, but log entries |
There was a problem hiding this comment.
"log upload responses" rather than "log entries"?
Signed-off-by: Appu Goundan <appu@google.com>
23b01d0 to
d709d62
Compare
|
I've been doing a lot of flipflopping on how to handle this. While clients can know during rekorv2/putEntries how to parse the returned rekor request, handling it at verification time for bundles is a bit different. Clients that try to parse the canonicalized entry will break if we try to re-use the canonicalized_body code path. So the idea that we wont break clients was not necessarily true, there is no "free verification" of rekor v2 bundles. Clients will fail in unexpected ways. We need new verification paths and branching anyway. If we want to reuse the TransparencyLogEntry from V1, clients need to rewrite parsing so they use the kind/version information in the TransparencyLogEntry to determine how to parse the CanonicalizedBody -- and not parse the CanonicalizedBody partially to determine kind/version (most client do this -- java/go/python). @steiza @kommendorkapten @jku @haydentherapper @codysoyland -- Current clients cannot handle rekorv2 bundles and they may fail in strange ways (probably mostly json unmarshalling error) Failures: go (via examples/sigstore-go-verification) Failure modes:
Both approaches will still require code changes and failures will occur on all existing clients. |
Thanks for digging into it. I've not had to deal with code that handles canonicalized body so I have trouble following the argument here. I suppose the core failure here is that the proto is unclear: "contents of this field are the same as the In any case, I'd appreciate more details on what has changed. I'm sure the canonicalized body is documented for both rekor versions... but I have trouble finding those docs and I can't see the issue by just looking at python client code. |
|
moved discussion to: #633 |
Summary
Changes required for a TLE that is compatible with both V1 and V2 logs.
Release Note
TransparencyLogEntry.integrated_timeis now optional as future log implementations may not return anything. Clients will be expected to attach another form of verified time to the bundle, such as an rfc3161 timestamp.Documentation
architecture docs may need to be updated