Commit Graph

196 Commits (f7c7c755279fd775b368a08215a6c5b17d81955a)

Author SHA1 Message Date
Morgan Pretty c44256b1d6 Added more unit tests
Fixed a possible divide by zero error
Cleaned up some of the id blinding methods (ie. removing handling for impossible error states)
Added unit tests for the new Sodium methods (used for id blinding)
Added unit tests for some of the shared code
Added unit tests for the MessageSender+Encryption extension functions
Added unit tests for the MessageReceiver+Decryption extension functions
Updated the unit test key constants to be consistent with the SOGS auth-example keys for consistency
2 years ago
Morgan Pretty ff480a37d5 Added more unit tests for the OpenGroupManager
Added the ability to mock the identity manager (ie. return a mock key for the users key)
Swapped the Test Nonce16 & Nonce24 classes for Mock ones
Fixed an issue where the ContactUtilities call from the OpenGroupManager wasn't injecting the dependencies
Added unit tests for the handleDirectMessages and isUserModetatorOrAdmin methods
2 years ago
Morgan Pretty b1684f6b23 More unit tests, fixed a few issues uncovered by testing
Updated the OpenGroupManager to support injecting the cache for better unit testing
Updated the MessageReceiver to support Dependencies being passed as a parameter for visible message and storage purposes
Added a debugDescription to the OpenGroup for more accurate unit testing
Fixed an issue where the poll function would include the inbox and outbox endpoints even when the server was not blinded
Fixed some test compilation time issues
Fixed a bug where the OpenGroupAPI Room was using 'description' as a parameter name (used by Swift for other purposes)
Fixed a bug where then OpenGroup was incorrectly using the system 'description'  property in one place
Renamed the parseV2OpenGroup to parseOpenGroup for consistency
2 years ago
Morgan Pretty 2e10ccf99d Updated the code to cache the retrieval of the user public key 2 years ago
Morgan Pretty f9c2655df4 Finalised the OpenGroupAPI and more tests
Fixed an issue where messages where signed incorrectly when blinding wasn't enabled on a SOGS
Fixed an issue where a single invalid message would result in all messages in that request being dropped
Updated the final legacy endpoint (ban and delete all messages)
Moved the OpenGroupManager poller values into the 'Cache' (so they are thread safe)
Started adding unit tests for the OpenGroupManager
Removed some redundant parameters from the 'Request' type
2 years ago
Morgan Pretty 31ecd78737 Refactored the mocking code to use a better convention which also allows for call validation
Added a Nimble predicate for checking a function on a mock was called
Added the various remove methods to the Storage protocol
Updated the Ed25519Type to be an instance-based protocol (needed for mocking)
2 years ago
Morgan Pretty 3e0ccaea4c Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Utilities/MentionUtilities.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/Poller.swift
#	SignalUtilitiesKit/Messaging/Sending & Receiving/MessageSender+Convenience.swift
2 years ago
Morgan Pretty 65f14cf0a1 Added more unit tests
Removed an unused endpoint
Moved 'Dependencies' into the Utilities folder (also out from being nested within 'OpenGroupAPI' since it can be broader than that)
Finished adding unit tests for the OpenGroupAPI
2 years ago
Morgan Pretty d298bcdb4e Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Utilities/ContactUtilities.swift
#	SessionUtilitiesKit/General/Array+Utilities.swift
2 years ago
Morgan Pretty f9468219d9 Code cleanup and database transaction tweaks
Updated the OpenGroupManager to be a bit more thread safe
Updated the OpenGroupManager "isModOrAdmin" check to better support the various keys of the current user
Fixed some blinding code to use an existing transaction rather than create it's own ones
Removed the Legacy API calls, handling and types
2 years ago
Morgan Pretty 81f563229f Renamed FileServerAPIV2 to FileServerAPI
Updated the direct file upload/download to use the non-base64 approaches as well
Updated the attachment 'serverId' value to be a string instead of a UInt64 (future-proofing)
Updated the OnionRequest V4 response handling to avoid converting the "response body" part to a string and processing that, instead just slice the byte array (ie. stopped it from being broken from multiple conversions)
Removed the base64-based file upload/download endpoints (no use including them when they are inefficient and we don't want to use them)
2 years ago
Morgan Pretty 1c474955de File upload working, further code cleanup
Got the updated file upload working
Removed the legacy 'room' header
Consolidated a number of types between SOGS, FileServer and general requests
Updated the OnionRequestAPI to deal with a Data payload (rather than encoding it to a string and then back to data)
2 years ago
Morgan Pretty c04d4544f2 Added more unit tests
Refactored the existing unit tests to use Quick
Started adding unit tests for a number of the OpenGroupAPI network models
Added unit tests for the SessionId type
2 years ago
Morgan Pretty 8a7db1d48f Started adding logic for the outbox endpoint
Moved the BlindedIdMapping retrieval logic to ContactUtilities so it's reusable
Added the 'outbox' endpoints (need testing as they aren't deployed to test yet)
2 years ago
Morgan Pretty bdf5b3bc1b Started resolving more TODOs and fixing up unit tests
Updated the Dependencies to lazily create their fallback instances (optimisation to avoid unnecessary initialisations)
Reworked the Atomic type again to have a more consistent behaviour across types
Fixed the build issues with the unit tests (haven't fixed broken tests yet)
2 years ago
Morgan Pretty 3a75639285 Fixed a few of issues in the last commit
Fixed a couple of build issues where I missed a couple of calls to removed functions
Fixed a EXC_BAD_ACCESS issue where the 'poll' function could be called from multiple threads (which accesses and mutates variables)
Cleaned up the MessageRequestResponse handling a little
2 years ago
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`
2 years ago
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
2 years ago
Ryan Zhao 7a677a1800 move pollers to one working queue to avoid race condition 2 years ago
ryanzhao 7c2e25e25a remove useless code 2 years ago
Ryan Zhao 16c9b7793a move pollers to background threads 2 years ago
Ryan Zhao a86310b0f5 improve global search performance 2 years ago
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
2 years ago
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
2 years ago
Morgan Pretty 63e6cdd9ec Renamed OpenGroupAPIV2 to OpenGroupAPI
Added the inbox endpoints
2 years ago
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
2 years ago
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
2 years ago
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'
2 years ago
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
2 years ago
Morgan Pretty 49dd52a1fb Added code to support generating a derived key for id blinding 2 years ago
Morgan Pretty 4d62ddbd77 Merge branch 'dev' into fix/safari-sharing
# Conflicts:
#	Podfile.lock
2 years ago
Ryan Zhao 18fea4ab73 Merge branch 'dev' into global-search 2 years ago
Morgan Pretty 09d63456b6 Merge branch 'dev' into fix/safari-sharing
# Conflicts:
#	Podfile
#	Podfile.lock
#	Session.xcodeproj/project.pbxproj
2 years ago
Morgan Pretty 03fb5cbeeb Cleanup and tweaks
Fixed some compilation issues.
Removed an unused dependency.
Cleaned up the Podfile to minimise duplication.
Pointed at an oxen fork of SignalCoreKit instead of a personal one.
2 years ago
Ryan Zhao 42903d835d search for name and nickname 3 years ago
Ryan Zhao 8be5768ad2 snippet for group members 3 years ago
ryanzhao fed1218538 WIP: global search UI 3 years ago
Morgan Pretty a7661da41a Revert "Fixed M1 build issues"
This reverts commit ba1a0a2ac6.
3 years ago
Morgan Pretty f02f53fc49 Added code to show a HTTP LinkPreview error
Added code to indicate the app won't load LinkPreviews for HTTP urls.
Updated the title & subtitle layout to better handle LinkPreview errors.
Missed an Objective C change in the last commit.
3 years ago
Morgan Pretty ba1a0a2ac6 Fixed M1 build issues
Included the Podfile changes for building on an M1 Mac (Need to shift from personal to session fork).
Fixed some additional build issues due to unwrapping a non-optional type (Swift version?).
3 years ago
ryanzhao ecf92ceeea fix PN sound settings not applying to remote PNs 3 years ago
ryanzhao b7c6eafa87 fix notification preview type nested transaction crash 3 years ago
Niels Andriesse 4f9d77017a Fix message updating race condition 3 years ago
Niels Andriesse b8c4e6aa93 Avoid unnecessary conversation screen updates 3 years ago
Niels Andriesse 7f0b87a2b2 Avoid unnecessary conversation screen updates 3 years ago
Niels Andriesse ca862096b4 Rename profilePictureEncryptionKey → profileEncryptionKey 3 years ago
Niels Andriesse 519ffa4405 Fully switch to the new contact API
This should improve performance significantly as it avoids many unnecessary sync transactions. It also makes the code more readable.
3 years ago
nielsandriesse bf9d860214 Batch thread updates 3 years ago
nielsandriesse 06f795169b Merge branch 'dev' into cleanup 3 years ago
nielsandriesse a098ba7125 Remove unused code 3 years ago
nielsandriesse 49f3b9f7db Rename contactIdentifier → contactSessionID 3 years ago
nielsandriesse 21acdfc835 Clean up thread model 3 years ago
Niels Andriesse d742fc1548 Delete V1 OGS & file server 3 years ago
Niels Andriesse f552d51423 Remove unused code 3 years ago
Niels Andriesse 2f67073a5a Implement new snode pool updating method 3 years ago
Ryan ZHAO cf148fe845 handle access to selected photos & optimise the process of request photo library permission 3 years ago
Niels Andriesse aaa0d736ed Fix desktop attachment compatibility 3 years ago
Niels Andriesse dd0baf0d97 Unify contacts APIs 3 years ago
Niels Andriesse c12593775c Fix potential padding issue 3 years ago
Niels Andriesse 90e53e5cef Redesign conversation screen part 1 3 years ago
Niels Andriesse 4a922c9f96 Merge branch 'extensions' into closed-groups 4 years ago
Niels Andriesse bbac6cc5ed Attempt to fix extensions 4 years ago
Niels Andriesse c9c83da3dc Rename ClosedGroupUpdateV2 → ClosedGroupControlMessage 4 years ago
nielsandriesse 7d91062849 Fix voice messages not playing if device is muted 4 years ago
Niels Andriesse b2ef12a1df Reduce code duplication 4 years ago
Niels Andriesse 4c4ec0c039 Remove unused code 4 years ago
nielsandriesse d5e1237b0c Allow admins to leave & fix remaining issues 4 years ago
Niels Andriesse 71758b0c00 Remove the Signal protocol 4 years ago
Niels Andriesse 2a4977d269 Implement Session protocol 4 years ago
Niels Andriesse 0ce74e9a8e Fix desktop compatibility issue 4 years ago
nielsandriesse 3c3f1ed7b8 Disable problematic code 4 years ago
Niels Andriesse efe8f1c8bb Clean 4 years ago
Niels Andriesse 905b829de2 Refresh snode pool at least once a day 4 years ago
Niels Andriesse 91a75a65b1 Handle group messages in PNs 4 years ago
nielsandriesse d6c115bc2a Fix module linking issue 4 years ago
nielsandriesse 000249b744 Debug 4 years ago
nielsandriesse 4dda59b446 Debug attachment receiving 4 years ago
nielsandriesse 77c1f721b9 Further debug attachment sending 4 years ago
Niels Andriesse 4942da1d23 Send read receipts again 4 years ago
Niels Andriesse ac6baec6f2 Make things compile again 4 years ago
nielsandriesse 1037ce5113 WIP 4 years ago
nielsandriesse 5dfd4b1965 Restructure 4 years ago
nielsandriesse 178ab7e3e2 WIP 4 years ago
Niels Andriesse 64cf19f461 Improve job error handling 4 years ago
nielsandriesse b218a16b05 Implement attachment downloading 4 years ago
nielsandriesse 6dc3184b2a Merge branch 'dev' into refactor-3 4 years ago
nielsandriesse f706e38ef7 Debug 4 years ago
nielsandriesse e819d8f536 Update dependencies 4 years ago
nielsandriesse 1c0b32af3c Fix ECKeyPair usage 4 years ago
nielsandriesse 362e2e9c03 Update SessionMessagingKit for open groups 4 years ago
nielsandriesse a3382f41d4 Re-organize files 4 years ago
nielsandriesse 8f443a38af Re-implement message wrapping 4 years ago
nielsandriesse 21fe9558a4 Partially implement messaging kit encryption & decryption 4 years ago
nielsandriesse a782f36aa4 Clean 4 years ago
nielsandriesse 40098ac180 Partially implement receiving pipeline 4 years ago
nielsandriesse 2d618cc6e9 Re-add proof of work 4 years ago