All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
- Removes the
derive_keypair
function as it was not used and was broken. - Added
constant_time_equals
in the utils.
- Added the
signing_key
andsignature
modules to support public key signing using ed25519.
- Added
scrypt_simple
to Rust and C#
- Fixed missing file in NPM package
- Added
derive_key_argon2()
method to derive a symmetric key from a set ofArgon2Parameters
.
- Renamed
derive_key()
toderive_key_pbkdf2()
.
- Added a legacy decryption handler, in case the header is invalid.
- Binded a Rust Scrypt method to WASM for a very specific use case, and this might be removed in the future, so don't rely on it.
- Binding to base64 encoding/decoding in url-safe format.
- Prevent derivation if encryption/decryption data is null.
- Fixes for Internet Explorer and Safari.
- Fixed crash in the GetDecodedLength method.
- Added Base64 bindings in utils
- Fixed iOS linking issue with multiple rust libraries.
base64urlEncode
andbase64urlDecode
methods to encode data to be passed by a URL.
- Wrapper for the shamir secret sharing feature.
utils::validate_header()
validateHeader()
- Enumerations for versions instead of numbers.
- Fixed the Argon2Parameters for the Xamarin Mac Modern, iOS, Android caused by a typo in the entry point.
DataType.Hash
is now deprecated and has been replaced byDataType.PasswordHash
.Managed.ValidateSignature
is now deprecated and has been replaced byManaged.ValidateHeader
- Performance improvements for the Derive Key bug.
- The entire API has been changed. Please refer to the documentation and the README.
- iOS 32 bit platforms no longer supported. They are now Tier 3. (i386, armv7, armv7s)
- The Xamarin Mac Modern platform is now tested.
- The Xamarin iOS platform is now tested.
- Asymmetric encryption. (Rust, C#, JS)
- Derive key pair from a password. (Rust, C#, JS)
- Shamir Secret Sharing. (Rust, JS)
- Official Javascript/Typescript support.
- Documented most functions and enums.
- The following functions have been added in the
Utils
. It is not recommended to use them for performance reasons. Keep usingValidateSignature(byte[], DataType)
when possible.ValidateSignatureFromBase64
ValidateSignatureFromStream
- Renamed functions to be more consistent with what they do. The old functions now have the [Obsolete] attribute.
StringToByteArray
is nowStringToUtf8ByteArray
ByteArrayToString
is nowByteArrayToUtf8String
Decode
is nowDecodeFromBase64
Encode
is nowEncodeToBase64String
- Fixed issue in the
DeriveKey()
function- Confusion between bits and bytes. The keys generated by the function would be 256 byte instead of 32 byte. The error is now fixed and our decryption will fallback to 256 bytes if the decryption fail.
DevolutionsCryptoExceptions
have now more details in the message and the stack trace.
- Renamed the following function
GenerateKeyExchange
toGenerateKeyPair
- Renamed the following class
KeyExchange
toKeyPair
- The function
DecryptWithKey
had aiterations
parameter that wasn't used so it has been removed. - The function
DeriveKey
now returns a key of 32 bytes by default instead of 256 bytes, which couldn't be changed. If you already use the method, you can override the default value to 256 and the old data will still work, however it is recommended to migrate to 32 bytes key, mostly for performance reasons.
The API has completely changed since 0.3 to respect Javascript/Typescript coding styles. Notably, function names has been renamed
to follow the camelCase
convention and types has been added to prevent key misuse. Also, Typescript declaration has been fixed.
- Added unit tests for
- Asymmetric encryption (C#, Rust, JS)
- Derive key pair from a password. (C#, Rust, JS)
- Secret Sharing (Rust, JS)
- Added conformity tests to make sure that old versions are not broken and that all languages are compatible.
- Key Derivation (C#, Rust, JS)
- Keypair Derivation (C#, Rust, JS)
- Symmetric decryption V1 and V2 (C#, Rust, JS)
- Asymmetric Decryption V2 (C#, Rust, JS)
- Password Hashin V1 (C#, Rust, JS)
- The Xamarin Mac Full platform is now tested.
- The Javascript/Typescript API is now tested using NodeJS, instead of only testing the browser features.
- The tests were not running, this has been fixed.
The CI now ensures that code pushed to the project is respecting our standards. It also prevent merge conflicts caused by the code formatting.
- Uses SecurityCodeScan and StylecopAnalyzers for code formatting checks.
- Warnings are now treated as errors.
- Uses rustfmt and rust-clippy for code formatting checks.
- Tests use eslint for formatting, using JavaScript Standard Style