commit 805d397c7feceeab1b0b2f3cdaf372d8d5936303
parent 9225017694ccaa8cfd1d8a98b89da320ff06caa3
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Fri, 23 Aug 2024 15:20:21 +0200
more http3
Diffstat:
1 file changed, 79 insertions(+), 0 deletions(-)
diff --git a/draft-gnunet-communicators.xml b/draft-gnunet-communicators.xml
@@ -147,6 +147,11 @@
<dd>
What is a communicator?
</dd>
+ <dt>Peer Identity</dt>
+ <dd>
+ Peer IDs in GNUnet are Ed25519 public keys as defined <xref target="RFC8032"/>
+ and serialized accordingly.
+ </dd>
</dl>
</section>
<section>
@@ -1361,6 +1366,80 @@ SetupCipher(REC_ID, MSK):
Upon receiving a response, the client immediately sends a new GET request to maintain an adequate
number of long polling requests with the server.
</t>
+ <figure anchor="figure_http3_msg" title="The wire format of exchanged messages.">
+ <artwork name="" type="" align="left" alt=""><![CDATA[
+0 8 16 24 32 40 48 56
++-----+-----+-----+-----+-----+-----+-----+-----+
+| SIZE | TYPE (0x0X) |
++-----+-----+-----+-----+-----+-----+-----+-----+
+| MESSAGE |
+| |
+| |
+| |
++-----+-----+-----+-----+-----+-----+-----+-----+
+ ]]></artwork>
+ </figure>
+ <dl>
+ <dt>SIZE</dt>
+ <dd>
+ A 16-bit value containing the length of the signed data in bytes
+ in network byte order.
+ </dd>
+ <dt></dt>
+ <dd>
+ A 16-bit type flag in network byte order. The value of this
+ field <bcp14>MUST</bcp14> be XY.
+ The value of this field corresponds to an entry in the
+ GANA "GNUnet Message Type" registry <xref target="GANA"/>.
+ </dd>
+ <dt>MESSAGE</dt>
+ <dd>
+ The message.
+ </dd>
+ </dl>
+ <t>
+ Example POST:
+ </t>
+ <artwork name="" type="" align="left" alt=""><![CDATA[
+:method: POST
+:scheme: https
+:authority: PEER'S IP ADDRESS
+:path: /
+content-type: application/octet-stream
+content-length: LENGTH OF MESSAGE
+]]></artwork>
+ <t>
+ If server no data to send it will respond with HTTP status OK (200).
+ If server has data to send it will respond with HTTP status OK and
+ a response body with a message (<xref target="figure_http3_msg"/>) and
+ content type <tt>application/octet-stream</tt>
+ </t>
+ <t>
+ GET request example (long polling):
+ </t>
+ <artwork name="" type="" align="left" alt=""><![CDATA[
+:method: GET
+:scheme: https
+:authority: PEER'S IP ADDRESS
+:path: /
+ ]]></artwork>
+ <t>
+ If server no data to send and the long poll times out it will
+ respond with status 204.
+ If server has data to send it will respond with HTTP status OK (200)
+ a response body with a message (<xref target="figure_http3_msg"/>) and
+ content type <tt>application/octet-stream</tt>.
+ </t>
+ <section anchor="http3_handshake" numbered="true" toc="default">
+ <name>Handshake</name>
+ <t>
+ The public keys in the certificates in use as part of the TLS handshake
+ are not verified or evaluated against a trust store.
+ The initial message by the initiating peer (the HTTP/3 client) will
+ contain the peer identity.
+ In the future, the peer identity should be part of the TLS handshake instead.
+ </t>
+ </section>
</section>
<section anchor="security" numbered="true" toc="default">
<name>Security and Privacy Considerations</name>