Commit Graph

575 Commits

Author SHA1 Message Date
Andrew
c276f445f7 Reset for version v0.75.2 2025-06-18 12:27:34 -04:00
Alex Bakon
f59204538e Reset for version v0.75.1 2025-06-16 14:04:01 -04:00
Jordan Rose
2879220e93 Require Kyber keys/ciphertexts throughout all XDH APIs 2025-06-13 16:06:07 -07:00
Alex Bakon
02b786b07e Limit device ID to the range 1-127
This is already required for sealed sender messages and enforced by the server.
2025-06-13 14:18:16 -04:00
Jordan Rose
97a2ded3f6 node: Replace Buffer with Uint8Array nearly everywhere
Exceptions:
- Buffers decoding from strings (usually for tests)
- Buffer.concat, if immediately fed into libsignal, which we know
  won't rely on the diverging behavior of slice()
- Encoding GroupIdentifier to base64

Everywhere else, Uint8Array was nearly a drop-in replacement. Places
where it wasn't:
- For tests, use assertArrayEquals more, which converts to hex first
  (better diffs anyway)
- Use TextEncoder and TextDecoder for going back and forth between
  strings and UTF-8 buffers *not* in the tests
2025-06-12 16:49:20 -07:00
Jordan Rose
1b469bb6c7 Make acknowledgments platform-specific 2025-06-12 16:01:33 -07:00
Alex Bakon
37a834dbd4 Move some tests out of monolithic PublicAPITest.ts 2025-06-12 18:23:55 -04:00
Alex Bakon
a32aca9bce Remove Java Curve class 2025-06-12 17:24:31 -04:00
Andrew
82861a11e7 Reset for version v0.74.2 2025-06-10 16:59:56 -04:00
andrew-signal
0e6783a047 node: Update dependencies 2025-06-05 20:00:45 -04:00
Max Moiseev
0410cb017a Reset for version v0.74.1 2025-06-04 14:39:48 -07:00
gram-signal
b7b8040e3a Integrate post-quantum ratchet SPQR.
This PR integrates a post-quantum ratchet (SPQR) into libsignal, using an API that maintains its own internal chain and provides per-message keys.  In doing so, it also aims to be fully backwards-compatible with current clients and stored session state.

## Backwards compatibility with current clients

Remote clients that connect to us or that we connect to may not have this integration.  If they don't, their SignalMessage wire format should still deserialize, and in doing so we'll receive an empty pq_ratchet field.  SQPR handles this internally, by downgrading the protocol version to "version 0" or "don't do anything".  Note that should we eventually want to disallow this, we can do so via increasing the `min_version` field passed into the SQPR init functions to V1.  This is also the method by which we would upgrade SQPR from v1 to a future v2, etc.

## Opt-in

The publicly facing API calls for this now expose an explicit opt-in via a passed-in `use_pq_ratchet` bool (and associated enums in language-specific APIs).  If false, they default to SQPR `v0`, IE: none.  If true, they try to set up SPQR on new sessions, but will downgrade if the remote party cannot or will not do the same.
2025-06-04 11:18:12 -07:00
Max Moiseev
40e9e89f1e Reset for version v0.73.4 2025-06-03 16:19:26 -07:00
Alex Bakon
8782d0a406 Add bridging tests for optional UUID return 2025-06-03 13:50:26 -04:00
moiseev-signal
bf096c449d keytrans: Improve errors 2025-05-30 16:00:06 -07:00
Jordan Rose
5444a2f949 Reset for version v0.73.3 2025-05-29 15:45:43 -07:00
Andrew
732d9397e9 Reset for version v0.73.2 2025-05-20 18:30:15 -04:00
Andrew
99c0c9d5c3 Reset for version v0.73.1 2025-05-20 16:32:17 -04:00
Alex Bakon
bf1e08b427 Check for cancellation of Rust task in test 2025-05-20 14:15:23 -04:00
Jordan Rose
0e1ec3909b bridge: Require that PreKeyBundles have Kyber pre-keys
Support for starting sessions with pre-quantum X3DH has been removed
from Swift, Java, and TypeScript. PQXDH will be required going
forward.
2025-05-19 12:25:53 -07:00
moiseev-signal
a823fd4a14 keytrans: Remove SearchResult type 2025-05-16 11:33:31 -07:00
andrew-signal
eaa32e1b4c Bridge CompletableFuture Cancellation to Android 2025-05-16 11:23:37 -04:00
Alex Bakon
5f56145e74 Bridge re-register account function 2025-05-15 16:00:29 -04:00
Alex Bakon
97288ce220 Remove registration connect timeout 2025-05-15 15:33:47 -04:00
Jordan Rose
925fb84552 Reset for version v0.72.2 2025-05-14 17:47:03 -07:00
Alex Bakon
840f14d2b3 Bridge register account method to Swift 2025-05-14 12:29:24 -04:00
Alex Bakon
d51f764387 Reset for version v0.72.1 2025-05-14 11:04:33 -04:00
moiseev-signal
2de3c7886b node: Move newNativeHandle out of net 2025-05-06 14:17:14 -07:00
Alex Bakon
64c186d4de Remove file prefixes from build artifacts
Co-authored-by: Jordan Rose <jrose@signal.org>
2025-05-06 15:49:16 -04:00
Jordan Rose
1458b6ffa2 swift: Remove sealedSenderEncrypt/Decrypt convenience functions
...in favor of the more general functions using
UnidentifiedSenderMessageContent, which the iOS app is already using.
(sealedSenderDecrypt in particular was never updated to support
PQXDH.)
2025-05-06 07:56:23 -07:00
Max Moiseev
ec7c5af356 Reset for version v0.71.1 2025-05-01 14:17:36 -07:00
Alex Bakon
b95359ced8 Allow using registration client to check SVR2 credentials 2025-05-01 08:51:00 -04:00
Jordan Rose
d58f237b4a net: Require TLS 1.3 for Signal-provided services and 1.2 for Cloudflare DoH
Co-authored-by: andrew-signal <andrew@signal.org>
2025-04-30 07:08:17 -05:00
moiseev-signal
aa71b2f2d8 keytrans: Bridge to Node 2025-04-28 14:58:56 -07:00
Alex Bakon
8ac19ddd90 Take account password for registration as a string 2025-04-25 15:14:20 -04:00
Alex Bakon
8f1baf561c Use an enum value for IdentityKeyStore.saveIdentity in libraries 2025-04-25 12:52:58 -04:00
Alex Bakon
e0e79e567c Bridge register account error to Java 2025-04-25 10:33:12 -04:00
Max Moiseev
31f51e5dd0 Reset for version v0.70.2 2025-04-24 14:40:14 -07:00
Alex Bakon
b749afc059 Bridge RegisterAccountResponse to Java 2025-04-22 14:30:14 -04:00
Alex Bakon
a8d4849c9e Add Java type for public parts of a signed prekey 2025-04-21 16:29:56 -04:00
andrew-signal
3a417527e8 Node: Add an eslinter check for Chai tests that are non-functional 2025-04-21 15:43:23 -04:00
Max Moiseev
4d8d96480a Reset for version v0.70.1 2025-04-11 15:46:39 -07:00
Alex Bakon
289d21c829 Bridge other registration response fields to Node 2025-04-11 17:26:32 -04:00
Alex Bakon
a88a1b873e Accept languages list for SMS/call verification 2025-04-11 16:57:04 -04:00
Alex Bakon
6e0e617aa1 Bridge register account function to Node 2025-04-11 14:25:36 -04:00
Alex Bakon
0d916d3aa0 Bridge registration client to Java 2025-04-09 18:57:07 -04:00
Alex Bakon
5d7ce2d165 Remove app language code marked as deprecated 2025-04-09 15:41:35 -04:00
Alex Bakon
cca4cf6970 Add "register" and "reregister" top-level functions in Rust 2025-04-09 15:08:23 -04:00
Jordan Rose
c062a7e03a Reset for version v0.69.2 2025-04-08 14:33:09 -07:00
Alex Bakon
0fde9a0160 Add a Node registration client fake server test 2025-04-08 13:11:51 -04:00