Evgeny @ SimpleX Chat
9e3b47a362
code refs, additional specs
2026-03-11 12:54:56 +00:00
Evgeny @ SimpleX Chat
326d6cc559
code comments
2026-03-11 12:17:46 +00:00
Evgeny @ SimpleX Chat
844b5ad3f1
cryptography modules specs
2026-03-11 11:53:18 +00:00
Evgeny
f3408d9bb6
explicit exports ( #1719 )
...
* explicit exports
* more empty exports
* add exports
* reorder
* use correct ControlProtocol type for xftp router
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-03-02 17:34:01 +00:00
Evgeny
d10e05b796
agent: split creating connection to two steps to prepare connection link in advance ( #1704 )
...
* agent: split creating connection to two steps to prepare connection link in advance
* linkEntityId, newOwnerAuth
* simplify
2026-01-27 10:54:13 +00:00
spaced4ndy
89b81d151f
agent: getConnShortLinkAsync; implement joinConnectionAsync for contact connections; narrow setConnShortLinkAsync only to Contact connections ( #1694 )
...
* agent: getConnShortLinkAsync
* enable all tests
* comment
* comment
* join conn async for contact URI (wip)
* fix test
* remove enableNtfs param
* FixedLinkData
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2026-01-20 08:40:35 +00:00
Evgeny
3e5b654109
agent: support multiple link owners in link data ( #1701 )
...
* agent: support multiple link owners in link data
* fix
2026-01-19 22:08:11 +00:00
spaced4ndy
3016b929b4
agent: make createConnection and setConnShortLink apis support setting all link data fields ( #1665 )
...
* agent: make createConnection and setConnShortLink apis support setting all link data fields
* add functions
* refactor
* refactor
* fix tests
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2025-11-05 07:08:33 +00:00
Evgeny
b4bcfd325b
agent: better handling errors during connection handshake retries ( #1578 )
...
* agent: handle invitation connection handshake errors
* fix/test retries for connecting via address
2025-06-25 19:06:00 +01:00
Evgeny
c5b7d3c7af
agent: use flexible (small/large) string encoding for contact link data, for backward/forward compatibility ( #1569 )
...
* agent: use large string encoding for contact link data
* size-dependent user link data encoding
* tag large user data encoding with \255
2025-06-16 11:11:59 +01:00
Evgeny
656f290660
agent: fix updating short invitation link data ( #1566 )
2025-06-13 21:27:46 +01:00
Evgeny
27d38518e1
agent: use PQ keys in contact request data inside link container (but not in contact request link); use PQ keys in invitations sent to contact addresses ( #1563 )
...
* agent: use PQ keys in contact request data inside link container (but not in contact request link); use PQ keys in invitations sent to contact addresses
* do not use PQ keys in the link with old address versions
2025-06-11 18:22:37 +01:00
Evgeny
90e8c3adf6
smp agent: use static RNG function to avoid dynamic C stub created by Haskell FFI wrapper ( #1556 )
2025-06-02 20:11:27 +01:00
Evgeny
53b72469b6
refactor types ( #1551 )
2025-05-27 22:31:02 +01:00
Evgeny
b7a9542213
smp server: short links and owners for channels ( #1506 )
...
* smp server: short links and owners for channels
* types
* support mutliple rcv keys
* fix down migration, test/create server schema dump
* reduce schema dump
* parameterize type for link data by connection type
* return full connection link data
* test version
* change short link encoding
* test: print pg_dump output
* server pages, link encoding
* fix connection request when queue data and sender ID are created for old servers
* test, change pattern
* ci: install postgresql tools in runner (#1507 )
* ci: install postgresql tools in runner
* ci: docker shell abort on error
* fix pattern for ghc 8.10.7
* patch ConnReqUriData SMP encoding to preserve queue mode after decoding
* test for RKEY
* fix/test store log with RKEY
---------
Co-authored-by: sh <37271604+shumvgolove@users.noreply.github.com >
2025-04-10 19:09:47 +01:00
Evgeny
a2a4b80af4
agent: padded encryption for link data, shorten/restore short links, tests ( #1505 )
...
* agent: padded encryption for link data, tests
* lambda
* test short links via proxy
* tests: server persistence with short links
* rfc: group links
* shorten, restore, test short links encoding
* rfc
2025-04-05 07:45:39 +01:00
Evgeny
2c5530c9f0
agent: binary protocol encoding for connection request ( #1503 )
...
* agent: binary protocol encoding for connection request
* enable tests
* test
2025-04-01 22:32:49 +01:00
Evgeny
04cbed90fb
agent: set/update and delete contact short link data ( #1499 )
...
* agent: set/update and delete contact short link data
* delete contact link data, tests
* comments
* type signature for GHC 8.10.7
2025-03-30 11:17:25 +01:00
Evgeny
b83d897650
smp protocol: short links and other changes from RFC ( #1489 )
...
* smp protocol: short links types and other changes from RFC
* add fields for queue link ID and data
* create queue and ntf credentials with NEW command
* all tests
* simplfiy types, update rfc
* update rfc
* include SenderId in NEW request in case queue data is sent
* store queue data and generate link ID if needed
* update rfc
* agent API and types
* SMP commands and persistence for short links
* SMP client functions for short links
* agent client functions for short links
* create rcv queue with short link (TODO secret_box)
* encryption and encoding for link data, postgres client migration
* test creating short link
* get link and data, tests
* comments
* type signature
2025-03-26 17:26:27 +00:00
Evgeny
4dc40bd795
smp server: PostgreSQL queue store ( #1448 )
...
* smp server: queue store typeclass
* parameterize JournalMsgStore
* typeclass for queue store
* postgres WIP
* compiles, passes tests
* remove StoreType
* split migrations
* progress
* addQueueRec
* reduce type spaghetti
* remove addQueue from typeclass definition
* getQueue
* test postgres storage in SMP server
* fix schema
* comment
* import queues to postgresql
* import queues to postgresql
* log
* fix test
* counts
* ci: test smp server with postgres backend (#1463 )
* ci: test smp server with postgres backend
* postgres service
* attempt
* attempt
* empty
* empty
* PGHOST attempt
* PGHOST + softlink attempt
* only softlink attempt
* working attempt (PGHOST)
* remove env var
* empty
* do not start server without DB schema, do not import when schema exists
* export database
* enable all tests, disable two tests
* option for migration confirmation
* comments
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2025-02-24 15:47:27 +00:00
spaced4ndy
0d8a1a2879
agent: encrypt messages on delivery ( #1446 )
...
* agent: save message body once (plan, schema)
* split
* new type
* bs
* encrypt on delivery
* schema
* fix test
* check pad size
* rename
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2025-02-14 12:35:18 +00:00
Evgeny
e78ab60c97
build: fix postgres ( #1444 )
2025-01-28 22:02:41 +00:00
spaced4ndy
b7a8df40c4
Merge branch 'master' into postgres
2024-12-25 12:15:41 +04:00
spaced4ndy
bf28902327
agent: reuse ratchet on repeat join ( #1426 )
...
* agent: reuse ratchet on repeat join
* check status
* update
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-12-25 00:07:45 +00:00
spaced4ndy
cf66aadc20
postgres: store implementation, conditional compilation ( #1421 )
...
* postgres: implementation wip
* to from field
* agent store compiles
* methods
* create store
* tests wip
* migration tests pass
* tests compile
* fix tests
* tests wip
* bool int
* tests wip
* tests wip
* more boolint
* more fixes
* more fields pass
* more fixes
* binary
* instances, binary
* test passes
* remove todos, more tests pass
* fix conflict
* fix bool
* fix sequence breaking
* fix insertedRowId
* skip ratchet re-synchronization tests
* after test
* file tests
* after test
* rename
* remove comment
* format
* remove unused
* suppress notices
* fixes
* move
* fix
* instance
* instance2
* fix
* instances
* comment
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-12-20 15:54:58 +04:00
Evgeny
7dcac19a67
xrcp: session encryption with forward secrecy ( #1328 )
...
* xrcp: session encryption with forward secrecy
* update doc
* accept keys as parameters
* docs: counter
* spec corrections
2024-09-24 09:22:26 +01:00
Evgeny Poberezkin
896b2425a4
xrcp: use SHA3-256 in hybrid key agreement ( #1302 )
...
This reverts commit 62133ceb24 .
2024-09-11 19:32:40 +01:00
Evgeny Poberezkin
3dab330480
use throwE instead of throwError ( #1187 )
...
* use throwE instead of throwError
* test delay
2024-06-05 11:20:50 +01:00
Evgeny Poberezkin
2ff5f5a832
agent: add context to CMD error ( #1167 )
...
* agent: add context to CMD error
* tests, more warnings
* fix tests
* log TBQueue sizes
* log locks
* more logs
* log sendMessagesB
* fix test
* log length
* refactor
* remove logging
* revert lock scope change
* cleanup
* add string error to A_PROHIBITED
* remove
* remove test limitations
* language
2024-05-24 14:13:01 +01:00
Evgeny Poberezkin
875a56b75a
Merge branch 'stable'
2024-05-23 16:48:11 +01:00
Alexander Bondarenko
984394d906
core: remove MonadUnliftIO ExceptT orphans ( #1169 )
2024-05-23 16:44:00 +01:00
Evgeny Poberezkin
b27f126bab
include server version range in transport handle ( #1135 )
...
* include server version range in transport handle
* xftp handshake
* remove coment
* simplify
* comments
2024-05-08 23:00:00 +01:00
Evgeny Poberezkin
fe28e02be7
agent: make version independent of PQ enqryption support ( #1114 )
...
* agent: make version independent of PQ enqryption support
* remove comment
2024-04-22 13:40:24 +01:00
Evgeny Poberezkin
6ded721daa
remove monad typeclasses to reduce overhead ( #1077 )
...
* remove monad typeclasses to reduce overhead
* remove unliftIO
* StrictData
* inline
* optional agent port
* avoid MonadUnliftIO instance (#1078 )
* avoid MonadUnliftIO instance
* simpler liftError'
* rename
* narrow down instance
* revert
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
* logServer
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
2024-03-31 20:50:35 +01:00
Evgeny Poberezkin
b4c90781bb
pqdr: update envelope sizes
2024-03-10 17:53:57 +00:00
Evgeny Poberezkin
851ed2d02e
pqdr: more tests, pass e2e version to rcEncrypt from config ( #1040 )
...
* pqdr: more tests, pass e2e version to rcEncrypt from config
* fix
2024-03-10 13:29:03 +00:00
Evgeny Poberezkin
054b6edb14
pqdr: clean up ( #1039 )
2024-03-10 11:27:31 +00:00
Alexander Bondarenko
8cdd49b912
core: restore Eq instances ( #1038 )
...
* core: restore Eq instances
* remove duplicates from tests
2024-03-08 13:43:33 +00:00
Evgeny Poberezkin
8ff4c628b5
pqdr: make envelope sizes dependent on version, test enabling PQ ( #1035 )
2024-03-08 08:28:15 +00:00
Evgeny Poberezkin
11288866f9
pqdr: refactor
2024-03-07 12:41:10 +00:00
Evgeny Poberezkin
4ffb6a348a
pqdr: use different newtypes for supporting and enabling PQ encryption in connections ( #1031 )
...
* pqdr: use different newtypes for supporting and enabling PQ encryption in connections
* rename field, fix test
* refactor
2024-03-06 21:28:03 +00:00
Evgeny Poberezkin
b435a4dacb
envelope sizes dependent on PQ encryption ( #1028 )
...
* envelope sizes dependent on PQ encryption (WIP)
* add "supported" flag to ratchets, update this flag on ratchet resync
* change connection PQ status on sendMessage
* comment, fix
* refactor
2024-03-06 16:38:30 +00:00
Evgeny Poberezkin
b050cf5027
double ratchet versioning for post-quantum encryption ( #1025 )
...
* correctly parse new Ratchet fields when omitted
* rfc: migrating connection versions to pqdr
* update rfc
* WIP (dont commit)
* rename versions
* update ratchet version based on PQ encryption feature flag
* remove duplicate function
* synchronize ratchet, fix tests, refactor
* comments
* test
* pattern
2024-03-05 17:07:15 +00:00
Evgeny Poberezkin
ba1bfaa5aa
Merge branch 'master' into pq
2024-03-04 20:13:01 +00:00
Evgeny Poberezkin
dd2bd11584
parameterize version scopes with phantom types ( #1026 )
...
* parameterize version scopes with phantom types
* move Version to another module
* parens
2024-03-04 19:06:51 +00:00
Evgeny Poberezkin
e06e22328f
agent: quantum-resistant double ratchet encryption ( #939 )
...
* doc
* diff
* ratchet header
* types
* ratchet step with PQ KEM, message header with KEM
* comment
* update types, remove Eq instances, store KEM keys to database
* pqx3dh
* PQ double ratchet test
* pqdr tests pass
* fix most tests
* refactor
* allow KEM proposals from both sides
* test names
* agent API parameters to use PQ KEM
* initialize ratchet state for enabling KEM
* fix/test KEM state machine to support disabling/enabling via messages
* more tests
* diff
* diff2
* refactor
* refactor
* refactor
* refactor
* remove Maybe
* rename
* add PQ encryption status to CON, MID and MSG events and sendMessage API results
* different PQ parameter when creating connection
* rename/reorganize types for PQ encryption modes
* rename
* fix testWaitDeliveryTimeout
* rename
* rename2
* ghc8107
* rename
* increase timeouts for concurrent send/receive test
* enable all tests
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2024-03-03 19:40:49 +00:00
Evgeny Poberezkin
c179073260
remove support for old versions ( #990 )
...
* remove support for old versions (WIP)
* fix
* updates
* use version var
2024-02-16 13:28:50 +00:00
Evgeny Poberezkin
ca527b4d6c
use Builder for batching commands ( #953 )
...
* use Builder for batching commands
* refactor
* refactor
* increase timeout in test
* do not materialize builder
* use concat
* debug test
* debug2
* delays
* more delay, less worker delay
* remove logs
* reduce delay
* tests
* sized builder
* builder
* comment
* remove unsafe
* style
* remove fromIntegral
2024-01-08 22:54:27 +00:00
Evgeny Poberezkin
13a60d1d39
use ChaChaDRG as the source of randomness ( #920 )
...
* use ChaChaDRG as the source of randomness
* remove functions using entropy directly
* comment
2023-12-21 00:12:08 +00:00
Evgeny Poberezkin
6a2e6b040e
additional lazy crypto for XRCP ( #890 )
2023-11-10 11:16:43 +00:00