Skip to content

Releases: wireapp/core-crypto

v0.8.1

27 Apr 15:53
Compare
Choose a tag to compare

Changelog

https://github.com/wireapp/core-crypto/blob/develop/CHANGELOG.md#081---2023-04-27

What's Changed

  • build: fix Android packaging

Full Changelog: v0.7.0..v0.8.0

Release v0.8.0

19 Apr 14:38
Compare
Choose a tag to compare

Changelog

https://github.com/wireapp/core-crypto/blob/develop/CHANGELOG.md#080---2023-04-19

What's Changed

  • feat!(e2ei): add distinct expiry for client dpop token which has to be lower than the certificate one.

Full Changelog: v0.7.0..v0.8.0

Release v0.7.0

12 Apr 15:38
v0.7.0
Compare
Choose a tag to compare

Changelog

https://github.com/wireapp/core-crypto/blob/main/CHANGELOG.md#070---2023-04-12

What's Changed

  • chore: Bump webdriver version to 110 by @OtaK in #260
  • build(deps): update serde-big-array requirement from 0.4 to 0.5 by @dependabot in #259
  • feat!: Improve memory efficiency [CL-139] by @OtaK in #261
  • feat!: Change proteus auto prekey return type to include prekey id [CL-143] by @OtaK in #263
  • feat: Add ability to mark subconversations [CL-142] by @OtaK in #265
  • chore: Updated deps by @OtaK in #269
  • fix(security): Fix rustsec advisories on xtask deps by @OtaK in #271
  • fix: Exclude self from self-remove-commit delay [CL-144] by @OtaK in #270
  • feat(wasm): Added API to check the Arc strongref counter [CL-145] by @OtaK in #272
  • fix: enable ios-wal-compat for iOS builds by default [CL-146] by @augustocdias in #275
  • chore: Android upgrade to NDK 25 + openssl android build fix [CL-147] by @OtaK in #276
  • feat!: end-to-end identity API update by @beltram in #274
  • build(deps): update bitflags requirement from 1.3 to 2.0 by @dependabot in #277
  • fix!: Make FFI parameters compliant with rfc8555 by @OtaK in #278
  • chore: Release 0.7.0-rc.1 by @OtaK in #280
  • chore: Release v0.7.0-rc.2 by @OtaK in #281
  • fix: Proteus auto prekey ids not incrementing [CL-150] by @OtaK in #282
  • chore: Release v0.7.0-rc.3 by @OtaK in #283
  • feat!: init MLS group with x509 certificate from e2e identity [CL-152] by @beltram in #279
  • fix: use schnellru fork for GroupStore faillible inserts [CL-151] by @OtaK in #286
  • build: uniffi 0.23 by @beltram in #285
  • build(deps): update rstest requirement from 0.16 to 0.17 by @dependabot in #289
  • fix!: Tweak WASM API by @OtaK in #287
  • build(deps): update syn requirement from 1 to 2 by @dependabot in #288
  • feat: copy/modify kotlin wrapper from Kalium by @typfel in #284
  • feat: support EcDSA on WASM [CL-153] by @beltram in #293
  • chore: Release v0.7.0-rc.4 by @OtaK in #295
  • build(deps): update hex-literal requirement from 0.3 to 0.4 by @dependabot in #296
  • feat: decrypt messages returns identity by @beltram in #297
  • chore: some nits before 0.7.0-rc.5 by @beltram in #299
  • fix: Fixed iOS keychain handling with proper attributes [CL-157] by @OtaK in #298
  • chore: Update deps & cargo-deny configuration by @OtaK in #300
  • chore: Release v0.7.0 by @OtaK in #301

Full Changelog: v0.6.3...v0.7.0

Release v0.7.0-rc.4

28 Mar 13:57
v0.7.0-rc.4
Compare
Choose a tag to compare
Release v0.7.0-rc.4 Pre-release
Pre-release
  • Updated UniFFI to 0.23
    • Might or might not contain breaking changes depending on your use case, please refer to UniFFI's documentation
  • Fixed a small bug in the new GroupStore internals that was a bit too eager in limiting memory usage
  • [BREAKING]: Renamed the WASM strongRefCount(): number API to isLocked(): boolean.
    • This essentially hides the implementation details across the FFI and should minimize brittleness
  • Removed our dependency on ring, an external crypto library. It was mostly used for validating x509 certificates and crafting Certificate Signing Request
    • By removing ring, we now support the following MLS Ciphersuites using NIST elliptic curves / ECDSA on WASM:
      • MLS_128_DHKEMP256_AES128GCM_SHA256_P256 (0x0002)
      • MLS_256_DHKEMP384_AES256GCM_SHA384_P384 (0x0007)
  • [BREAKING]: Overhauled parts of the E2EI implementation
    * Moved from a stateless API to a stateful one. As a consequence, methods have less parameters, less structs need to be exposed. All of this is wrapped under Rust's safe sync primitives in order to be able to perform the ACME enrollment in parallel.
    * The new API allows creating a MLS group from the enrollment process.
    * certificateResponse() has been removed
    * e2eiMlsInit() has been introduced and permits ending the enrollment flow and use the x509 certificate to initialize a MLS client.
    * ClientId is now a string as per RFC8555. It does not anymore require to be prefixed (by impp:wireapp=) and is exactly the same as the one used for MLS
    * X509 SAN URIs are now prefixed by im:wireapp= instead of impp:wireapp=
    * This release has been tested against a real OIDC provider (Dex), federating identity from a LDAP server. The OAuth2 flow used for testing is Authorization Code with PKCE
    * Private key materials are now properly zeroized

Release v0.7.0-rc.3

28 Mar 13:56
Compare
Choose a tag to compare
Release v0.7.0-rc.3 Pre-release
Pre-release
  • Fixed a bug where proteus_new_prekey_auto returning the same prekey ID in particular cases
    • In case of "gaps" in the prekey id sequence, the previous algorithm (using the number of prekeys stored) would return the same ID over and over. As a consequence, the same prekey id would be overwritten over and over.

Release v0.7.0-rc.2

15 Mar 15:05
Compare
Choose a tag to compare
Release v0.7.0-rc.2 Pre-release
Pre-release

[0.7.0-rc.2] - 2023-03-15

git-conventional changelog
  • Fix on documentation that prevented release on many platforms

Release v0.7.0-rc.1

15 Mar 15:04
Compare
Choose a tag to compare
Release v0.7.0-rc.1 Pre-release
Pre-release

[0.7.0-rc.1] - 2023-03-15

git-conventional changelog

Bug Fixes

  • [breaking] Make FFI parameters compliant with rfc8555
  • Added missing version() function to Swift bindings
  • Enable ios-wal-compat for iOS builds by default
  • Exclude self from self-remove-commit delay
  • Fix rustsec advisories on xtask deps

Features

  • [breaking] Latest e2e identity iteration. ClientId (from MLS) is used instead of requiring just parts of it
  • Added API to check the Arc strongref counter
  • [breaking] Add ability to mark subconversations
  • [breaking] Change proteus auto prekey return type to include prekey id
  • [breaking] Added LRU cache-based underlying group store to replace the HashMaps

Miscellaneous Tasks

  • Release 0.7.0-rc.1
  • Use crates.io sparse protocol on CI via env
  • Android upgrade to NDK 25 + openssl android build fix
  • Updated serde-wasm-bindgen to 0.5.0
  • Updated crypto deps (p256/384 & ecdsa)
  • Updated changelog for LRU store changes
  • [breaking] Drop LRU from keystore
  • Bump webdriver version to 110
  • [BREAKING] proteus_new_prekey_auto() now returns a tuple of (prekey_id, CBOR-serialized PreKeyBundle) for backend requirements
    • On bindings, this translates to a new struct ProteusAutoPrekeyBundle which contains two fields:
      • id: the proteus prekey id (u16)
      • pkb: the CBOR-serialized proteus PreKeyBundle
  • [BREAKING] Added an API to mark subconversations as child of another one (mark_conversation_as_child_of)
    • This is breaking because this now allows us to provide the parent conversation's client list in the client_is_existing_group_user callback, which adds a new parameter to it
  • [BREAKING] wipe_conversation is now automatically called when a commit removing the local client is recieved.
  • [BREAKING] Huge internal change on how we cache MLS groups and Proteus sessions in memory
    • This affects some APIs that became async on the TS bindings
    • Our previous HashMap-based cache could grow indefinitely in the case of massive accounts with many, many groups/conversations, each containing a ton of clients. This replaces this memory store by a LRU cache having the following properties:
      • Limited by number of entries AND occupied memory
        • Defaults for memory: All the available system memory on other platforms / 100MB on WASM
        • Defaults for number of entries:
          • 100 MLS groups
          • 200 Proteus sessions
      • Flow for retrieving a value
        1. Check the LRU store if the value exists, if yes, it's promoted as MRU (Most Recently Used) and returned
        2. If not found, it might have been evicted, so we search the keystore
        3. If found in the keystore, the value is placed as MRU and returned
          • Special case: we evict the store as much as needed to fit the new MRU value in this case. This is designed to infaillible.
        4. If not found, we return a None value
    • This approach potentially allows to have an unlimited number of groups/sessions as long as a single item does not exceed the maximum memory limit.
    • As a consequence of the internal mutability requirements of the new map and the automatic keystore fetches, many if not all APIs are now async. This does not concern the Mobile FFI.
  • [BREAKING] Because of Rust 1.68's release, CoreCrypto is now incompatible with Android NDK versions under 25.2 (the LTS version) and Android API level 24.
  • [BREAKING] E2EI: The API is now compliant with RFC8555
    • Another change will come soon to be able to initialize a MLS client using the X509 certificate issued by the E2EI process
  • Enabled the iOS WAL compatibility layer to prevent spurious background kills
  • Added a WASM api to check the Arc strongref counter

Release v0.6.3

01 Mar 10:29
0746783
Compare
Choose a tag to compare
  • Improve compatbillity with older linux versions when running core-crypto-jvm by building on Ubuntu LTS (22.04).

Release v0.6.2

01 Mar 10:29
Compare
Choose a tag to compare
  • Fixed a bug in the TypeScript bindings where the DecryptedMessage bundle could have commitDelay set to undefined when it should be 0
    • This could happen in the case of external proposals where the system would determine that the proposals should be immediately committed

Release v0.6.1

16 Feb 11:18
0999a18
Compare
Choose a tag to compare
git-conventional changelog

Bug Fixes

  • Publishing for JVM generating empty artifacts (#251)
  • Fall back on false when the callback doesn't retrurn a Promise
  • Proteus auto prekey might overwrite Last Resort prekey

Miscellaneous Tasks

  • Remove proteus double persistence as it's already automatically eager
  • Fixed a bug where the last resort prekey could be overwritten.
  • Fixed JVM publishing creating broken packages.
  • Change WASM callback to return false by default if no promise is returned.
  • Remove redundant save when persisting proteus sessions.