From d63176e22d21e347cf1c197084afe8eb1d5376b4 Mon Sep 17 00:00:00 2001 From: bt Date: Sat, 18 Apr 2026 23:12:11 +0200 Subject: [docs] Update protocol docs --- docs/rfc.html | 164 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 129 insertions(+), 35 deletions(-) (limited to 'docs/rfc.html') diff --git a/docs/rfc.html b/docs/rfc.html index 84b5c0a..99a6a34 100644 --- a/docs/rfc.html +++ b/docs/rfc.html @@ -1220,7 +1220,7 @@ li > p:last-of-type:only-child { bt -Expires 16 October 2026 +Expires 20 October 2026 [Page] @@ -1233,12 +1233,12 @@ li > p:last-of-type:only-child {
SOLEC
Published:
- +
Intended Status:
Experimental
Expires:
-
+
Author:
@@ -1274,7 +1274,7 @@ SOLEC system.

time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

- This Internet-Draft will expire on 16 October 2026.

+ This Internet-Draft will expire on 20 October 2026.

-
+
-

-2.4.4. Auth +

+2.4.4. UserAuth

@@ -1739,13 +1756,35 @@ different auth method will be used.
Table 6
-
+
-

-2.4.5. Message +

+2.4.5. ServerAuth

+ + + + + + + + + + + + +
Table 7
TypeName
stringname
+
+
+
+
+

+2.4.6. Message +

+ + @@ -1774,14 +1813,14 @@ different auth method will be used.
-
+

-2.4.6. Test +2.4.7. Test

-

Test payload is used for encoder and decoders testing. Clients and servers -should ignore this kind of payload.

-
Table 8
Type
- +

Test payload is used for encoder and decoders testing. Clients and servers +should ignore this kind of payload.

+
Table 8
+ @@ -1835,12 +1874,14 @@ should ignore this kind of payload.

Some operations require multiple rounds of communication. In this case payloads are send in a sequence. Payload that is not part of this specific operation (for example incoming message) cannot interrupt this process.

- +
+
+

+2.6. Client-Server connection initialisation +

+
+--------+                   +--------+
 | Client |                   | Server |
 +----+---+                   +----+---+
@@ -1851,19 +1892,72 @@ specific operation (for example incoming message) cannot interrupt this process.
      | Send [Handshake]           |
      +--------------------------->|
      |                            |
-     |                            +- If [ver_major] does not match server
-     |                            |  protocol version close the connection
+     |                            +- If [ver_major] does not match
+     |                            |  server protocol version close
+     |                            |  the connection.
      |                            |
-     | Send [Auth]                |
+     | Send [UserAuth]            |
      +--------------------------->|
      |                            |
      | Send [Error 0x01]          |
-     |<---------------------------+- If [username] or [password] does not match
-     |                            |  and close the connection
+     |<---------------------------+- If [username] or [password]
+     |                            |  does not match and close
+     |                            |  the connection.
+     |                            |
+     | Send [Sucesss]             |
+     |<---------------------------+
+
+
+
+
+
+
+

+2.7. Exchanging messages between servers +

+

Exchanging messages between SOLEC servers is a core concept behind the project. +Sending message to user residing on a different server require estabilishing a +connection between both servers.

+
+
+

+2.7.1. Authentication +

+

Server authentication is crucial to prevent message spoofing and other forms of +abuse. Server cannot use same auth process as clients because that would require +creating account for each server on any other server which is impossible. +Possible solution are TLS or other public key based protocol.

+

As for now the issue remains open and server authorization uses mock +[ServerAuth] payload which specifies just the connecting server name. +This is obviously insecure.

+
+
+
+
+

+2.7.2. Server-Server connection initialisation +

+
+
+--------+                   +--------+
+| Server |                   | Server |
++----+---+                   +----+---+
+     |                            |
+     | Initialise TCP connection  |
+     +--------------------------->|
+     |                            |
+     | Send [Handshake]           |
+     +--------------------------->|
+     |                            |
+     |                            +- If [ver_major] does not match
+     |                            |  server protocol version close
+     |                            |  the connection.
+     |                            |
+     | Send [ServerAuth]          |
+     +--------------------------->|
      |                            |
      | Send [Sucesss]             |
      |<---------------------------+
-
+
-- cgit v1.2.3
Table 9
Type