Skip to content

Latest commit

 

History

History
184 lines (133 loc) · 6 KB

CHANGELOG.md

File metadata and controls

184 lines (133 loc) · 6 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog

[0.9.0] - 2023-10-23

  • Removes the derive_keypair function as it was not used and was broken.
  • Added constant_time_equals in the utils.

[0.8.0] - 2021-11-25

Added

  • Added the signing_key and signature modules to support public key signing using ed25519.

[0.6.1] - 2020-06-28

Added

  • Added scrypt_simple to Rust and C#

Changed

  • Fixed missing file in NPM package

[0.6.0] - 2020-06-16

Added

  • Added derive_key_argon2() method to derive a symmetric key from a set of Argon2Parameters.

Changed

  • Renamed derive_key() to derive_key_pbkdf2().

[0.5.5] - 2020-05-11 - C# and Javascript/Typescript

Added (C#)

  • Added a legacy decryption handler, in case the header is invalid.

Added (WASM)

  • 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.

[0.5.4] - 2020-05-11 - C#

Added

  • Binding to base64 encoding/decoding in url-safe format.

[0.5.3] - 2020-05-06 - C#

Changed

  • Prevent derivation if encryption/decryption data is null.

[0.5.2-0.5.6] - 2020-05-05 - Javascript IE

Changed

  • Fixes for Internet Explorer and Safari.

[0.5.2] - 2020-04-22 - C#

Changed

C#

  • Fixed crash in the GetDecodedLength method.

[0.5.1] - 2020-04-16 - Rust

Changed

Rust

  • Added Base64 bindings in utils

[0.5.1] - 2020-04-15 - C# iOS

Changed

C#

  • Fixed iOS linking issue with multiple rust libraries.

[0.5.1] - 2020-03-27 - Javascript/Typescript

Added

Javascript/Typescript

  • base64urlEncode and base64urlDecode methods to encode data to be passed by a URL.

[0.5.0] - 2020-03-23

Added

C#

  • Wrapper for the shamir secret sharing feature.

Rust

  • utils::validate_header()

Javascript/Typescript

  • validateHeader()
  • Enumerations for versions instead of numbers.

Changed

C#

  • 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 by DataType.PasswordHash.
  • Managed.ValidateSignature is now deprecated and has been replaced by Managed.ValidateHeader
  • Performance improvements for the Derive Key bug.

Rust

  • 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)

Testing

C#

  • The Xamarin Mac Modern platform is now tested.
  • The Xamarin iOS platform is now tested.

[0.4.0] - 2020-03-15

Added

General

  • Asymmetric encryption. (Rust, C#, JS)
  • Derive key pair from a password. (Rust, C#, JS)
  • Shamir Secret Sharing. (Rust, JS)
  • Official Javascript/Typescript support.

C#

  • 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 using ValidateSignature(byte[], DataType) when possible.
    • ValidateSignatureFromBase64
    • ValidateSignatureFromStream

Changed

C#

  • Renamed functions to be more consistent with what they do. The old functions now have the [Obsolete] attribute.
    • StringToByteArray is now StringToUtf8ByteArray
    • ByteArrayToString is now ByteArrayToUtf8String
    • Decode is now DecodeFromBase64
    • Encode is now EncodeToBase64String
  • 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.

Breaking Changes

C#

  • Renamed the following function
    • GenerateKeyExchange to GenerateKeyPair
  • Renamed the following class
    • KeyExchange to KeyPair
  • The function DecryptWithKey had a iterations 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.

Javascript

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.

Testing

General

  • 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)

C#

  • The Xamarin Mac Full platform is now tested.

Javascript/Typescript

  • 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.

CI

Code Formatting

The CI now ensures that code pushed to the project is respecting our standards. It also prevent merge conflicts caused by the code formatting.

C#
  • Uses SecurityCodeScan and StylecopAnalyzers for code formatting checks.
  • Warnings are now treated as errors.
Rust
  • Uses rustfmt and rust-clippy for code formatting checks.
Javascript