Evgeny Poberezkin
a70f492f4d
proxy: fallback to direct connection if destination relay does not support proxy protocol ( #1132 )
...
* proxy: fallback to direct connection if destination relay does not support proxy protocol
* move version to TransportError, refactor
2024-05-07 13:37:40 +01:00
Alexander Bondarenko
c85f6a2f0e
proxy: reporting errors ( #1108 )
...
* smp-proxy: iron out errors
* treat proxy timeouts as temporary
* update errors
* proxy errors (missing encoding)
* update
* enable tests
* update
* update
* fix
* fix
* simplify
* test
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-05-06 22:00:42 +01:00
Evgeny Poberezkin
f22daf5cb6
Merge branch 'master' into proxy
2024-05-06 15:26:11 +01:00
Evgeny Poberezkin
ee8e4067b0
agent: prepare connection record before joining to prevent race conditions ( #1128 )
...
* agent: prepare connection record before joining to prevent race conditions
* prepare connection for contact address as well
* clean up
2024-05-05 12:12:19 +01:00
Alexander Bondarenko
0e205e70ad
add TRcvQueues tests ( #1117 )
...
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-05-03 23:39:00 +01:00
Evgeny Poberezkin
fb5d54e0a2
Merge branch 'master' into proxy
2024-05-01 12:52:04 +01:00
Evgeny Poberezkin
6d60de2429
proxy: agent implementation ( #1106 )
...
* proxy: agent implementation
* revert change
* update rfc
* test stuck subscription mock
* store proxy sessions inside SMP client var
* rename
* create and use proxy session
* tests
* return proxy in SENT event
* rename, more tests
* rename
* more tests
* remove comment
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
2024-05-01 08:48:33 +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
Alexander Bondarenko
b98fdb672d
transport: increase client timeouts, don't send command after timeout ( #1110 )
...
* transport: fix client handshake timeouts
* fix handshake timeout
* skip sending requests for timed out responses
* expose batch concurrency as PClient field
* move to NetworkConfig
* remove Request on timeout
* use record
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-04-20 18:17:48 +01:00
Evgeny Poberezkin
2d1609f222
update envelope sizes for proxied messages, remove unnecessary proxy-relay encryption padding ( #1107 )
...
* update envelope sizes for proxied messages
* remove unnecessary padding from proxy-relay encryption
2024-04-19 20:24:25 +01:00
Alexander Bondarenko
58ede38bf4
put smp errors into proxy wrappers ( #1103 )
...
* put smp errors into proxy wrappers
* use substring in PROXY UNEXPECTED error
* fix encoding
* revert String encoding, discard invalid errors in QC
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-04-19 14:58:15 +01:00
Evgeny Poberezkin
7712070cb3
Merge branch 'master' into proxy
2024-04-18 23:33:06 +01:00
Evgeny Poberezkin
c00c223f3b
remove (or make optional) client key from handshakes ( #1104 )
...
* remove (or make optional) client key from handshakes
* remove comment
2024-04-18 22:43:49 +01:00
Evgeny Poberezkin
a3b229f668
SMP proxy: low level client and server implementation ( #1096 )
...
* SMP proxy: low level client and server implementation
* SMP proxy: server implementation (#1098 )
* wip
* PRXY command
* progress
* SMP Proxy: client-level implementation (#1101 )
* buildable
* encode messages
* update pkey
* fix queue types
* wrap SEND in proxy lookup
* WIP proxy client
* WIP
* post-rebase fixes
* encode something with something
* cleanup
* update
* fix nonce/corrId in batchingTests
* WIP: dig into createSMPProxySession
* agent
* test progress
* pass the test
* parameterize transport handle with transport peer to include server certificate (#1100 )
* parameterize transport handle with transport peer to include server certificate
* include server certificate into THandle
* load server chain and sign key
* fix key type
* fix for 8.10
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
Co-authored-by: IC Rainbow <aenor.realm@gmail.com >
* cleanup
* add 2-server test
* remove subsumed test
* checkCredentials for BrokerMsg
* skip batching tests
* remove userId param
* remove agent changes
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
* remove unused type
* icrease test timeout
* reduce transport block
* envelope sizes
* don't fork unless have proxied commands to process
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
Co-authored-by: IC Rainbow <aenor.realm@gmail.com >
2024-04-18 22:35:17 +01:00
Evgeny Poberezkin
2f43b43225
parameterize transport handle with transport peer to include server certificate ( #1100 )
...
* parameterize transport handle with transport peer to include server certificate
* include server certificate into THandle
* load server chain and sign key
* fix key type
* fix for 8.10
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
Co-authored-by: IC Rainbow <aenor.realm@gmail.com >
2024-04-17 17:46:22 +01:00
Evgeny Poberezkin
ad4b5b6b71
parameterize transport handle with transport peer to include server certificate ( #1100 )
...
* parameterize transport handle with transport peer to include server certificate
* include server certificate into THandle
* load server chain and sign key
* fix key type
* fix for 8.10
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
Co-authored-by: IC Rainbow <aenor.realm@gmail.com >
2024-04-15 13:47:48 +01:00
Evgeny Poberezkin
98eb2742bc
Merge branch 'master' into proxy
2024-04-13 18:51:17 +01:00
Evgeny Poberezkin
b741b65700
use online status in network information ( #1094 )
...
* use online status in network information
* test
* refactor
* flip condition
* fix
2024-04-12 22:22:24 +01:00
Alexander Bondarenko
875ddd80d6
SMP proxy: protocol ( #954 )
...
* WIP: proxy-related types
* test plan
* buildable with stubs
* add auth test
* update protocol
* fix
* update rfc
* update protocol/types
* disable test
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-04-12 18:04:29 +01:00
Alexander Bondarenko
036b7523a5
xftp: matrix test for new versions ( #1093 )
...
* xftp: matrix test for new versions
* manual matrix
* more, faster
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-04-12 13:28:16 +01:00
spaced4ndy
3b1dd6dff9
agent: notify about available quota ( #1087 )
...
* agent: notify about available quota
* rename
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-04-11 09:38:12 +01:00
Evgeny Poberezkin
2e44ec5083
fix message expiration test ( #1092 )
2024-04-11 08:52:15 +01:00
Evgeny Poberezkin
fbc25b171e
xftp: reply ERR AUTH when file is removed from server storage ( #1091 )
2024-04-10 23:02:48 +01:00
Evgeny Poberezkin
8fa9ed6317
wait for user network availability ( #1085 )
...
* ghc-options
* wait for user network availability
* test
* update
* comment
* refactor
* slow config
* line
* waitForUserNetwork in xftp and ntf workers
* refactor
* refactor with registerDelay
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2024-04-10 21:50:05 +01:00
Evgeny Poberezkin
1219446996
dispose agent instances, fix tests, ( #1089 )
...
* dispose agent instances in tests
* fix quota test
* tests: fix tests with -threaded (#1088 )
* fix some tests
* match RTS opts with apps
* less verbose rts stats
* enable sqlite extended error codes
* clean up
* unfocus
* remove extendedErrorCode
It's actually setExtendedResultCodes, which isn't yet available.
* diff
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
* fix switch test
* fix
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
2024-04-10 19:34:02 +01:00
Alexander Bondarenko
4c20ff6d00
xftp: negotiate protocol with ALPN ( #1047 )
...
* xftp: negotiate protocol with ALPN
* add RFC
* add handshake implementation
* implement extended handshake
* enable authentication
* update rfc
* Apply suggestions from code review
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
* cleanup
* discard trailing data
* cleanup diff
* use find
* rename
* refactor
* add x509 tests
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-04-09 15:03:40 +01:00
Evgeny Poberezkin
84b8c8417b
revert base64 change ( #1081 )
2024-04-03 09:27:36 +01:00
Evgeny Poberezkin
39bb804fab
xftp: fix repeated replica creation if it was in uploaded status ( #1079 )
...
* test with failing files (in progress)
* print
* add replica uploading state
* Revert "add replica uploading state"
This reverts commit 7068213aa6 .
* <=
* fix
* prints
* test no redundancy
* all tests no redundancy
* revert delay
* refactor
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2024-04-01 13:37:35 +04: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
Alexander Bondarenko
bbc9eccf4d
xftp: prevent overwriting completed upload ( #1063 )
...
* xftp: prevent overwriting completed upload
* add size check for skipCommitted
* fix import
* fail on incorrect size
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-03-28 18:12:48 +00:00
Alexander Bondarenko
ee90ea6a69
replace base64-bytestring with base64 ( #1065 )
...
* replace base64-bytestring with base64
* minify
* use bytestring-0.10 compatible fork
PR pending...
* bump base64 fork with text compat
* move compat details to modules
* switch repo
* add back module
* cleanup
* minify
* clean imports
* rename
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-03-27 23:35:09 +00:00
Alexander Bondarenko
5e0123313c
log control port commands, authentication for control port ( #1071 )
...
* log control port commands
* auth
* add auth to xftp, config and commands
* log missing auth
* put smp save under auth
* corrections
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-03-26 18:04:28 +00:00
Evgeny Poberezkin
b32259d048
notify about critical error on agent crash ( #1062 )
...
* notify about critical error on agent crash
* waitUntilActive
* disposeAgent
* fix
2024-03-21 14:54:57 +00:00
Alexander Bondarenko
db3bddecca
xftp-server: fix receiveServerFile ( #1048 )
...
* xftp-server: fix receiveServerFile
* refactor
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-03-19 13:34:21 +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
07fa75ec49
pqdr: agent api to confirm PQ encryption support during connection handshake, fix incorrect PQ support ( #1032 )
...
* pqdr: agent api to confirm PQ encryption support during connection handshake
* fix CONF, tests
* fix REQ, tests
* remove unused
2024-03-07 08:35:40 +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
spaced4ndy
30fd4065d9
rename delete waiting delivery tests ( #1022 )
2024-03-03 12:56:54 +04:00
Evgeny Poberezkin
ce78646c7f
refactor creating connection record ( #1021 )
2024-03-02 18:27:51 +00:00
spaced4ndy
294d7ec8dd
agent: delay connection deletion to finish delivery of pending messages ( #1015 )
...
* agent: delay connection deletion to finish delivery of pending messages (wip)
* fixes, test
* notify, test
* add tests
* comment
* add test
* timeout
* test timeout
* up
* more tests
* rename
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-02-29 18:08:58 +00:00
Evgeny Poberezkin
c9ec7ea274
Merge branch 'stable'
2024-02-27 18:07:30 +00:00
Evgeny Poberezkin
5011ac2e7c
Merge branch 'v5522' into stable
2024-02-27 17:58:08 +00:00