This PR removes the data field from the NoiseHandshakePayload protobuf, and adds an extensions field. extensions is NoiseExtensions protobuf, modeled after the extension registries that TLS and QUIC use.
By using a new ID (data was 3, extensions is 4), this change won’t break implementations that used early data (I’m not aware of any, but just in case).
I’ve added code points for WebTransport, WebRTC and Early Muxer Negotiation to this PR, mostly to demonstrate how this would look like. Given that none of the specs for these are merged yet, it might make sense to define an empty NoiseExtensions protobuf here, and have the respective PRs add their code point (we’ll have to deal with merge conflicts then). Let me know if I should make that change.
Fixes #450.
This PR removes the
data
field from theNoiseHandshakePayload
protobuf, and adds anextensions
field.extensions
isNoiseExtensions
protobuf, modeled after the extension registries that TLS and QUIC use. By using a new ID (data
was 3,extensions
is 4), this change won’t break implementations that used early data (I’m not aware of any, but just in case).I’ve added code points for WebTransport, WebRTC and Early Muxer Negotiation to this PR, mostly to demonstrate how this would look like. Given that none of the specs for these are merged yet, it might make sense to define an empty
NoiseExtensions
protobuf here, and have the respective PRs add their code point (we’ll have to deal with merge conflicts then). Let me know if I should make that change.