SimpleX-Chat/README.md

94 lines
2 KiB
Markdown
Raw Normal View History

2020-10-11 11:00:25 +01:00
# simplex-messaging
2020-10-18 21:28:37 +01:00
## SMP server demo
2020-10-18 21:31:51 +01:00
This is a demo implementation of SMP ([simplex messaging protocol](https://github.com/simplex-chat/protocol/blob/master/simplex-messaging.md)) server.
2020-10-18 21:28:37 +01:00
This is not usable for real applications, as it lacks the following protocol features:
- cryptographic signature verification, instead it simply compares provided "signature" with stored "public key", effectively treating them as plain text passwords.
- there is no transport encryption
These limitations make it easy to experiment with the protocol logic via telnet.
You can either run it locally or try with the deployed demo server:
```bash
telnet smp.simplex.im 5223
```
## Run locally
[Install stack](https://docs.haskellstack.org/en/stable/install_and_upgrade/) and `stack run`.
## Usage example
Lines you should send are prefixed with `>` character, you should not type them.
Comments are prefixed with `--`, they are not part of transmission.
`>` on its own means you need to press return - telnet should be configured to send CRLF.
1. Create simplex message queue:
```telnet
>
>
> CONN 1234 -- 1234 is recipient's key
IDS QuCLU4YxgS7wcPFA YB4CCATREHkaQcEh -- recipient and sender ID for the queue
```
2. Sender can send their "key" to the connection:
```telnet
> -- no signature (just press enter)
> YB4CCATREHkaQcEh -- sender ID for the queue
> SEND :key abcd
YB4CCATREHkaQcEh
OK
```
3. Secure queue with sender's "key"
```telnet
2020-10-18 21:31:51 +01:00
> 1234 -- recipient's "signature" - same as "key" in the demo
2020-10-18 21:28:37 +01:00
> QuCLU4YxgS7wcPFA -- recipient ID
> KEY abcd -- "key" provided by sender
QuCLU4YxgS7wcPFA
OK
```
4. Sender can now send messages to the queue
```telnet
2020-10-18 21:31:51 +01:00
> abcd -- sender's "signature" - same as "key" in the demo
> YB4CCATREHkaQcEh -- sender ID
2020-10-18 21:28:37 +01:00
> SEND :hello
YB4CCATREHkaQcEh
OK
```
5. Recipient recieves the message and acknowledges it to receive further messages
```telnet
QuCLU4YxgS7wcPFA
MSG ECA3w3ID 2020-10-18T20:19:36.874Z 5
hello
> 1234
> QuCLU4YxgS7wcPFA
> ACK
QuCLU4YxgS7wcPFA
OK
```
2020-10-18 21:31:51 +01:00
## Design
2020-10-18 21:28:37 +01:00
![server design](design/server.svg)