All notable changes to this project will be documented in this file.
- Fix the compilation when the default features are disabled
-
Apply the const keyword to many methods (#167).
-
[BREAKING] The
Account::sign()
method now accepts animpl AsRef<[u8]>
for the message instead of a&str
. This has been streamlined to be like most of our other methods accepting a message to be encrypted. This change is mostly backwards compatible as the method will continue to accept a string.
The OlmMessage::from_parts()
and OlmMessage::to_parts()
methods now
accept and return an &[u8]
and Vec<u8>
exclusively for the
ciphertext. The base64_encode()
and base64_decode()
methods can be
used to achieve the previous behavior (#176).
- Add support for the libolm PkEncryption feature. This allows Matrix clients to implement the m.megolm_backup.v1.curve25519-aes-sha2 room key backup algorithm. Please note that this algorithm contains a critical flaw and should only be used for compatibility reasons (#171) (#180).
-
Remove the pkcs7 crate from the list of dependencies (#164).
-
Remove Debug implementations for the libolm compat structs (#184).
- Add an Elliptic Curve Integrated Encryption Scheme. This scheme can be used to establish a secure ephemeral encrypted channel, in situations for which Olm may be unsuitable due to complexity or the unavailability of long-term identity keys. There is also support for out-of-band authentication of the receiver side. The scheme was designed primarily for purposes of implementing Matrix QR code login. (#151).
- Use a constant-time Base64 encoder for secret key material to mitigate side-channel attacks leaking secret key material (#156) (Low, CVE-2024-40640, GHSA-j8cm-g7r6-hfpq).
- Re-enable zeroization in the Dalek crates (#130) (Low, CVE-2024-34063, GHSA-c3hm-hxwf-g5c6)
- Track the number of Diffie-Hellman ratchet advances in the Olm Session.
This number is useful only for debugging purposes and will be included in the
Debug output of the Olm
Session
(#134).
- Add mutation tests (#136) (#138) (#140) (#139) (#144) (#143), special thanks to Johannes Marbach for that.
- Enable mutation tests on CI (#147).
- Include the ratchet key in the Debug output of the Session
- Add support for exporting an Account to a libolm pickle (#111)
- Add base64 decoding and encoding methods to the public interface (#112)
- Use the next key id from the libolm pickle instead of guessing
- Add a prettier display/debug implementation for Ed25519Signature
- Introduce an upgrade method to the InboundGroupSession struct
- Expose the version of vodozemac
- Make Debug representation of the public key types prettier
- Add a method to calculate the Session ID from a pre-key message
- [breaking] Return the created and discarded one-time keys when generating new ones (#100)
- [breaking] Return the fallback key which was removed when generating a new one
- Expose the build-time git commit hash and description as static vars
- Expose the Curve25519SecretKey type
- Rename the key_id field to next_key_id for clarity
- Use the matrix-pickle crate for libolm unpickling support
- Ensure signing_key_verified is handled when upgrading.
- Accept a byteslice for the pickle key
- Hide the remove_one_time_key method
- Abort unpickling if we have too many one-time keys
- Use overflowing addition when incrementing key ids
- Fix some typos and improve the InboundGroupSession docs
- Clarify wording in OTK comment
- Add Debug and PartialEq implementations to MegolmMessage
- Add a bunch of missing Eq imlpementations
- Add TryFrom implementations for session keys
- Allow GroupSessions to be unpickled from libolm pickles
- Encode/decode bytes directly in Olm (no string wrapping)
- Encode/decode bytes directly in megolm (no string wrapping)
- Allow megolm messages to be cloned
- Add a method to check if two inbound group sessions are connected
- Add a method to compare two inbound group sessions
- Add support to not truncate MAC tags when encrypting messages
- Implement Display for the public key types
- Implement zeroize for the SessionKey
- Remove the encoded public key from the curve25519 types
- Remove the encoded public key methods
- Remove the encoded one-time keys method
- Create a LibolmEd25519Keypair struct
- Move the libolm RatchetPickle to a common module
- Move the libolm unpickling structs out of the method
- Improve the Debug implementation for SessionKeys
- Refrain from repeating method call.
- Group the session key methods correctly