Evgeny Poberezkin
c029b715fb
fix/add tests, add version config to "small" agent
2024-02-08 19:57:45 +00:00
Evgeny Poberezkin
beab292ed6
rfc
2024-02-07 11:51:37 +00:00
Evgeny Poberezkin
17f64e1565
docs: URI schemes ( #958 )
2024-01-12 17:21:57 +00:00
Evgeny Poberezkin
f954c2cd17
rfc: SMP proxies key scope and other considerations ( #927 )
...
* rfc: SMP proxies key scope and other considerations
* split line
2023-12-28 23:29:51 +00:00
Evgeny Poberezkin
31f520af05
rfc: message delivery problems ( #743 )
...
* rfc: message delivery problems
* update
2023-11-26 12:02:08 +00:00
Evgeny Poberezkin
7c29e2a189
rfc: delivery proxy ( #760 )
2023-11-26 11:59:57 +00:00
Evgeny Poberezkin
f49607e522
rfc: SMP/XFTP proxies ( #844 )
...
* rfc: SMP/XFTP proxies
* update
* update
* update
* add threat model
* correction to encryption layer
* corrections
2023-11-26 11:57:56 +00:00
Alexander Bondarenko
40ba94ce72
remote: add multicast discovery w/ encrypted announce ( #895 )
...
* Implement multicast discovery
* replace rcConnectMulticast with explicit discoverRCCtrl
* add multicast source/invitation host check
* remove JSON encoding for multicast invitations
* add specific error for announcing "new" controllers
* rename
* set size, rename
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-17 17:56:14 +00:00
Evgeny Poberezkin
6a2e6b040e
additional lazy crypto for XRCP ( #890 )
2023-11-10 11:16:43 +00:00
Evgeny Poberezkin
248144f3de
do not use previous KEM shared secret in multicast packets and in host HELLO ( #888 )
...
* do not use previous KEM shared secret in multicast packets and in host HELLO
* simplify
2023-11-08 12:06:10 +00:00
Alexander Bondarenko
1a8dfb4cbe
agent: xrcp implementation for connection via link (no multicast) ( #884 )
...
* WIP: start working on connection invites
startSession/OOB is broken now - the port isn't coming from the actualy assigned one.
* Add invite types
* clean old invite-related types
* apply renames
* Move SessionKeys from Invitation
* Stub host-side keys and handle
* move keys and handles to Types
* add Simplex.RemoteControl.Client
* more keys
* progress
* crypto for sessions
* progress to multicast
* multicast crypto
* add RC TLS server
* agent api for remote control
* WIP: tls client
* fix test
* update encoding to include nonce
* add TODO
* update
* Use network-info to find TransportHost
* request and submit tls client certificate
* WIP: add missing bits for testing RC client
* RCEncryptedHello encoding
* add block encoding
* refactor
* validate known host certificate
* remove some spaghetti
* functional API to host/ctrl clients
* refactor connectRCCtrl_
* refactor connectRCHost
* question
* add type
* fix RC session
* update doc
* update doc 2
* add block on confirmation
* remove unused parameter
* export CtrlSessKeys
* export
* fix parsing
* move test of xrcp handshake
* move KEM to HELLO step
* fix JSON
* type
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-07 13:05:18 +00:00
Evgeny Poberezkin
db1b2f77cd
rfc: SimpleX Remote Control protocol v2 ( #874 )
...
* rfc: SimpleX Remote Control protocol
* tweak rfc sections
* rfc: SimpleX Remote Control protocol v2
* add session verification
* add alternative design
* add KEM to rfc
* key agreement
* add pad
* pad
* padding
* remove marker from multicast packet
* update
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
2023-10-31 19:39:42 +00:00
Evgeny Poberezkin
58cb2855d2
agent: delivery receipts ( #752 )
...
* rfc: delivery receipts
* update doc
* update rfc
* implementation plan, types, schema
* migration, update types
* update types
* rename migration
* export MsgReceiptStatus, JSON encoding
* update rfc, schema
* correction
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* skeleton of the implementation
* more implementation (some tests fail)
* more code, 1 test fails
* fix encoding
* refactor
* refactor
* test, fix
* only send receipts in v3+, test
* flip condition
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* flip condition
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* agent version 4 required to send receipts
* fix test
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2023-07-13 22:33:48 +01:00
spaced4ndy
8be2505fa0
ratchet re-synchronization ( #774 )
...
* ratchet re-synchronization rfc wip
* additions
* additions, types
* fix tests
* re-sync implementation wip
* re-sync implementation 1st rev.
* test wip
* test passes
* doc
* wording
* improve doc schema
* single agreed state
* refactor (1 state variable)
* allowed -> required
* prohibit enqueue
* enqueue
* send via multiple queues
* test with server offline
* clarify errors
* rename
* more tests
* refactor
* rename AgentRKey
* rename AM_CONN_RATCHET_KEY
* more tests
* rename
* write encoded AgentRatchetInfo to AgentRatchetKey info
* move withConnLock
* refactor qDuplex
* re-create ratchet on receiving second key
* invert condition
* refactor
* simplify
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-06-30 14:17:08 +04:00
Stanislav Dmitrenko
bccef0ba47
files: server and client spike - basic upload/download ( #591 )
...
* Files: main, env, stats, storeLog
* Better + transport
* Executable
* Env
* Update Client.hs, Server.hs, and 4 more files...
* Answer on request
* Delay
* Temp file
* Bypass cert check
* update package.yml, rename
* update store log
* extend HTTP2 transport
* refactor caStore
* HTTP2 body
* update server stats
* file server/client framework
* verify server commands
* process FNEW command, CLI test works
* simple XFTP server test (fails)
* fix test, refactor
* upload chunk works
* receive file chunk in the client
* remove transport handshake
* typo
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* fix names
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2023-02-13 13:36:02 +00:00
Evgeny Poberezkin
0af6533510
rfc: update xftp doc ( #609 )
2023-01-17 12:24:05 +00:00
Evgeny Poberezkin
af903bd405
rfc: managing exceeded queue quotas ( #583 )
...
* rfc: managing exceeded queue quotas
* update
2022-12-27 16:29:07 +00:00
Evgeny Poberezkin
51b0833f98
rfc: SimpleX File Transfer protocol ( #582 )
...
* rfc: SimpleX File Transfer protocol
* update
* update
* remove space
* update transport protocol notes
* spellcheck
2022-12-27 12:42:53 +00:00
Evgeny Poberezkin
e281efdcb8
server: SMP basic auth ( #561 )
...
* server: SMP basic auth
* update ini default
* rfc, types
* tests
* update INI file
* typo
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* refactor
* update INI options, log new queue creation mode on start (on/off/requires auth)
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-11-12 22:29:36 +00:00
Evgeny Poberezkin
8d9816809f
simplify queue rotation protocol ( #550 )
...
* simplify queue rotation protocol
* use simplified rotation protocol, update tests
* simplify schema
* delete all connection queues
* refactor
* switch notifications to the new queue, tests
* remove TODO
* refactor
* rfc correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* remove duplicate set active
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-10-31 13:33:28 +04:00
Evgeny Poberezkin
eb5c1c78cb
connection queue redundancy and rotation ( #521 )
...
* rfc: queue rotation
* update rfc
* messages for queue rotation
* allow multiple subscribed queues per connection in Agent/Client.hs
* refactor
* fix module name
* allow multiple queues in duplex connection type
* update commands
* add indices
* addConnectionRcvQueue
* switch connection to another queue (WIP)
* update schema/protocol
* switching queue works, but sending messages after the switch fails
* messages are delivered after rotation
* use connection-scoped queue ID
* rename queue records fields
* refactor using SMPQueue class/instances
* simplify queries
* QKEY: check queue is not secured, refactor
* update rfc
* mark queue as primary in QUSE
* queue rotation errors
* fix async ack
* fix async ACK to send OK
* correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* use SWCH command
* rename
* take into account only active queue subscription when determining connection result if at least one queue is active
* remove comment
* only enable notifications for connections with enableNtfs = True
* async test (WIP)
* async queue rotation test
* simplify combining results
* test with 2 servers
* fix unused subscribeConnection
* switch to cabal build
* increase build timeout
* increase delay in async test
* skip queue rotation tests
* build matrix
* step name
* use ubuntu-18.04 in build matrix
* enable rotation tests
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-10-29 18:57:01 +01:00
Evgeny Poberezkin
d788c3ca95
access servers via SOCKS proxy ( #482 )
...
* access servers via SOCKS proxy
* config to pass tcp timeout and option SOCKS5 proxy to the agent
2022-07-23 13:57:10 +01:00
Evgeny Poberezkin
68c2682e70
ios: synchronizing processing between app & nse ( #398 )
...
* ios: synchronizing processing between app & nse
* update rfc
* add sequence diagram
* manage agent phase
* track agent operation and phase changes
* update
* remove APInactive
* Update src/Simplex/Messaging/Agent/Protocol.hs
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-06-14 13:27:45 +04:00
Evgeny Poberezkin
4b3d04bd27
support message flags visible to SMP server to control notifications (and for any future extensions) ( #386 )
...
* support stopping and resuming agent (#385 )
* export agentDbPath
* support fully closing and resuming agent
* whitespace
* clean up
* support message flags visible to SMP server to control notifications (and for any future extensions)
* simplify message flags encoding
* GET command
2022-06-06 12:59:45 +01:00
Evgeny Poberezkin
4dc7d9bc77
Merge branch 'master' into notifications-server
2022-04-21 14:35:23 +01:00
JRoberts
12caa328a8
SMP confirmation timeout recovery rfc ( #357 )
2022-04-20 22:17:51 +01:00
Evgeny Poberezkin
f060914ab8
notifications server rfc/schema ( #332 )
...
* notifications server rfc/schema
* update schema/protocol
2022-03-22 16:53:01 +00:00
Efim Poberezkin
5e57c5dfd7
rename remaining occurrences of connection alias into connection id ( #265 )
2022-01-07 15:37:40 +04:00
Evgeny Poberezkin
04c65d98da
support permanent connection link ("contact") in SMP agent protocols ( #143 )
...
* open/public queue extension for SMP and SMP agent protocols
* add connection mode - invitation or contact
* use ConnectionMode with REQ and ACPT agent notification/command
* parameterize ConnectionRequest with ConnectionMode
* implement Contact connection mode for permanent connection links
* tests for contact connections
2021-12-04 18:42:08 +00:00
Efim Poberezkin
9f945492dd
fix markdown error in crypto rfc ( #167 )
2021-07-09 04:27:07 +10:00
Evgeny Poberezkin
dffa7a6100
groups agent protocol ( #142 )
...
* groups agent protocol
* groups to chat protocol
* update groups doc / diagram
* group protocol commands
* update group protocol
* count messages for different group operations
* broadcast and introduction as components for group protocol
* list connections in the broadcast
* protocol commands overview - using polymorphic commands
* another version of group protocol based on "broadcast" and "introduction" concepts
* update number of messages needed to establish connection
* corrections to broadcast and introduction protocols
* corrections in groups protocol
* corrections
2021-06-01 18:20:12 +01:00
Evgeny Poberezkin
377b166d8e
SimplexMQ readme, remove chat client ( #125 )
...
* SimplexMQ readme, remove chat client
* link to license
* add roadmap, corrections
* corrections
* strange dot -> colon
* corrections
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com >
2021-05-04 07:11:48 +01:00
Evgeny Poberezkin
829c198e5f
reserve block size (32 bit) and protocol (16 bit) in client handshake block ( #116 )
...
* reserve block size (32 bit) and protocol (16 bit) in client handshake block
* update function names
* fix abnf
2021-05-01 21:58:35 +01:00
Evgeny Poberezkin
5fec6c1755
Sign and verify agent messages ( #106 )
...
* sign and verify agent messages with key sent in HELLO (TODO: hardcoded block size - should use size from handshake; verify signature of HELLO message itself; possibly, different MSG status if signature was not verified (currently ignored) or failed to verify (currently fails with AGENT A_ENCRYPTION - alternatively, change it to AGENT A_SIGNATURE))
* remove hardcoded block size, make it 4096 bytes
* verify signature of HELLO message before it is added to RcvQueue
* refactor
* update doc
* rename functions
2021-04-26 20:05:46 +01:00
Evgeny Poberezkin
cddff78719
binary X509 encoding for RSA key send during transport handshake ( #105 )
2021-04-24 12:46:57 +01:00
Evgeny Poberezkin
9104ff0c4a
Merge branch 'master' into v2
2021-04-18 17:03:25 +01:00
Evgeny Poberezkin
5c1e9682c8
streams rfc draft ( #64 )
...
* streams rfc draft
* typos
* update streams RFC
Co-authored-by: Efim Poberezkin <efim.poberezkin@gmail.com >
2021-04-17 08:10:23 +01:00
Evgeny Poberezkin
0fbf406800
transport encryption ( #65 )
...
* transport encryption (WIP - using fixed key, parsing/serialization works, SMP tests fail)
* transport encryption
* transport encryption: separate keys to receive and to send, counter-based IVs
* docs: update transport encryption and handshake
* transport encryption handshake (TODO: validate key hash, welcome block, move keys to system environment)
* change KeyHash type to newtype of Digest SHA256
* transport encryption: validate public key hash
* send and receive welcome block with SMP version
* refactor: parsing SMPServer
* remove unused function
* verify that client version is compatible with server version (major version is not smaller)
* update (fix) SMP server tests
2021-04-05 13:10:16 +01:00
Evgeny Poberezkin
d96aeb727f
improve rsa encryption ( #61 )
...
* clrify encryption schemes
* increase SMP ping delay
* include authTag and msg size in encrypted message header, pad messages to fixed size
* use newtype for Key and IV bytestrings
* rename CryptoError constructors
* refactor Word to Int conversion
* refactor padding, replace padding character
* rfc corrections, comment
* rename aesTagSize -> authTagSize
* failing test
2021-02-28 16:17:28 +00:00
Efim Poberezkin
8d05ace601
crypto rfc: clean up e2e ( #41 )
2021-02-15 20:39:21 +04:00
Efim Poberezkin
1cf1c6a4b1
crypto ( #33 )
...
* add crypto rfc
* crypto rfc: fix handshake logic
* transport encryption
* e2e encryption and command verification
* crypto rfc: clarify secrecy of public keys
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-02-15 20:22:40 +04:00
Evgeny Poberezkin
3192092349
message management ( #32 )
...
* message management rfc
* update message management rfc
* message management ideas (WIP)
* message management updated
* messages RFC
* update agent MSG constructor to include recipient/broker/sender message IDs and timestamps
* remove agent command ACK - agent automatically acknowledges server messages
* correct messages doc
2021-02-26 18:13:04 +04:00