# Changelog

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

The format is based on [Keep a Changelog], and this project adheres to [Semantic
Versioning].

## [Unreleased]

## [0.3.0] - 2021-01-11

### Added

- Allow users to derive a key from a secret value and the encryption metadata.

### Removed

- Remove the key derivation process that was performed internally in the
  following `RingCryptor` methods:

  * `seal_in_place`
  * `seal_with_meta`
  * `seal_with_key`
  * `open_in_place`
  * `open_with_meta`

  The change should impact just the users that used key derivation (PBKDF2) and
  passed a passphrase to any of the above functions. If you are affected, you
  can manually derive the key and pass it to the above functions. For more info,
  see the examples in the `RingCryptor` documentation.

  Note that the following methods are still performing key derivation
  internally:

  * `seal_with_passphrase`
  * `open`

  Finally, the reason for the removal was not security-related, but to give more
  control to the users on this front ([#6]).

## [0.2.2] - 2020-04-13

### Changed

- Use the `thiserror` crate to make the library errors implement the `Error`
  trait, and remove some boilerplate code.

## [0.2.1] - 2020-03-30

### Changed

- Move the CLI dependencies under a `cli` feature flag, so that users of the
  library don't need to pull them.

## [0.2.0] - 2020-03-22

### Added

- Add Windows support.
- Add a CI pipeline based on Github Actions. This pipeline tests the project
  on Ubuntu, MacOS and Windows platforms, and creates build artifacts for them.

### Changed

- Bump the dependencies to their newest versions.

### Fixed

- Fix some build warnings, that were ultimately treated as errors, by
  updating `protoc-rust` and generating new Rust code from our `.proto` files.
  These build warnings started to appear due to new versions of `rustc`.

### Removed

- Remove support for the `HMAC-SHA512/256` hash function, used in conjunction
  with PBKDF2 for key derivation. This hash function was removed by the `ring`
  library, so we're left with no choice but to remove it from Tindercrypt it as
  well.

## [0.1.1] - 2019-08-10

Version bump so that the Github tag and crates.io tag can be aligned.

## [0.1.0] - 2019-08-10

Initial release.

[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
[Semantic Versioning]: https://semver.org/spec/v2.0.0.html
[#6]: https://github.com/apyrgio/tindercrypt/issues/6

[Unreleased]: https://github.com/apyrgio/tindercrypt/compare/v0.3.0...HEAD
[0.3.0]: https://github.com/apyrgio/tindercrypt/compare/v0.2.2...v0.3.0
[0.2.2]: https://github.com/apyrgio/tindercrypt/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/apyrgio/tindercrypt/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/apyrgio/tindercrypt/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/apyrgio/tindercrypt/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/apyrgio/tindercrypt/releases/tag/v0.1.0
