Commit Graph

591 Commits

Author SHA1 Message Date
Jordan Rose
a410849578 crypto: Add a stripped-down HPKE API for our Curve25519 keys 2025-07-15 16:17:23 -07:00
andrew-signal
a323900858 Refactor so tests generate legacy key format encrypted file; client tests can use that. 2025-07-15 13:16:06 -04:00
Andrew
c91d44a873 Reset for version v0.76.5 2025-07-14 12:42:28 -04:00
Jordan Rose
0d48e043d1 chat: Use LanguageList all the way up to the bridge layer
And save a few bytes with no spaces after commas.
2025-07-09 11:15:01 -07:00
andrew-signal
36797e6eca Update MessageBackupKey derivation logic to use nonce if provided 2025-07-09 13:57:09 -04:00
moiseev-signal
4d187d2452 ci: Run proxy tests in Slow Tests workflow 2025-07-02 13:25:57 -07:00
Andrew
3ae165add7 Reset for version v0.76.4 2025-07-01 13:57:06 -04:00
Andrew
a400a0078c Reset for version v0.76.3 2025-07-01 04:38:10 -04:00
Jordan Rose
2f6e1cca98 jni: Explicitly keep bridge_handle objects alive while using them
As a bonus, we get a partial check for misuse of mutating APIs.
2025-06-30 15:54:24 -07:00
Alex Bakon
a7f823771f Combine CreateSession push_token, push_token_type
These fields should always be present or absent together.
2025-06-26 17:19:05 -07:00
Max Moiseev
f60748b4aa Reset for version v0.76.2 2025-06-26 12:20:27 -07:00
Jordan Rose
eade867168 Move net::keytrans to libsignal-net-chat 2025-06-25 17:22:30 -07:00
Jordan Rose
8070d6a4e6 Send Accept-Language when connecting a chat socket 2025-06-25 13:16:37 -07:00
Max Moiseev
4f0d39c334 Reset for version v0.76.1 2025-06-24 13:52:50 -07:00
Jordan Rose
841f57c30f Move (RegistrationSessionState)RequestedInformation -> ChallengeOption 2025-06-23 10:37:55 -07:00
Alex Bakon
56c63a4838 Refactor registration errors on existing types 2025-06-20 17:14:52 -04:00
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