Commit graph

95 commits

Author SHA1 Message Date
Morgan Pretty a26ee12f8d Further work on Id Blinding
Renamed the setter for the SOGS 'Server' object for consistency
Updated the Curve25519Kit repo to use an Oxen fork
Updated the MockDataGenerator to accomodate the latest changes
Updated the ConversationVC to better support getting replaced when the conversion from blinded to unblinded happens while on that screen
Added a cache for the mapping between blinded ids and standard ids (gets cached whenever a valid match is found)
Added a migration to remove the old 'authToken, 'lastMessageServerId' and 'lastDeletionServerId' collections (redundant in SOGS V4)
2022-03-01 14:06:37 +11:00
Morgan Pretty cc2a077a6c Started working on MessageRequestResponse handling for SOGS message requests
Pointing Curve25519 to use a fork that exposes an XEd25519 conversion method
Fixed an issue where I had broken all message sending due to the SnodeAPI casting Onion responses to `Any`
2022-02-25 17:48:09 +11:00
Morgan Pretty dbead5e3c8 Got the '/inbox' APIs and encryption/decryption/validation working
Added a few types to make the code more readable
Added the inbox request to the polling
Added a couple of properties to the TSContactThread to indicate the originating open group to support SOGS DMs
Added code to store the latest message id for an open group inbox
Added a bunch of documentation from the API docs into the OpenGroupAPI (and associated models)
Updated the OpenGroupAPI to match the latest docs
Fixed the incorrect structure of the SendDirectMessageRequest
Fixed an incorrect inbox endpoint path
Tweaked the batch response handling so it wouldn't fail to parse all responses if a single one failed
Renamed IdPrefix to SessionId.Prefix and cleaned up the type to be more readable & self-documenting
2022-02-25 11:59:29 +11:00
Morgan Pretty faa8918cd4 Replaced the remaining non-file legacy methods with their non-legacy equivalents
Updated the OpenGroup polling to run on a non-main thread
Updated the TSGroupModel to store moderatorIds as well as the adminIds (new endpoint is only going to give diffs)
Updated the BatchRequest to support json, base64 encoded strings and raw bytes for it's body
Replaced the 'lastMessageServerID' methods with 'OpenGroupSequenceNumber' methods (since we have swapped the property over)
Added an alert when banning fails (previously it would fail silently)
Fixed a bug where sent blinded messages were appearing as incoming messages
Fixed a bug where the OpenGroup infoUpdates wasn't getting decoded correctly
Fixed an issue where the ConversationVC wouldn't become the first responder again after the ban alerts disappeared
Fixed an issue where I'd incorrectly used the message 'seqNo' in place of the message server id
Fixed an issue where open group messages were setting their `sentTimestamp` to seconds instead of milliseconds for incoming messages
2022-02-24 10:39:22 +11:00
Morgan Pretty 1edd500dab Updated to the latest blinding behaviour
Added a couple more dependencies for unit testing injection
Updated the MessageSender to set the sender of the message to the appropriate blinded/unblinded key
Updated the OpenGroup Message to handle verification of both blinded and unblinded messages
Updated the MessageSender to use dependency injection for it's sendToOpenGroupDestination method
Updated the JSONDecoder to support getting dependencies (for signature verification)
Fixed tests broken by updating the signing logic
2022-02-21 10:01:53 +11:00
Morgan Pretty ef09d4d5aa Additional encryption work on id blinding
Got the updated blinding logic working (at least when authenticating a request - still need to deal with message signing and verification)
Storing the server capabilities in the database now so we can correctly blind requests based on them
Renamed the remaining 'v2' functions and classes to just be 'OpenGroup' since there isn't a 'V2' anymore
Cleaned up a few TODOs and functions
2022-02-17 18:33:23 +11:00
Morgan Pretty b655882cbd Started resolving TODOs
Added some new properties to the OpenGroupV2
Moved a number of methods and variables from OpenGroupAPI to OpenGroupManager (anything doing actual logic)
Moved the message signing into the OpenGroupAPI (since that's the only place it happens)
Renamed remaining old model classes to start with 'Legacy' to make clean up easier
Updated the OpenGroupAPI poll method to use the same logic as it previously did to determine if it should retrieve recent messages or messages since the last one
2022-02-16 10:31:08 +11:00
Morgan Pretty 8cc9caa0fd Renamed the OpenGroupPollerV2 and OpenGroupManagerV2 2022-02-15 16:44:10 +11:00
Morgan Pretty 63e6cdd9ec Renamed OpenGroupAPIV2 to OpenGroupAPI
Added the inbox endpoints
2022-02-15 16:30:11 +11:00
Morgan Pretty 4963a84ddd Added more unit tests for the OpenGroupAPI (fixed a couple bugs as well) 2022-02-15 16:00:51 +11:00
Morgan Pretty eb927c36a9 Started cleaning up some of the SOGS and Onion Requests structure
Cleaned up the OnionRequestAPI so we don't need the LegacyOnionRequestAPI
Added requests for the user endpoints
Added deprecated flags to the legacy endpoints and functions
Added some logic to start handling the new poll (batch) response
Started adding unit tests for the OpenGroupAPI functions
2022-02-15 13:55:59 +11:00
Morgan Pretty c90f346d6a Further SOGS V4 integration work
Added in the v4 onion requests logic
Added in the new pin/unpin APIs
Split up additional legacy methods to try and simplify the refactoring
Added a number of TODOs around usage of legacy request methods
2022-02-14 14:07:45 +11:00
Morgan Pretty 4f3900771e More work on getting SOGS V4 integrated
Updated the MessageSendJob to support V4 messages (V2 messages will be upgraded to V4 if they get re-encoded)
Renamed the Message+Destination from 'openGroup' & 'openGroupV2' to 'legacyOpenGroup' and 'openGroup'
Started plugging in more of the V4 APIs
Renamed a number of the V2 APIs to start with 'legacy'
2022-02-11 16:48:16 +11:00
Morgan Pretty 2284375fc0 Started work on updated SOGS support
Split the OpenGroupAPIV2 into separate files
Started working on the new auth and blinded-id approaches (new auth working with un-blinded id suggesting blinded-id code is incorrect)
Updated the SOGS request/response types to use Codable
Updated the SOGS Request type to use enums instead of strings for keys (to reduce likelihood of typos breaking things)
Updated SessionMessagingKit to use Codable and JSONEncoder/JSONDecoder instead of the legacy JSONSerialization
Cleaned up some naming conventions in the SessionMessagingKit (calling a URLRequest body 'parameters' is very confusing...)
Removed the custom TSRequest class (just using standard URLRequest everywhere instead)
Added a number of extension functions to enable some more functional-coding styles
Added extensions to Sodium methods to allow scalar multiplication and the ability to hash providing a salt and a personalisation value (both needed for new SOGS auth)
Fixed an issue where the legacy auth for SOGS could crash due to threading issues (multiple threads accessing the same variable)
Fixed an issue where if you were in two rooms in a single SOGS and deleted one of them, the other room would stop getting updates as the server public key was getting removed
2022-02-10 11:17:41 +11:00
Morgan Pretty 394b0646a3 Updated the code to support additional session id prefixes 2022-02-08 16:37:01 +11:00
Niels Andriesse e84fc1aa04 Include destination info in error messages 2021-07-15 09:47:03 +10:00
Niels Andriesse ba60879343 Add support for new ban and delete all endpoint 2021-07-13 14:33:42 +10:00
nielsandriesse 0d9f5388da Prepare for OGS timestamp handling changes 2021-05-31 11:28:21 +10:00
Niels Andriesse 601062c9ef Fix timeSinceLastOpen usage 2021-05-24 16:39:18 +10:00
Brice-W 51ba97827d open group polling limit implementation 2021-05-24 16:00:42 +10:00
Niels Andriesse 3fda8daec9 Merge branch 'dev' into cleanup 2021-05-20 16:25:59 +10:00
Niels Andriesse e2715d1ee9 Implement sending logic 2021-05-07 14:08:52 +10:00
Niels Andriesse 7e60d3c218 Merge branch 'dev' into cleanup 2021-05-06 09:24:42 +10:00
Niels Andriesse ad801d4f33 Fix threading 2021-05-06 09:23:47 +10:00
nielsandriesse 06f795169b Merge branch 'dev' into cleanup 2021-05-05 14:10:19 +10:00
nielsandriesse 964cb8b326 Fix new deletion method 2021-05-05 13:49:24 +10:00
nielsandriesse 21acdfc835 Clean up thread model 2021-05-05 09:53:18 +10:00
Niels Andriesse d742fc1548 Delete V1 OGS & file server 2021-05-04 15:46:48 +10:00
Niels Andriesse 3daa6e8de1 Fix deletion handling 2021-05-03 13:14:01 +10:00
Niels Andriesse 4eb7d19b3e Fix initial rooms fetch 2021-04-30 14:04:49 +10:00
Niels Andriesse c747acfc04 Fix compact poll deletion handling 2021-04-29 11:36:29 +10:00
nielsandriesse deb301e5b7 Update for OGS API changes 2021-04-28 10:44:50 +10:00
Niels Andriesse e9df213bfe Put feature flags in one place 2021-04-27 08:53:18 +10:00
Niels Andriesse b516647125 Switch to production 2021-04-26 14:41:36 +10:00
Niels Andriesse cfb1d78d35 Fix compact polling auth token handling 2021-04-22 16:22:39 +10:00
Niels Andriesse f865bd8125 Enable V2 open groups 2021-04-22 09:54:58 +10:00
Niels Andriesse b85edbe900 Fix potentially duplicated requests 2021-04-22 09:24:11 +10:00
Niels Andriesse 5a242ce4e8 Debug 2021-04-20 10:26:52 +10:00
Niels Andriesse fac376bf55 Use HTTP for default session open group server 2021-04-20 09:40:25 +10:00
Niels Andriesse 4774123ad4 Update V2 open group poller for compact polling 2021-04-19 14:44:27 +10:00
Niels Andriesse 2eab06cec9 Add compact poll endpoint 2021-04-16 15:46:50 +10:00
Niels Andriesse b30d6f9add Store V2 open group auth token promises per room 2021-04-16 10:44:23 +10:00
nielsandriesse 330e4ce8ad Fix unnecessary V2 open group requests 2021-04-07 13:18:24 +10:00
Niels Andriesse b334ad3446 Update for back-end changes 2021-03-30 15:41:01 +11:00
Niels Andriesse d4b745a322 Cache open group preview images 2021-03-30 09:54:40 +11:00
Niels Andriesse 2dab160599 Actually set open group images 2021-03-30 09:33:51 +11:00
Niels Andriesse c42a694ef6 Show group images 2021-03-29 16:42:06 +11:00
Niels Andriesse 50ab253576 Add group image endpoint 2021-03-29 16:14:14 +11:00
Niels Andriesse 1e9b1520e1 Fix auth token handling 2021-03-29 15:41:08 +11:00
Niels Andriesse e5b5f2cf07 Put V2 open groups behind a feature flag 2021-03-29 14:11:52 +11:00