Skip to content

Releases: signalapp/libsignal

v0.41.1

07 Mar 22:49
Compare
Choose a tag to compare
- protocol: Flip SSv2 encryption to the "new" key derivation (no client-visible impact)
- Update message backup proto definition
- Fix a configuration issue for libsignal-net

v0.41.0

02 Mar 01:02
Compare
Choose a tag to compare
- SVR3 bridge, all clients
- CDSI bridge for FFI
- libsignal-net bridge for Node
- Retire old SVR2 enclaves
- Message backup:
	- Expose message backup purpose as an argument
	- Disallow messages that are expiring soon
- Usernames: Fix missing Cargo feature for curve25519-dalek
- Implement 3HashSDHI-based "passes" in zkcredential
- Java bridging layer changes:
	- Mark all bridge_fns that return Result as `throws Exception`
	- Add the FilterExceptions helper
- Node bridging layer changes:
	- Use JsBigInt for u64 bridging instead of a Buffer
	- Update to Neon 1.0
- General bridging layer changes:
	- Filter out log messages that aren't from libsignal
	- Make ProtocolAddress's getters infallible
	- Improve error messages

v0.40.1

20 Feb 16:57
Compare
Choose a tag to compare
- Android: run tests that rely on test-only library code
- Java: internal changes to fix Java object construction on Android
- Fixed message backup validation bug, added tests

v0.40.0

12 Feb 21:29
Compare
Choose a tag to compare
- Multiple improvements to libsignal-net (no client impact).
- Introduce processMinidumpBuffer for Desktop.
- Updated error handling in the bridging layer.
- Java APIs breaking changes:
  - DecryptionErrorMessage deserialization can throw InvalidKeyException
  - HsmEnclaveClient can fail at any point during the protocol
  - Aes256GcmSiv.encrypt can't fail
- Message backup validator is now available on all client platforms.
- Fix Java error handling for CDSI lookup.

v0.39.3

24 Jan 19:30
Compare
Choose a tag to compare
- zkgroup: Add GroupSendCredentialResponse::receive_with_ciphertexts,
  which is exposed as an overload of receive() for Java and Swift, and
  as receiveWithCiphertexts() for TypeScript. This is more efficient
  if the client already has ciphertexts for the group members.

- Java: Expose ServerCertificate and SenderCertificate creation APIs,
  and add them to libsignal-server as well as libsignal-client.

- Update Cargo dependencies again.

v0.39.2

19 Jan 00:27
Compare
Choose a tag to compare
- Java: Mp4Sanitizer and WebpSanitizer now support InputStreams that
  don't provide a good skip() operation.

- Java and Swift: Remove the length parameter for WebpSanitizer.
  (The old overload has been deprecated.)

- Node: Expose SealedSenderMultiRecipientMessage parsing
  (for @signalapp/mock-server).

- Rust: Update pinned nightly toolchain, as well as dependencies.

v0.39.1

11 Jan 01:35
Compare
Choose a tag to compare
Node: Pins the version of prebuildify used for releases, otherwise the
same as v0.39.0.

v0.39.0

10 Jan 21:37
Compare
Choose a tag to compare
- Add Username.from_parts() method

- Refuse to generate username hashes for nicknames over 48 chars long

- Split up BadDiscriminator username error into more specific errors:

  - Rust: UsernameError now has more cases. ProofVerificationFailure is
    also split off into its own error type, separate from structural
    username errors.

  - Java: Subclasses of BadDiscriminatorException have been added.

  - Swift: Some error codes have been renamed and others have been added.

  - TypeScript: Some error codes have been renamed and others have been
    added. Discriminator errors are now proper LibSignalErrors.

- Java: Expose non-copying method on SealedSenderMultiRecipientMessage to
  get message size for a recipient

v0.38.0

05 Jan 19:20
Compare
Choose a tag to compare
- Update to pqcrypto-kyber 0.7.9

- Rust: Allow mixed comparisons (PartialEq) between ServiceId and
  Aci/Pni. This is convenient but is also a breaking change: call
  sites that compared `service_id == aci.into()` will now be
  ambiguous; the fix is to remove the `.into()`.

- Rust: Expose ServiceId::kind as pub

- Restore compatibility with Rust 1.72 (and possibly earlier if you
  only use certain crates), and clarifies that updating this minimum
  version counts as a "breaking change" (i.e. v0.39.0 rather than
  v0.38.x).

- Belatedly note that git is a compilation dependency (via boring-sys)

- Start of libsignal-message-backup crate, which validates the backup
  files generated by the apps. Not ready for general use.

- Continued work on SVR3

v0.37.0

14 Dec 00:31
Compare
Choose a tag to compare
- Use compact device list encoding when sending SSv2 messages. This is
  a client->server format change; the receiving side was added in
  v0.35.0.

- Add support for excluded recipients for SSv2 messages.

- Add GroupSendCredential.

- Speed up SSv2 message encryption by generating key material on
  multiple threads.

- Android+iOS: Fix SenderKeyDistributionMessage.getDistributionId(),
  which was producing garbage output. (Thanks for the report,
  @imb591!)

- Rust: Move ServiceId + ProtocolAddress to new libsignal-core crate
  (but re-exported through libsignal-protocol, so this is a
  non-breaking change). zkgroup no longer depends on
  libsignal-protocol.

- Fuzz test fixes related to pre_key_id and archived sessions count
  (thanks, @moodyjon!)