-
Notifications
You must be signed in to change notification settings - Fork 38
Description
The current proposed format for a WAICT manifest is a JSON object with fields for hashes, policy, delimiters, etc. For transparency, the manifest must be signed. This means that a client has to ingest the JSON object, canonicalize it, serialize to bytes then check the signature on that bytestring. As we know from recent history, mixing canonicalization with signatures can be disastrous.
There is an easy way to avoid all this. Instead of specifying manifest as a JSON object, I it should be a bytestring, probably base64-encoded. The bytestring, when parsed, will be a JSON object, but transmitting it as raw bytes avoids the need for canonicalization altogether. This still means that we need to ensure parsers behave the same, but we needed that anyway.