Repository navigation
Use Node OpenSSL for iOS backend curve operations - #3541
Closed
holmesworcester wants to merge 1 commit into
Closed
holmesworcester wants to merge 1 commit into
holmesworcester wants to merge 1 commit into
Conversation
This was referenced Sep 15, 2026
Collaborator
Author
|
We'll use libsodium natively in a later fix. |
10 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
iOS Node Mobile runs libsodium's JavaScript curve operations without JIT or WASM. This adapter uses the OpenSSL already shipped in Node for six Ed25519/X25519 operations, preserving sodium wire formats, output behavior, and rejection policy.
This is the native-crypto portion split out of #3539. It is kept as a draft alternative while a native libsodium implementation is being developed. It targets
10.0.0directly, retains that branch's existing auth submodule revision, and has no dependency on the indexing or LFA caching changes.The change contains only the iOS-gated adapter, webpack loader, documentation, and crypto tests. Capability/version checks retain the original implementation on unsupported runtimes; exceptional Ed25519 encodings still undergo sodium verification. Other platforms keep their existing implementation. No QSS release or data migration is required.
Validation: all 13 native differential/webpack tests pass on Node 18.20.4 and 20.20.1. Coverage includes 151 Ed25519 and 518 X25519 Wycheproof cases, tampering, malformed keys, atomic initialization/fallback, and real webpack activation across five platform identities. The adapter and tests are byte-for-byte the previously audited final implementation. Daybreak Blue accepted the native-only split with no concrete findings; its independent 16-test adversarial suite also passed. The earlier combined iPhone performance results do not measure this branch alone.
Related to #3538. The processing changes remain in #3539 and TryQuiet/auth#39.