This project follows semantic versioning.
Possible log types:
[added]
for new features.[changed]
for changes in existing functionality.[deprecated]
for once-stable features removed in upcoming releases.[removed]
for deprecated features removed in this release.[fixed]
for any bug fixes.[security]
to invite users to upgrade in case of vulnerabilities.
- [added] Add support for generic public key caching:
lookup_pubkey_with_cache
API method and PublicKeyCache` trait (#77)
- [changed] Upgrade
reqwest
dependency from 0.11 to 0.12, and thus indirectly hyper from 0.x to 1.x
This release replaces the use of the (now deprecated) sodiumoxide library with pure-Rust implementations by RustCrypto. This might entail some breaking changes with regards to key and nonce types.
- [changed] Replace
sodiumoxide
withcrypto_box
andcrypto_secretbox
(#72) - [changed] Replace re-exports of
PublicKey
,SecretKey
andKey
, re-exportcrypto_secretbox::Nonce
- [changed] Use dedicated
Nonce
type instead of&[u8; 24]
- [changed] Return result in
encrypt_*
functions - [changed] Use
hmac
andsha2
crates for calculating MAC - [changed] The
RecipientKey
type now implementsDebug
and a few other traits - [changed] The
lookup_pubkey
function now returns aRecipientKey
wrapper aroundPublicKey
- [changed] The
decrypt_incoming_message
function now accepts aRecipientKey
, not aPublicKey
- [changed] Request errors no longer include the URL, as it may contain sensitive information (#74)
- [added] Expose encryption functions:
encrypt
andencrypt_raw
(#59) - [added] Support downloading of blobs (#65)
- [added] New
decrypt_file_data
helper function (#67) - [changed] Remove
mime
dependency in favor of plain strings (#64) - [changed] The API of
encrypt_file_data
has changed (#67) - [changed] Add
MessageType::Other(u8)
variant (#58)
- [added] send_e2e_file example: Allow setting rendering type and caption (#52)
- [changed] Set timeout of 10s on default HTTP client (#56)
- [changed] Add some more logging
This release adds initial support for incoming messages. See #49 for details.
- [added] New
IncomingMessage
type for parsing and decrypting incoming messages - [added] New methods
decode_incoming_message
anddecrypt_incoming_message
onE2eApi
- [added] Validate MAC for incoming messages
- [added] Derive
PartialEq
andClone
for most error types - [added] New
to_hex_string
method onRecipientKey
- [removed] Removed
Into<String>
impl forRecipientKey
, useto_hex_string
method instead - [changed] The
lookup_pubkey
function now returns aPublicKey
, not aString
- [changed]
CryptoError
type has three new error variants:BadNonce
,BadPadding
andDecryptionFailed
- [changed]
ApiError
type has one new error variant:InvalidMac
- [added] New helper function
encrypt_file_data
for encrypting the data and thumbnail that is sent inside a file message (#48)
This release changes the entire API from blocking to async. This makes it much easier to integrate the library into asynchronous applications.
If you prefer blocking APIs, simply wrap the async function calls in a
block_on
-function provided by an async executor like tokio, async-std or
smol.
Additionally, the library no longer depends on OpenSSL, making building much easier (including static builds).
The last new feature is mainly interesting if you're doing a lot of API calls from a long-running process: The HTTP client used internally is re-used and you can even pass in your own client instance. Previously, a new client instance was created for every request, which prevents connection re-use.
- [added] The internal HTTP client is now being re-used for consecutive requests (#46)
- [added] Allow passing in a custom reqwest
Client
(#46) - [changed] The API is now fully async (#46)
- [changed] Upgraded to reqwest 0.11 (#44)
- [changed] This library now uses rustls instead of native-tls, this means that OpenSSL is no longer required (#44)
- [changed] Replaced quick-error to thiserror
- [changed] Remove warning when using custom endpoint with http (#38)
- [added] Allow specifying
RenderingType
for file messages - [added] Allow specifying media metadata for file messages
- [added] Allow disabling delivery receipts for e2e messages
- [changed] The API for
E2eApi::encrypt_file_msg
has changed - [changed] The thumbnail media type must now be specified
- [changed] You now need to import
std::str::FromStr
to directly accessBlobId::from_str
orRecipientKey::from_str
- Maintenance release
- [added] Blob upload: Add support for
persist
flag (#25) - [fixed] Fix documentation for BlobId
- [added] Re-export
mime::Mime
- [added] Re-export
sodiumoxide::crypto::secretbox::Key
- [added] Re-export
sodiumoxide::crypto::box_::{PublicKey, SecretKey}
- [changed] Upgrade docopt to 1.1
- [changed] Stop tracking a certain minimal supported Rust version
- [fixed] Pinned docopt to 1.0.x
- [changed] Upgrade sodiumoxide to 0.2
- [changed] Upgrade reqwest to 0.9
- [changed] Require Rust 1.31+ (Rust 2018)
- [added] Add
ApiBuilder::with_custom_endpoint
method - [changed] Require Rust 1.21+
- [changed] Constructors of
SimpleApi
andE2eApi
are now private, use theApiBuilder
instead - [changed] Upgrade sodiumoxide dependency to 0.0.16
- [changed] Upgrade reqwest dependency to 0.8
- [changed] Upgrade log dependency to 0.4
- [changed] Upgrade data-encoding dependency to 2.1
- [changed] Upgrade data-encoding dependency to 2.0.0-rc.2
- [changed] Upgrade mime_guess dependency to 2.0.0-alpha.2
- [changed] Update reqwest dependency to 0.7
- [changed] Update mime dependency to 0.3
- [changed] Require Rust 1.18+
- [changed] Upgrade serde to 1.0.0
- [changed] Require Rust 1.15+
- [added] Implement
lookup_credits
(#8) - [added] Implement
lookup_capabilities
(#9) - [added] Implement blob uploading (#11)
- [added] Implement encrypting of e2e text, image and file messages (#11)
- [added] Add
as_bytes
andInto<String>
toRecipientKey
(#7)
- [changed] Revamped and simplified entire API, it now uses a more object-oriented approach (#6)
- [fixed] Fix bad API URL
- [changed] Update reqwest dependency to 0.5
- [added] Add debug logging to lookups
- [changed] Upgrade some dependencies
- [changed] Move from hyper to reqwest
- [changed] Require Rust 1.13+
- [added] Implement Threema ID lookups
- Initial release