diff --git a/CHANGELOG.md b/CHANGELOG.md index 945766cead..28ddf80a73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,97 +7,47 @@ Platform support legends: * Note: the papercuts will majorly be with the build process. Things might be very rough to integrate as no polish at all has been given yet. * ❌ = tier 3 support. It doesn't work just yet, but we plan to make it work. -## [0.6.0] - 2023-02-13 +## [0.6.1] - 2023-02-16
git-conventional changelog ### Bug Fixes -- Xtask release outputs dry-run log unconditionally - -### Features - -- Adapt with acme client library tested on real acme-server forked. Also some nits & dependencies pinned +- Publishing for JVM generating empty artifacts ([#251](https://github.com/wireapp/core-crypto/issues/251)) +- Fall back on false when the callback doesn't retrurn a Promise +- Proteus auto prekey might overwrite Last Resort prekey ### Miscellaneous Tasks -- Release v0.6.0 +- Remove proteus double persistence as it's already automatically eager
-Platform support status: - -* x86_64-unknown-linux-gnu ✅ -* x86_64-apple-darwin ✅ -* armv7-linux-androideabi ✅ -* aarch64-linux-android ✅ -* i686-linux-android ✅ -* x86_64-linux-android ✅ -* aarch64-apple-ios ✅ -* aarch64-apple-ios-sim ✅ -* x86_64-apple-ios ✅ -* wasm32-unknown-unknown ✅ - -### 0.6.0 Release changes - -* **[BREAKING CHANGE]** E2EI solution API overhauled from pre-release versions - * This was made to fix some incompatibilities between the DPoP RFC and our code; The API had to be changed as a consequence - * Please refer to the following point to see the changes -* First stable version of Wire's end-to-end identity client library. It allows a MLS client to generate a x509 certificate proving possession of its userId, clientId and displayName for a given domain/backend. This certificate will later be used as a MLS credential in place of the only currently supported "basic" one which consists of a public key. - * To generate such a certificate, use the `new_acme_enrollment` method on a partially initialized CoreCrypto instance. This will generate a temporary key material for the enrollment session with the ACME server. Note that only Ed25519 signature scheme is supported at the moment. - * Only the "enrollment" flow is defined for the moment. Later on, "refresh" and "revocation" flows will be added. - * This library is heavily opinionated and only suited for **Wire** custom flow, with [our fork of the acme server](https://github.com/wireapp/smallstep-certificates). Any attempt to use it as a generic purpose acme client library will fail terribly. - * To make sure this works as expected, this library has been tested against the actual [acme-server](https://github.com/wireapp/smallstep-certificates) thanks to [testcontainers](https://www.testcontainers.org/). Only the OIDC provider has been mocked for the moment due to the fact that the target provider [Dex](https://github.com/dexidp/dex) does not yet support Ed25519 signatures. - -### 0.6.0 pre-release changes tl;dr, for information +### 0.6.1 Release changes -#### Changes - -* Added support for externally-generated MLS clients - * This allows you to generate a standalone Credential/KeyPair, submit it to your MLS Authentication Service, and then update this credential with a newly-attributed Client ID. -* Added APIs to support Proteus Last Resort Prekeys -* Added support for Proteus error codes - * WASM: - * all errors are now instances of `CoreCryptoError` which extends the standard JavaScript `Error` but with additional properties: - * `rustStackTrace` contains the original Rust error string. - * `proteusErrorCode` contains the error code for Proteus calls. If it's 0, no error, otherwise it contains the code - * WASM/TS now has access to the `CoreCrypto.proteusLastErrorCode()` method which allows to retrieve the last-occured proteus error and thus brings it to parity with other FFIs - * On other platforms, the FFI has gained a `proteus_last_error_code` method. -* Fixed a bug where the keystore would not execute its IndexedDB upgrade handler on WASM, leading to older stores and/or new tables not being structurally consistent -* Added missing Proteus APIs to bindings and FFI: - * `proteus_new_prekey_auto`: generates a new PreKeyBundle with an automatically incremented ID - * To do this, CoreCrypto finds the first "free" ID within the `0..u16::MAX - 1` range and creates a PreKey using this ID. -* Added Proteus compatibility layer support -* Added API to export secret key derived from the group and client ids from the members -* Change `DecryptedMessage` signature - * The `decrypt` API now returns if the decrypted message changed the epoch through the `hasEpochChanged` field -* Members can now rejoin group by external commits - * Validate received external commits - * Added `clear_pending_group_from_external_commit` - * External commit returns a bundle containing the PGS +* 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. +## [0.6.0] - 2023-02-13 -#### Breaking changes +
+ git-conventional changelog +### Bug Fixes -* **[BREAKING CHANGE]** Changed callbacks to be async - * This allows consumers to perform async I/O within the callbacks - * **Note** this doesn't affect the Kotlin/Swift bindings as UniFFI does not support async yet. -* **BREAKING** Renamed callback `client_id_belongs_to_one_of` to `client_is_existing_group_user` -* **BREAKING** WASM: Omitted in last build; `CoreCrypto.deferredInit` now takes an object with the parameters much like `init()` for consistency reasons. -* **BREAKING** No one was probably using it, but the C-FFI has been removed +- Xtask release outputs dry-run log unconditionally +### Features -There has been an extensive pre-release period (with many -pre and -rc releases), the original changelog for those has been collapsed below: +- Adapt with acme client library tested on real acme-server forked. Also some nits & dependencies pinned -
- 0.6.0 pre-releases changelog +### Miscellaneous Tasks -## [0.6.0-rc.8] - 2023-02-09 +- Release v0.6.0 -
- git-conventional changelog ### Features @@ -110,19 +60,6 @@ There has been an extensive pre-release period (with many -pre and -rc releases) - Release v0.6.0-rc.8 - Updated webdriver version to chrome 110 -
- -* Added support for externally-generated MLS clients - * This allows you to generate a standalone Credential/KeyPair, submit it to your MLS Authentication Service, and then update this credential with a newly-attributed Client ID. -* **[BREAKING CHANGE]** Changed callbacks to be async - * This allows consumers to perform async I/O within the callbacks - * **Note** this doesn't affect the Kotlin/Swift bindings as UniFFI does not support async yet. -* Added APIs to support Proteus Last Resort Prekeys - -## [0.6.0-rc.7] - 2023-02-06 - -
- git-conventional changelog ### Bug Fixes @@ -134,18 +71,6 @@ There has been an extensive pre-release period (with many -pre and -rc releases) - Release v0.6.0-rc.7 -
- -* Fixed WASM build when imported from the outside - * Made sure we're not leaking internal/private interfaces anymore and causing issues - * Also added a test to our JS E2E suite to make sure importing the package with TS is successful and we do not encounter regressions like these anymore -* **BREAKING** WASM: Omitted in last build; `CoreCrypto.deferredInit` now takes an object with the parameters much like `init()` for consistency reasons. - - -## [0.6.0-rc.6] - 2023-02-01 - -
- git-conventional changelog ### Bug Fixes @@ -162,25 +87,6 @@ There has been an extensive pre-release period (with many -pre and -rc releases) - Make npm build run wasm-opt in Os - Update JVM publish workflow to build on native platforms ([#229](https://github.com/wireapp/core-crypto/issues/229)) -
- -**IMPORTANT: The previous release (0.6.0-rc.5) is non-functional in general. The proteus error reporting does NOT work** - -There's a post mortem available here: - -* Fixed support for Proteus error codes - * WASM: - * all errors are now instances of `CoreCryptoError` which extends the standard JavaScript `Error` but with additional properties: - * `rustStackTrace` contains the original Rust error string. - * `proteusErrorCode` contains the error code for Proteus calls. If it's 0, no error, otherwise it contains the code - * WASM/TS now has access to the `CoreCrypto.proteusLastErrorCode()` method which allows to retrieve the last-occured proteus error and thus brings it to parity with other FFIs - * On other platforms, the API is unchanged, but now works. - - -## [0.6.0-rc.5] - 2023-01-25 - -
- git-conventional changelog ### Bug Fixes @@ -197,25 +103,6 @@ There's a post mortem available here: - -* **BREAKING**: Changed the signature of the `client_is_existing_group_user` callback to add the group id as the first argument - * Before: `client_is_existing_group_user(client_id: ClientId, existing_clients: Vec) -> bool` - * After: `client_is_existing_group_user(conversation_id: ConversationId, client_id: ClientId, existing_clients: Vec) -> bool` -* Added support for Proteus error codes - * On WASM, the JS Error contains a `proteusError` method that returns the error code as an integer. If there's no error it returns 0. - * On other platforms, the FFI has gained a `proteus_last_error_code` method. -* Fixed a bug where the keystore would not execute its IndexedDB upgrade handler on WASM, leading to older stores and/or new tables not being structurally consistent -* Updated RustCrypto dependencies -* Tooling: moved code coverage CI from Tarpaulin to LLVM-Cov - * This lowered the execution time of our codecov CI from ~25-30 minutes down to ~15-20 minutes - * This leads to more accurate code coverage as well - along with some false negatives such as `#[derive]` statements - - -## [0.6.0-rc.4] - 2023-01-20 - -
- git-conventional changelog ### Bug Fixes @@ -370,238 +257,220 @@ There's a post mortem available here: -### Bug Fixes - -- Wire-server sends a base64 encoded ed25519 key afterall. Consumers are in charge of base64 decoding it and pass it to core-crypto -- TS Ciphersuite enum not correctly exported - -### Documentation +Platform support status: -- Add installation instructions for e2e runner on macos +* x86_64-unknown-linux-gnu ✅ +* x86_64-apple-darwin ✅ +* armv7-linux-androideabi ✅ +* aarch64-linux-android ✅ +* i686-linux-android ✅ +* x86_64-linux-android ✅ +* aarch64-apple-ios ✅ +* aarch64-apple-ios-sim ✅ +* x86_64-apple-ios ✅ +* wasm32-unknown-unknown ✅ -### Miscellaneous Tasks +### 0.6.0 Release changes -- Release v0.5.2 +* **[BREAKING CHANGE]** E2EI solution API overhauled from pre-release versions + * This was made to fix some incompatibilities between the DPoP RFC and our code; The API had to be changed as a consequence + * Please refer to the following point to see the changes +* First stable version of Wire's end-to-end identity client library. It allows a MLS client to generate a x509 certificate proving possession of its userId, clientId and displayName for a given domain/backend. This certificate will later be used as a MLS credential in place of the only currently supported "basic" one which consists of a public key. + * To generate such a certificate, use the `new_acme_enrollment` method on a partially initialized CoreCrypto instance. This will generate a temporary key material for the enrollment session with the ACME server. Note that only Ed25519 signature scheme is supported at the moment. + * Only the "enrollment" flow is defined for the moment. Later on, "refresh" and "revocation" flows will be added. + * This library is heavily opinionated and only suited for **Wire** custom flow, with [our fork of the acme server](https://github.com/wireapp/smallstep-certificates). Any attempt to use it as a generic purpose acme client library will fail terribly. + * To make sure this works as expected, this library has been tested against the actual [acme-server](https://github.com/wireapp/smallstep-certificates) thanks to [testcontainers](https://www.testcontainers.org/). Only the OIDC provider has been mocked for the moment due to the fact that the target provider [Dex](https://github.com/dexidp/dex) does not yet support Ed25519 signatures. +### 0.6.0 pre-release changes tl;dr, for information -### Bug Fixes +#### Changes -- Incorrect null handing in Typescript wrapper for 'commitPendingProposals' -- External_senders public key was not TLS deserialized causing rejection of external remove proposals +* Added support for externally-generated MLS clients + * This allows you to generate a standalone Credential/KeyPair, submit it to your MLS Authentication Service, and then update this credential with a newly-attributed Client ID. +* Added APIs to support Proteus Last Resort Prekeys +* Added support for Proteus error codes + * WASM: + * all errors are now instances of `CoreCryptoError` which extends the standard JavaScript `Error` but with additional properties: + * `rustStackTrace` contains the original Rust error string. + * `proteusErrorCode` contains the error code for Proteus calls. If it's 0, no error, otherwise it contains the code + * WASM/TS now has access to the `CoreCrypto.proteusLastErrorCode()` method which allows to retrieve the last-occured proteus error and thus brings it to parity with other FFIs + * On other platforms, the FFI has gained a `proteus_last_error_code` method. +* Fixed a bug where the keystore would not execute its IndexedDB upgrade handler on WASM, leading to older stores and/or new tables not being structurally consistent +* Added missing Proteus APIs to bindings and FFI: + * `proteus_new_prekey_auto`: generates a new PreKeyBundle with an automatically incremented ID + * To do this, CoreCrypto finds the first "free" ID within the `0..u16::MAX - 1` range and creates a PreKey using this ID. +* Added Proteus compatibility layer support +* Added API to export secret key derived from the group and client ids from the members +* Change `DecryptedMessage` signature + * The `decrypt` API now returns if the decrypted message changed the epoch through the `hasEpochChanged` field +* Members can now rejoin group by external commits + * Validate received external commits + * Added `clear_pending_group_from_external_commit` + * External commit returns a bundle containing the PGS -### Documentation -- Better explanation of what DecryptedMessage#proposals contains +#### Breaking changes -### Miscellaneous Tasks -- Release v0.5.1 -- Added E2E interop testing tool +* **[BREAKING CHANGE]** Changed callbacks to be async + * This allows consumers to perform async I/O within the callbacks + * **Note** this doesn't affect the Kotlin/Swift bindings as UniFFI does not support async yet. +* **BREAKING** Renamed callback `client_id_belongs_to_one_of` to `client_is_existing_group_user` +* **BREAKING** WASM: Omitted in last build; `CoreCrypto.deferredInit` now takes an object with the parameters much like `init()` for consistency reasons. +* **BREAKING** No one was probably using it, but the C-FFI has been removed -### Bug Fixes +There has been an extensive pre-release period (with many -pre and -rc releases), the original changelog for those has been collapsed below: -- NPM publish workflow missing npm ci + wrong method names in TS bindings -- NPM publish workflow missing npm i -- Rollback openmls & chrono in order to release 0.5.0 -- Pin openmls without vulnerable chrono -- Wee_alloc memory leak + NPM publish issue -- Unreachable pub struct breaks docgen -- Fixed iOS SQLCipher salt handling within keychain -- [**breaking**] Changed misleading callback API and docs -- [**breaking**] Added missing TS API to set CoreCrypto callbacks -- Force software implementation for sha2 on target architectures not supporting hardware implementation (i686 & armv7 in our case) +
+ 0.6.0 pre-releases changelog -### Documentation +## [0.6.0-rc.8] - 2023-02-09 -- Add forgotten 0.4.0 changelog +
+ git-conventional changelog ### Features -- [**breaking**] 'commit_pending_proposals' now returns an optional CommitBundle when there is no pending proposals to commit +- Added support for Proteus Last Resort PreKeys (boooo!) +- [**breaking**] Async callbacks +- Externally-generated clients ### Miscellaneous Tasks -- Release v0.5.0 Redux -- Update UniFFI to 0.20 -- Release v0.5.0 -- Update node version from 12 to 16 LTS -- Update dependencies -- Remove es2020-specific operators and target es2020 only -- Updated changelog +- Release v0.6.0-rc.8 +- Updated webdriver version to chrome 110 +
-### Bug Fixes +* Added support for externally-generated MLS clients + * This allows you to generate a standalone Credential/KeyPair, submit it to your MLS Authentication Service, and then update this credential with a newly-attributed Client ID. +* **[BREAKING CHANGE]** Changed callbacks to be async + * This allows consumers to perform async I/O within the callbacks + * **Note** this doesn't affect the Kotlin/Swift bindings as UniFFI does not support async yet. +* Added APIs to support Proteus Last Resort Prekeys -- Uniffi breaking changes in patch release and ffi error due to unused `TlsMemberAddedMessages` +## [0.6.0-rc.7] - 2023-02-06 +
+ git-conventional changelog ### Bug Fixes -- Ensure durable methods are well tested and actually durable +- Fixed E2E interop test for breaking api changes +- New e2eidentityerror enum member wasn't exposed over ffi +- TS/WASM build issues & test -### Features +### Miscellaneous Tasks -- Commits and group creation return a TLS serialized CommitBundle. The latter also contains a PublicGroupStateBundle to prepare future evolutions -- [**breaking**] 'decrypt_message' returns the sender client id -- Use 128 bytes of padding when encrypting messages instead of 16 previously -- Add function to return current epoch of a group [CL-80] ([#96](https://github.com/wireapp/core-crypto/issues/96)) -- Adding a wrapper for the swift API and initial docs [CL-62] ([#89](https://github.com/wireapp/core-crypto/issues/89)) -- Add '#[durable]' macro to verify the method is tolerant to crashes and persists the MLS group in keystore -- Expose 'clear_pending_commit' method -- Allow rollbacking a proposal -- [**breaking**] Expose 'clear_pending_commit' method -- [**breaking**] Allow rollbacking a proposal +- Release v0.6.0-rc.7 + +
+ +* Fixed WASM build when imported from the outside + * Made sure we're not leaking internal/private interfaces anymore and causing issues + * Also added a test to our JS E2E suite to make sure importing the package with TS is successful and we do not encounter regressions like these anymore +* **BREAKING** WASM: Omitted in last build; `CoreCrypto.deferredInit` now takes an object with the parameters much like `init()` for consistency reasons. + + +## [0.6.0-rc.6] - 2023-02-01 + +
+ git-conventional changelog -### Miscellaneous Tasks +### Bug Fixes -- Migrate benchmarks to async and write some for core crypto operations -- Fixed WASM E2E tests +- Proteus error system not working (at all) +- Force cargo to use git cli to avoid intermittent CI failures -### Testing +### Miscellaneous Tasks -- Add reminder for x509 certificate tests +- Release v0.6.0-rc.6 +- Updated rstest_reuse to 0.5 +- Updated spinoff to 0.7 +- Added codecov settings +- Update node to LTS 18 & enable JS e2e testing +- Make npm build run wasm-opt in Os +- Update JVM publish workflow to build on native platforms ([#229](https://github.com/wireapp/core-crypto/issues/229)) +
-### Miscellaneous Tasks +**IMPORTANT: The previous release (0.6.0-rc.5) is non-functional in general. The proteus error reporting does NOT work** -- Release v0.3.1 +There's a post mortem available here: +* Fixed support for Proteus error codes + * WASM: + * all errors are now instances of `CoreCryptoError` which extends the standard JavaScript `Error` but with additional properties: + * `rustStackTrace` contains the original Rust error string. + * `proteusErrorCode` contains the error code for Proteus calls. If it's 0, no error, otherwise it contains the code + * WASM/TS now has access to the `CoreCrypto.proteusLastErrorCode()` method which allows to retrieve the last-occured proteus error and thus brings it to parity with other FFIs + * On other platforms, the API is unchanged, but now works. -### Bug Fixes -- Clippy fix impl eq -- Libgcc swizzling for android was removed -- Cleaned up FFI names for clearer intent -- Caught up WASM api with the internal API changes -- Doctests were failing because included markdown snippets were parsed and compiled -- Defer validation that a callback has to be set for validating external add proposal after incoming proposal identified as such -- Updated RustCrypto dependencies to match hpke-rs requirements -- Group was not persisted after decrypting an application message -- UniFFI wrong type defs -- Aes_gcm compilation issue -- WASM persistence & CoreCrypto Async edition -- 'client_keypackages' does not require mutable access on 'mls_client' -- Add_member/remove_member IoError -- Incorrect number of keypackages returned -- Added support for MLS Group persistence [CL-5] +## [0.6.0-rc.5] - 2023-01-25 -### Documentation +
+ git-conventional changelog -- Added bindings docs where appropriate + generated gh-pages -- Fix Client struct documentation -- Improving docs of Core-Crypto - [CL-50] ([#60](https://github.com/wireapp/core-crypto/issues/60)) +### Bug Fixes + +- [**breaking**] Added conversation id to clientIsExistingGroupUser callback +- Increment IndexedDB store version when crate version changes ### Features -- Review external add proposal validation and remove 'InvalidProposalType' error -- Remove required KeyPackage when creating an external add proposal -- Remove commits auto-merge behaviour -- Expose GroupInfo after commit operation -- Use draft-16 implementation of external sender. Expose a correct type through ffi for remove key -- Add API to wipe specific group from core crypto [CL-55] ([#81](https://github.com/wireapp/core-crypto/issues/81)) -- Adding validation to external proposal [CL-51] ([#71](https://github.com/wireapp/core-crypto/issues/71)) -- Decrypting a commit now also return a delay when there are pending proposals -- Decrypting a commit now also return a delay when there are pending proposals -- 'commit_delay' now uses openmls provided leaf index instead of computing it ourselves. It is also now infallible. -- Ensure consistent state -- [**breaking**] Add commit delay when a message with prending proposals is processed [CL-52] ([#67](https://github.com/wireapp/core-crypto/issues/67)) -- Added KeyPackage Pruning -- Added support for external entropy seed -- Join by external commit support - CL-47 ([#57](https://github.com/wireapp/core-crypto/issues/57)) -- Added Entity testing to keystore -- External remove proposal support -- Supports and validates x509 certificates as credential -- Expose function to self update the key package to FFI and Wasm #CL-17 ([#48](https://github.com/wireapp/core-crypto/issues/48)) -- Added support for wasm32-unknown-unknown target -- Support external add proposal -- Added method to leave a conversation -- Enforce (simple) invariants on MlsCentralConfiguration -- Expose add/update/remove proposal +- Added support for Proteus error codes ### Miscellaneous Tasks -- Bump WASM bundle version to 0.3.0 -- Added Changelog generator -- Fix nits on CHANGELOG-HUMAN.md -- Add changelog generator configuration + human changelog -- Disable crate publishing + UniFFI catchup -- Rename 'group_info' into 'public_group_state' to remain consistent with draft-12 -- Remove 'SelfKeypackageNotFound' error which is not used -- Fix some clippy lints -- Remove 'group()' test helper and inlined it -- Fix cli compilation and update it a bit -- Removed CryptoError variant `CentralConfigurationError` -- Avoid cloning credential -- Use shorthand for not using generics in conversation -- Factorize group accessors in conversation.rs -- Fix some clippy warnings -- Remove .idea in sample anroid app -- Remove unnecessary path prefixes imports -- Remove useless mutable borrow in Client methods -- Add Intellij files to gitignore -- Bump jvm and android version -- Add jvm linux support - -### Performance - -- Avoid cloning conversation extra members when creating the former +- Cut release 0.6.0-rc.5 +- Moved codecov from tarpaulin to llvm-cov +- Updated RustCrypto primitives & git dep in xtask -### Refactor +
-- Moved run_with_* test utils in a test_utils mod -- Use shorthand for generics in Central -- Factorize keystore update when group state change from a conversation pov +* **BREAKING**: Changed the signature of the `client_is_existing_group_user` callback to add the group id as the first argument + * Before: `client_is_existing_group_user(client_id: ClientId, existing_clients: Vec) -> bool` + * After: `client_is_existing_group_user(conversation_id: ConversationId, client_id: ClientId, existing_clients: Vec) -> bool` +* Added support for Proteus error codes + * On WASM, the JS Error contains a `proteusError` method that returns the error code as an integer. If there's no error it returns 0. + * On other platforms, the FFI has gained a `proteus_last_error_code` method. +* Fixed a bug where the keystore would not execute its IndexedDB upgrade handler on WASM, leading to older stores and/or new tables not being structurally consistent +* Updated RustCrypto dependencies +* Tooling: moved code coverage CI from Tarpaulin to LLVM-Cov + * This lowered the execution time of our codecov CI from ~25-30 minutes down to ~15-20 minutes + * This leads to more accurate code coverage as well - along with some false negatives such as `#[derive]` statements -### Testing -- Add tests for 'commit_pending_proposals' -- Verify that commit operation are returning a valid welcome if any -- Use Index trait to access conversation from Central instead of duplicate accessor -- Use central instead of conversation -- Fix minor clippy lints in tests -- Apply clippy suggestions on test sources -- Reorganize tests in conversation.rs -- Nest conversation tests in dedicated modules -- Verify adding a keypackage to a ConversationMember +## [0.6.0-rc.4] - 2023-01-20 +
+ git-conventional changelog ### Bug Fixes -- Set correct path to toolchain depending on platform & copy bindings -- Fix broken tests -- Tests fix -- Fixed iOS WAL behavior for SQLite-backed stores -- Fix Keystore trait having update method removed -- Clippy + fmt pass on core-crypto -- Fmt + clippy pass -- Migrations were incorrectly defined +- Aarch64-apple-ios-sim target not compiling ([#213](https://github.com/wireapp/core-crypto/issues/213)) +- Cryptobox import now throws errors on missing/incorrect store ### Features -- Add android project -- Add tasks for building and copying jvm resources -- Add jvm project -- WIP hand-written ts bindings -- Generate Swift & Kotlin bindings 🎉 -- Updated deps -- Added salt in keychain management instead of flat AES-encrypted file -- Added WIP DS mockup based on QUIC -- Added ability to create conversations (!!!) -- Added api support for in-memory keystore -- Added in-memory faculties for keystore -- Added benches for the MLS key management -- Added benches & fixed performance issues -- Added integration tests + fixes -- Implemented LRU cache for keystore -- Added support for Proteus PreKeys -- Progress + fix store compilation to WASM +- Expose end to end identity web API +- Add end to end identity bindings ### Miscellaneous Tasks -- Configure wire maven repository -- Clean up gradle files +- 0.6.0-rc.4 release +- Updated base64, lru and spinoff deps +- Added WebDriver-based WASM test runner +- Xtask improvements +- Fix 1.66 clippy warnings +- Update base64 to 0.20 +- Fixed wrong documentation link in TS bindings docs +- Update UniFFI to 0.22 +- Kotlin FFI docs + makefile fixes for other platforms
@@ -801,47 +670,6 @@ There's a post mortem available here: git-conventional changelog -### Bug Fixes - -- 'join_by_external_commit' returns a non TLS serialized conversation id - -### Features - -- [**breaking**] Expose a 'PublicGroupStateBundle' struct used in 'CommitBundle' variants -- [**breaking**] Remove all the final_* methods returning a TLS encoded CommitBundle -- Returning if decrypted message changed the epoch - CL-92 ([#152](https://github.com/wireapp/core-crypto/issues/152)) -- Exporting secret key derived from the group and client ids from the members - CL-97 - CL-98 ([#142](https://github.com/wireapp/core-crypto/issues/142)) -- Added API to generate Proteus prekeys -- Fixed Cryptobox import for WASM -- Added support for migrating Cryptobox data -- Added FFI for CoreCrypto-Proteus -- Added support for Proteus -- Validate received external commits making sure the sender's user already belongs to the MLS group and has the right role -- [**breaking**] Rename callback~~`client_id_belongs_to_one_of`~~ into `client_is_existing_group_user` -- [**breaking**] External commit returns a bundle containing the PGS -- [**breaking**] Add `clear_pending_group_from_external_commit` to cleanly abort an external commit. Also renamed `group_state` argument into `public_group_state` wherever found which can be considered a breaking change in some languages -- [**breaking**] Rename `MlsConversationInitMessage#group` into `MlsConversationInitMessage#conversation_id` because it was misleading about the actual returned value - -### Miscellaneous Tasks - -- Apply suggestions from code review -- Updated bundled FFI files -- Added Proteus testing infra -- Added missing docs -- Nits, fmt & cargo-deny tweak -- Add m1 support for the jvm bindings ([#139](https://github.com/wireapp/core-crypto/issues/139)) -- Remove unneeded `map_err(CryptoError::from)` -- Remove useless code - -### Testing - -- Fix external commit tests allowing member to rejoin a group by external commit -- Add a default impl for 'TestCase', very useful when one has to debug on IntelliJ -- Parameterize ciphers -- Ensure external senders can be inferred when joining by external commit or welcome -- Fix rcgen failing on WASM due to some unsupported elliptic curve methods invoked at compile time -- Ensure external commit are retriable -
* Add Apple M1 support for the JVM bindings @@ -1276,6 +1104,42 @@ Note: all the platforms marked with (⚠️) above will get a round of polish fo
git-conventional changelog +### Bug Fixes + +- Set correct path to toolchain depending on platform & copy bindings +- Fix broken tests +- Tests fix +- Fixed iOS WAL behavior for SQLite-backed stores +- Fix Keystore trait having update method removed +- Clippy + fmt pass on core-crypto +- Fmt + clippy pass +- Migrations were incorrectly defined + +### Features + +- Add android project +- Add tasks for building and copying jvm resources +- Add jvm project +- WIP hand-written ts bindings +- Generate Swift & Kotlin bindings 🎉 +- Updated deps +- Added salt in keychain management instead of flat AES-encrypted file +- Added WIP DS mockup based on QUIC +- Added ability to create conversations (!!!) +- Added api support for in-memory keystore +- Added in-memory faculties for keystore +- Added benches for the MLS key management +- Added benches & fixed performance issues +- Added integration tests + fixes +- Implemented LRU cache for keystore +- Added support for Proteus PreKeys +- Progress + fix store compilation to WASM + +### Miscellaneous Tasks + +- Configure wire maven repository +- Clean up gradle files +
Initial stable release with a reduced featureset diff --git a/CHANGELOG.tpl b/CHANGELOG.tpl index b5ed75d6b3..8cde1f37b7 100644 --- a/CHANGELOG.tpl +++ b/CHANGELOG.tpl @@ -7,11 +7,25 @@ Platform support legends: * Note: the papercuts will majorly be with the build process. Things might be very rough to integrate as no polish at all has been given yet. * ❌ = tier 3 support. It doesn't work just yet, but we plan to make it work. +## [0.6.1] - 2023-02-16 + +
+ git-conventional changelog +{{git-cliff tag="v0.6.1" unreleased=true }} +
+ +### 0.6.1 Release changes + +* 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. + ## [0.6.0] - 2023-02-13
git-conventional changelog -{{git-cliff tag="v0.6.0" unreleased=true }} +{{git-cliff tag="v0.6.0"}}
Platform support status: diff --git a/crypto-attributes/Cargo.toml b/crypto-attributes/Cargo.toml index de5b005533..677cebd433 100644 --- a/crypto-attributes/Cargo.toml +++ b/crypto-attributes/Cargo.toml @@ -2,7 +2,7 @@ name = "core-crypto-attributes" description = "Macros for core-crypto" repository = "https://github.com/wireapp/core-crypto" -version = "0.6.0" +version = "0.6.1" edition = "2021" license = "GPL-3.0-only" diff --git a/crypto-ffi/Cargo.toml b/crypto-ffi/Cargo.toml index dcd3257d78..96d61b7785 100644 --- a/crypto-ffi/Cargo.toml +++ b/crypto-ffi/Cargo.toml @@ -2,7 +2,7 @@ name = "core-crypto-ffi" description = "Platform-specific bindings (Android, iOS, WASM) for CoreCrypto" repository = "https://github.com/wireapp/core-crypto" -version = "0.6.0" +version = "0.6.1" edition = "2021" license = "GPL-3.0-only" publish = false @@ -17,7 +17,7 @@ proteus = ["core-crypto/proteus", "core-crypto/cryptobox-migrate"] mobile = ["uniffi", "uniffi_macros", "uniffi_build", "uniffi_bindgen"] [dependencies] -core-crypto = { version = "^0.6.0", path = "../crypto" } +core-crypto = { version = "^0.6.1", path = "../crypto" } thiserror = "1.0" cfg-if = "1.0" futures-util = "0.3" diff --git a/crypto-ffi/bindings/js/test/CoreCrypto.test.js b/crypto-ffi/bindings/js/test/CoreCrypto.test.js index 5e1e4f0b59..4fe9626791 100644 --- a/crypto-ffi/bindings/js/test/CoreCrypto.test.js +++ b/crypto-ffi/bindings/js/test/CoreCrypto.test.js @@ -68,7 +68,7 @@ test("init", async () => { return CoreCrypto.version(); }); - expect(version).toMatch("0.6.0"); + expect(version).toMatch("0.6.1"); await page.close(); await ctx.close(); diff --git a/crypto/Cargo.toml b/crypto/Cargo.toml index 4ed8f6db5c..4542749216 100644 --- a/crypto/Cargo.toml +++ b/crypto/Cargo.toml @@ -2,7 +2,7 @@ name = "core-crypto" description = "Abstraction over OpenMLS with persistent keystore" repository = "https://github.com/wireapp/core-crypto" -version = "0.6.0" +version = "0.6.1" edition = "2021" license = "GPL-3.0-only" publish = false @@ -60,11 +60,11 @@ rexie = { version = "0.4", optional = true } base64 = { version = "0.21", optional = true } [dependencies.core-crypto-keystore] -version = "^0.6.0" +version = "^0.6.1" path = "../keystore" [dependencies.mls-crypto-provider] -version = "^0.6.0" +version = "^0.6.1" path = "../mls-provider" [dev-dependencies] @@ -93,7 +93,7 @@ version = "0.3" features = ["async_futures", "html_reports"] [dev-dependencies.core-crypto-attributes] -version = "^0.6.0" +version = "^0.6.1" path = "../crypto-attributes" [package.metadata.wasm-pack.profile.release] diff --git a/interop/Cargo.toml b/interop/Cargo.toml index ce9f80419a..0339da0803 100644 --- a/interop/Cargo.toml +++ b/interop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "interop" -version = "0.6.0" +version = "0.6.1" edition = "2021" license = "GPL-3.0-only" diff --git a/keystore/Cargo.toml b/keystore/Cargo.toml index 2ab1e61c22..59a954fe3f 100644 --- a/keystore/Cargo.toml +++ b/keystore/Cargo.toml @@ -2,7 +2,7 @@ name = "core-crypto-keystore" description = "Encrypted keystore with support for OpenMLS and Proteus" repository = "https://github.com/wireapp/core-crypto" -version = "0.6.0" +version = "0.6.1" edition = "2021" license = "GPL-3.0-only" publish = false diff --git a/kotlin/android/build.gradle.kts b/kotlin/android/build.gradle.kts index 85865008ee..b071953fe8 100644 --- a/kotlin/android/build.gradle.kts +++ b/kotlin/android/build.gradle.kts @@ -56,7 +56,7 @@ afterEvaluate { create("maven") { groupId = "com.wire" artifactId = "core-crypto-android" - version = "0.6.0" + version = "0.6.1" from(components["release"]) pom { name.set("core-crypto-android") diff --git a/kotlin/jvm/build.gradle.kts b/kotlin/jvm/build.gradle.kts index 7b01e19cc4..28eeff0fc0 100644 --- a/kotlin/jvm/build.gradle.kts +++ b/kotlin/jvm/build.gradle.kts @@ -109,7 +109,7 @@ afterEvaluate { create("maven") { groupId = "com.wire" artifactId = "core-crypto-jvm" - version = "0.6.0" + version = "0.6.1" from(components["java"]) diff --git a/mls-provider/Cargo.toml b/mls-provider/Cargo.toml index c70978a4d7..73105c0e42 100644 --- a/mls-provider/Cargo.toml +++ b/mls-provider/Cargo.toml @@ -2,7 +2,7 @@ name = "mls-crypto-provider" description = "MLS Crypto Provider wrapping core-crypto-keystore" repository = "https://github.com/wireapp/core-crypto" -version = "0.6.0" +version = "0.6.1" edition = "2018" license = "GPL-3.0-only" publish = false @@ -38,7 +38,7 @@ zeroize = "1.5" thiserror = "1.0" [dependencies.core-crypto-keystore] -version = "^0.6.0" +version = "^0.6.1" path = "../keystore" [dev-dependencies] diff --git a/package.json b/package.json index 278e3ac503..ad42a83764 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@wireapp/core-crypto", - "version": "0.6.0", + "version": "0.6.1", "description": "CoreCrypto bindings for the Web", "type": "module", "module": "platforms/web/corecrypto.js",