Evgeny Poberezkin
ee5f144ea5
Merge pull request #259 from simplex-chat/ep/message-delivery
...
concurrent message delivery with a separate thread/queue per connection
2022-01-06 16:47:07 +00:00
Evgeny Poberezkin
7ca0ead6a2
Merge branch 'master' into ep/message-delivery
2022-01-06 16:42:16 +00:00
Evgeny Poberezkin
b415537ba5
simplify message delivery
2022-01-06 16:41:39 +00:00
Evgeny Poberezkin
a5a00f3d02
Merge branch 'stable' into ep/message-delivery
2022-01-06 16:38:22 +00:00
Evgeny Poberezkin
dd4ccce1ba
0.5.2
v0.5.2
2022-01-06 13:52:54 +00:00
Evgeny Poberezkin
584f230c4d
update versions for 0.5.2, changelog ( #261 )
2022-01-06 13:50:50 +00:00
Evgeny Poberezkin
10c62e7fa2
fix message delivery when quota exceeded - making it concurrent per queue, not per server ( #260 )
...
* test: HELLO blocking message delivery on the same server
* test: quota exceeded in one queue should not block delivery in other queues
* fix test to work in stable branch
* simplify pending message delivery (#202 )
* simplify pending message delivery (WIP)
* refactor
* fix concurrent message delivery
* remove type synonym
2022-01-06 08:56:19 +00:00
Evgeny Poberezkin
02c023f939
remove message statuses and unused timestamps ( #257 )
2022-01-06 08:41:39 +00:00
Evgeny Poberezkin
6f1d9db8ec
test: quota exceeded in one queue should not block delivery in other queues
2022-01-05 21:48:40 +00:00
Evgeny Poberezkin
3c923a3dc0
test: HELLO blocking message delivery on the same server
2022-01-05 21:12:31 +00:00
Evgeny Poberezkin
ec0881f50f
remove message statuses and unused timestamps
2022-01-05 19:57:04 +00:00
Evgeny Poberezkin
488398df9f
change message envelopes and encoding, unify message delivery ( #252 )
...
* types and encodings for double ratchet integration
* upgrade stack resolver
* type classes for version agreement, encode/decode connection request links and E2E params with versioning
* encode/decode client parameters (version and DH key) in SMP queue URI using query string parameters
* restore support of the current SMP queue URI format
* update AMessage to only send queues in REPLY message (not the full connection request)
* new agent message evnvelopes (tests fail)
* new message envelopes - tests pass
* store fully encrypted messages before sending
* unify message delivery via DB queue (excluding confirmation and invitation)
* remove activateSecuredQueue
* linter hints
* remove comment
* export order
* save rachet-encrypted message, not per-queue encrypted
* delete message after it is accepted by the server, reduce message delivery interval for the tests
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2022-01-05 19:52:37 +00:00
Efim Poberezkin
e452c6ebff
delete received messages after sending ACK to server ( #256 )
2022-01-05 16:52:28 +04:00
Efim Poberezkin
19edf09ae2
add deleteMsg to agent store interface ( #255 )
2022-01-05 16:11:52 +04:00
Efim Poberezkin
4727e568d5
fix x509 call to be compatible with openssl version 1.1.1 ( #253 )
2022-01-03 20:59:53 +04:00
Evgeny Poberezkin
4a73a7ecd4
remove public header from all messages, fix envelope sizes ( #251 )
...
* fix envelope sizes
* only send sender DH pub key for per-queue E2E with confirmation message
2022-01-03 14:33:30 +00:00
Evgeny Poberezkin
83d085cadc
amend SMP protocol doc ( #232 )
...
* amend SMP protocol doc
* Update protocol/simplex-messaging.md
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* Update protocol/simplex-messaging.md
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* Update protocol/simplex-messaging.md
* Update protocol/simplex-messaging.md
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2022-01-02 22:48:01 +00:00
Evgeny Poberezkin
f3523bbba9
make KeyHash non-optional, verify KeyHash in SMP handshake, use StrEncoding class ( #250 )
...
* make KeyHash non-optional, StrEncoding class
* change server URI format in agent config, refactor with StrEncoding
* refactor Crypto using checkAlgorithm
* refactor parsing connection requests
* prepare to validate CA fingerprint sent in client handshake
* KeyHash check in handshake
* rename type to CliCommand
* server validates keyhash sent by the client
* validate -a option when parsing
* more of StrEncoding
2022-01-02 22:24:43 +00:00
Efim Poberezkin
33bb38299b
refactor server Main.hs ( #248 )
2022-01-02 21:49:40 +04:00
Evgeny Poberezkin
f314ff1bb6
add links to overview ( #249 )
2022-01-01 14:22:43 +00:00
Evgeny Poberezkin
1737686c1e
update overview ( #233 )
...
* update overview
* network/framework -> platform
* fix links
* corrections
* corrections
* correction
* correction
* corrections
* update acknowledgements
* remove old overview.md
* update cyptographic primitives, remove acknoledgement
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2022-01-01 13:59:03 +00:00
Evgeny Poberezkin
5e29e3698e
binary SMP protocol encoding, split Command type to two types ( #245 )
...
* binary SMP protocol encoding (server tests fail)
* use 1 byte for bytestring length when encoding/decoding
* Encoding class, binary tags
* update server tests
* negotiate SMP version in client/server handshake
* add version columns to queues and connections
* split parsing SMP client commands and server responses to different functions
* check uniqueness of protocol tags
* split client commands and server responses/messages to separate types
* update types in SMP client
* remove pattern synonyms for SMP errors
* simplify getHandshake
* update SMP protocol encoding in protocol spec
* encode time as a number of seconds (64-bit integer) since epoch
2022-01-01 13:10:19 +00:00
Evgeny Poberezkin
5e3f66a4cb
update DB fields presentations: port, QueueStatus, RcvMsgStatus, SndMsgStatus ( #244 )
...
* make port nullable
* make conversions of enum types to/from text explicit; remove unused statuses/fields
* Update src/Simplex/Messaging/Agent/Store.hs
* rename RcvMsgStatus constructors
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2021-12-30 09:33:47 +00:00
Evgeny Poberezkin
c8178e7f1f
improve crypto key type classes ( #246 )
...
* improve crypto key type classes
* add inline pragmas
2021-12-30 08:51:20 +00:00
Evgeny Poberezkin
c66f9efa55
merge migrations, prepare schema for multiple queues per connection ( #243 )
...
* merge migrations into initial
* update connection/queue tables in schema, simplify creating connections
* refactor create connection
* remove queue fields from connections table
* update server constraints
2021-12-29 17:55:27 +00:00
Evgeny Poberezkin
73cad5a6c4
simple per-queue e2e encryption with NaCl crypto_box ( #242 )
...
* simple per-queue e2e encryption with NaCl crypto_box
* add e2e keys and DH secrets to schema
* agree and save shared DH secret per queue (not used yet)
* protocol changes for uniform padding and message part lengths
* correct message structure diagrams
* make per-queue E2E encryption non-optional
* refactor crypto keys
* use NaCl crypto_box for per-queue E2E encryption, remove RSA keys from queues
* remove RSA support
* merge migration with E2E DH keys
* clean up
* remove unused methods
* parsing/serializing agent messages
* remove sender timestamp from DB and code
* clean up
* slean up
* s/SMPConfMsg/SMPConfirmation/
* serializeAgentMessage = serializeClientMessage . agentToClientMsg
* simplify error handling
* update protocol docs
2021-12-29 14:27:10 +00:00
Evgeny Poberezkin
51a9750891
double ratchet algorithm implementation ( #236 )
...
* started double ratchet implementation
* initialize ratchets
* started ratchet encryption
* ratchet encryption
* simplify / narrow down Ratchet type
* double ratchet decryption "framework"
* advance receive ratched on skipped messages
* more ratchet decryption
* double ratchet encrypt/decrypt (TODO tests)
* double ratchet tests
* double ratchet tests
* use ratchet AD in header encryption, use header and ratchet AD as AD in message encryption
* change ratchet message error, remove Show instances
* Update tests/AgentTests/DoubleRatchetTests.hs
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* Update tests/AgentTests/DoubleRatchetTests.hs
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* Update tests/AgentTests/DoubleRatchetTests.hs
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* Update tests/AgentTests/DoubleRatchetTests.hs
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* Update tests/AgentTests/DoubleRatchetTests.hs
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* Update src/Simplex/Messaging/Crypto/Ratchet.hs
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
* test in the same ratchet step
* merge tests
* Update src/Simplex/Messaging/Crypto/Ratchet.hs
* Update src/Simplex/Messaging/Crypto/Ratchet.hs
* remove HMAC comment
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2021-12-25 17:13:53 +00:00
Evgeny Poberezkin
7bf97fac18
add sessionId and blockSize to the client record used internally ( #241 )
2021-12-24 19:31:39 +00:00
Efim Poberezkin
14954df6b9
print version on server initialization & start-up ( #240 )
2021-12-24 15:44:40 +04:00
Efim Poberezkin
388e4d2bcc
update server recipes - Linode & DigitalOcean ( #239 )
2021-12-24 15:34:09 +04:00
Efim Poberezkin
0c866105d2
chain of two certificates - offline (identity) and online; switch certificates to v3 ( #238 )
2021-12-23 21:20:41 +04:00
Efim Poberezkin
96cf4d288c
base64url encode fingerprint in agent test ( #237 )
2021-12-23 13:04:56 +04:00
Efim Poberezkin
e2cd370513
certificate validation on client side; check stored fingerprint on server start-up; non-optional fingerprint parsing ( #234 , closes #155 )
...
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-12-22 23:24:58 +04:00
Evgeny Poberezkin
f9f1b8f355
new overview ( #235 )
2021-12-21 07:46:22 +00:00
Evgeny Poberezkin
f154f7ee3a
overview doc updates ( #216 )
...
* overview changes
* correction
* protocol docs changes
* include reviewer comments in the doc
* encryption scheme for the recipient traffic
* TLS cipher suite
2021-12-20 12:07:31 +00:00
Evgeny Poberezkin
1873e82804
add CODEOWNERS ( #231 )
2021-12-20 07:08:52 +00:00
Evgeny Poberezkin
400e057dab
use tls-unique as session ID, switch to TLS 1.2 in tls package fork ( #230 )
...
* use tls-unique as session ID, switch to TLS 1.2 in tls package fork
* Update src/Simplex/Messaging/Transport.hs
* Update src/Simplex/Messaging/Transport/WebSockets.hs
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2021-12-19 15:10:37 +00:00
Efim Poberezkin
129246c9e6
unencrypted SMP transport over TLS; simplified handshake ( #229 )
...
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-12-19 13:04:44 +04:00
Evgeny Poberezkin
8ca2d64bc9
Update FUNDING.yml
2021-12-18 16:28:06 +00:00
Evgeny Poberezkin
e0acb42a28
Merge branch 'stable'
2021-12-17 15:44:58 +00:00
Evgeny Poberezkin
bd2e251cae
server update script
2021-12-17 13:23:37 +00:00
Evgeny Poberezkin
6b5cc3d2d5
0.5.1
v0.5.1
2021-12-17 12:33:01 +00:00
Evgeny Poberezkin
5f7fe8b0dc
remove client from servers subscribers map after client disconnection ( #228 )
...
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2021-12-17 16:28:48 +04:00
Evgeny Poberezkin
1df146c702
make WebSockets use TLS Context ( #227 )
2021-12-16 07:30:16 +00:00
Evgeny Poberezkin
323fb1f03c
remove SMP server signing responses ( #226 )
...
* remove SMP server signing responses
* keep only one session ID
2021-12-16 07:15:45 +00:00
Efim Poberezkin
de01692ffd
enable WebSockets over TLS ( #225 )
2021-12-15 22:58:47 +04:00
Efim Poberezkin
bcf5e25cab
create TLS ServerParams once per server run; remove tlsServerParams from agent env (fixes functional agent client for chat) ( #223 )
2021-12-15 19:03:34 +04:00
Evgeny Poberezkin
5aa0e97cd9
sign server responses
2021-12-15 11:52:09 +00:00
Evgeny Poberezkin
cf3d0dfdc3
Transaction fields for size, session IDs, refactor ( #222 )
...
* add SMP session IDs/tls-unique to transmission
* refactor SMP transmissions: precise transmission types in server & client
* use correct session IDs
* remove TSession
2021-12-15 08:06:34 +00:00
Evgeny Poberezkin
83d352cfbe
TLS 1.3 transport ( #203 )
...
* TLS as Transport class instance with pre-defined server certificate/key
* refactor error logging
* remove Ed25519
* refactor TLS.cGet
* TLS over TCP for Transport
* Plain -> TLS
* comment
* getLn, change supported cipher
* use non fixed certificates
* comment
* check options earlier
* wording
* headers
* Update apps/smp-server/Main.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
* Update apps/smp-server/Main.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
* localhost -> server
* Update apps/smp-server/Main.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
* remove comment
* agent key and cert fixtures WIP
* certificate and key in correct order
* exitFailure
* refactor loadServerCertificate
* remove liftIO
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2021-12-15 07:48:57 +00:00