Jordan Rose
4503a19190
Unify IdentityKeyPair_Deserialize implementations
...
...in the process revealing that the Java declaration had a missing
exception spec.
2025-10-09 11:31:20 -07:00
Jordan Rose
fb570d7c99
bridge: Add support for returning pairs from bridge_fns
2025-10-09 11:31:20 -07:00
gram-signal
533d11dd7c
Remove usePqRatchet from client-facing code, defaulting to always use.
2025-10-02 11:32:36 -07:00
andrew-signal
2bc167b5a2
Add BuildVariant parsing/overload support to libsignal's Remote Config
2025-09-30 22:35:21 -04:00
moiseev-signal
c81ec0df62
keytrans: Retry chat connection attempts in Java integration tests
2025-09-22 11:45:47 -07:00
andrew-signal
1adf63e4a8
Make CompletableFuture cancelation members volatile to conform with JMM
2025-09-22 11:39:31 -07:00
Jordan Rose
51b11ca1c6
java: Add missing @CalledFromNative to ECPublicKey(long)
2025-09-16 16:55:35 -07:00
Jordan Rose
15af92c93d
protocol: Record signed prekey and base key used with a Kyber prekey
2025-09-16 15:33:59 -07:00
Jordan Rose
94f91c5b19
protocol: Add support for sealed sender server certificate references
...
Rather than embedding a server certificate inside every sender
certificate, future sender certificates will be able to reference
their server certificate by ID as long as all receivers have a version
of libsignal containing that certificate.
This change also handles the sender ACI being represented as bytes
instead of a string.
2025-09-09 14:13:23 -07:00
andrew-signal
bc0227873e
Bridge look_up_username_hash to app languages
...
Co-authored-by: Jordan Rose <jrose@signal.org >
2025-09-02 15:59:27 -07:00
andrew-signal
01d3d4ed30
Future-proof sealed sender trust root handling.
...
Co-authored-by: Jordan Rose <jrose@signal.org >
2025-08-27 12:03:28 -04:00
Jordan Rose
8fdb2778bc
protocol: Split FingerprintError out from SignalProtocolError
...
The "fingerprint" / safety number operations *are* tied to the
"protocol" in that they provide a way to verify identity keys, but
they are also completely distinct from the message handling that the
rest of SignalProtocolError is used for.
2025-08-15 12:21:25 -07:00
Jordan Rose
54e81cda4f
java: System.runFinalization() in GC cleanup testing
...
This makes this particular test more reliable even though no
'finalize' methods are involved in this one.
2025-08-13 13:31:23 -07:00
Jordan Rose
b4cd040474
Add SvrB.remove(), use it for app-level integration tests
2025-08-13 12:35:52 -07:00
Jordan Rose
374301ab46
java: Include a timestamp in the testing StderrLogger
...
Before
> I libsignal: rust/bridge/shared/types/src/net.rs:132: Initializing connection manager for Staging...
After
> [11:03:32.956965 libsignal] I rust/bridge/shared/types/src/net.rs:132: Initializing connection manager for Staging...
2025-08-13 11:43:12 -07:00
Jordan Rose
7bae76f25e
java: Use the slightly-nicer StderrLogger in TestLogger
2025-08-13 11:43:12 -07:00
Jordan Rose
996f6bb250
jni: explicitly clean up local refs on background threads
...
- Use a local frame for bridge_io when completing futures
- Use a local frame for ChatListener callbacks
- Use AutoLocal for exception formatting callbacks
2025-08-12 10:49:30 -07:00
moiseev-signal
b53ed51263
keytrans: Stop falling back to search if _self_ monitor detects a new version
2025-08-11 15:34:01 -07:00
Jordan Rose
ea343a89ab
jni: Native.java -> Native.kt
...
Improvements included in this first iteration:
- Nullable/non-nullable!
- ObjectHandle typealias for Long
- Fixed handling for CompletableFuture<Void> (previously translated
without generics at all in some cases)
Co-authored-by: Alex Bakon <akonradi@signal.org >
2025-08-08 14:41:22 -07:00
Jordan Rose
36916db152
Gradle: Make Spotless a top-level task, be precise about inputs
...
Previously, we used a per-project directory glob for Kotlin and Java
sources, which (1) was overly general, (2) ran afoul of Gradle's rules
about "if you look in a directory you must depend on it", and (3)
required us to make a fake subproject in the shared/ folder because
Spotless doesn't like sources outside the project directory.
Now, we delay complete evaluation of the root project until
subprojects are complete, and then add a single Spotless operation at
the top level that uses the subprojects' compile tasks to find exactly
the files to format.
2025-08-08 13:08:31 -07:00
Jordan Rose
aee436a43c
java: Update Spotless to 7.2.1
2025-08-07 13:46:28 -07:00
Jordan Rose
be9e9a3ab6
Expose SvrB.createNewBackupChain(), make secret data non-optional
2025-07-31 12:37:02 -07:00
gram-signal
72935510d4
Immediately after a restore, use the same enc_salt/pw_salt for the next backup.
...
Co-authored-by: Jordan Rose <jrose@signal.org >
2025-07-30 20:14:26 -07:00
Alex Bakon
bb05cc016e
Streamline bridging of SVR-B function arguments
2025-07-29 14:18:16 -04:00
Jordan Rose
9e9c375db9
Expose BackupForwardSecrecyToken-aware MessageBackupKey derivation
2025-07-28 13:53:19 -07:00
Alex Bakon
303b6313bd
Expose SVR-B logic from Rust
2025-07-25 17:36:12 -04:00
Jordan Rose
d225a1008d
Add CompletableFuture.handle
...
Co-authored-by: Andrew <andrew@signal.org >
2025-07-25 14:09:07 -07:00
Jordan Rose
a881fcf0f3
java: Align CompletableFuture cancellation behavior with OpenJDK's
2025-07-25 13:24:29 -07:00
gram-signal
3ae977841f
Modify backup forward-secrecy-token storage to be more resilient to SVRB communication failures.
...
Co-authored-by: Alex Bakon <akonradi@signal.org >
2025-07-25 12:35:01 -07:00
andrew-signal
ec3c273219
Expose Rust API for SVR-B
2025-07-23 18:59:54 -04:00
Jordan Rose
821dee54e5
java: Add CompletableFuture.completedFuture()
...
Matches java.util.concurrent.CompletableFuture's method.
2025-07-17 18:27:39 -07:00
Jordan Rose
a410849578
crypto: Add a stripped-down HPKE API for our Curve25519 keys
2025-07-15 16:17:23 -07:00
andrew-signal
7167436147
Expand InvalidSessionException to take a cause
2025-07-02 04:55:16 -04:00
moiseev-signal
71c44d47e1
java: Fix incremental mac finalization. Again.
2025-06-30 18:54:21 -07: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
moiseev-signal
f395e1cb7d
java: Make CertificateValidator inheritable for tests
2025-06-25 15:19:36 -07:00
Jordan Rose
8070d6a4e6
Send Accept-Language when connecting a chat socket
2025-06-25 13:16:37 -07:00
Jordan Rose
9a468837b8
java: Clean up javadoc issues
2025-06-24 09:56:18 -07:00
Jordan Rose
cfa7bb8d45
java: Move CompletableFuture test to the right directory
2025-06-23 14:10:16 -07:00
Jordan Rose
333d2be846
java: Fix CalledFromNative target annotations
...
"TYPE" is for type *uses*, not type *definitions*.
2025-06-23 10:37:55 -07:00
Jordan Rose
4e304bf167
javadoc-isms -> KDoc
2025-06-20 10:15:51 -07:00
Alex Bakon
8f671bd2d0
Make BackupLevel.value public
2025-06-18 14:22:14 -04:00
Jordan Rose
2879220e93
Require Kyber keys/ciphertexts throughout all XDH APIs
2025-06-13 16:06:07 -07:00
Alex Bakon
2b01021d7e
Add offset/length constructor for Java ECPublicKey and KEMPublicKey
2025-06-13 16:26:26 -04: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
5001df1ee4
Kotlin: use explicitApi() mode
2025-06-13 10:27:37 -07:00
Alex Bakon
881b3a4c8e
Port some Java classes to Kotlin
2025-06-12 18:24:15 -04:00
Alex Bakon
a32aca9bce
Remove Java Curve class
2025-06-12 17:24:31 -04:00
moiseev-signal
44c470f388
java: Synchronize close for incremental mac streams
2025-06-12 14:14:45 -07:00