summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md55
1 files changed, 55 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 04da117..d4451bc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,58 @@
+<!---
+Copyright (C) 2019-2020 Robin Krahl <robin.krahl@ireas.org>
+SPDX-License-Identifier: CC0-1.0
+-->
+
+# v0.4.0 (2020-01-02)
+- Remove the `test-pro` and `test-storage` features.
+- Implement `Display` for `Version`.
+- Introduce `DEFAULT_ADMIN_PIN` and `DEFAULT_USER_PIN` constants.
+- Refactor the error handling code:
+ - Implement `std::error::Error` for `CommandError`.
+ - Add the `Error` enum.
+ - Add the `LibraryError` enum and move the library error variants from
+ `CommandError` to `LibraryError`.
+ - Add the `CommunicationError` enum and move the communication error variants
+ from `CommandError` to `CommunicationError`.
+ - Return `Error` instead of `CommandError` in all public functions.
+ - Move the `CommandError::RngError` variant to `Error::RandError` and the
+ `CommandError::Unknown` variant to `Error::UnknownError`.
+ - Return `CommunicationError::NotConnected` instead of
+ `CommandError::Undefined` from the connect functions.
+ - Remove the `CommandError::Undefined` variant.
+- Add a private `PhantomData` field to `Pro` and `Storage` to make direct
+ instantiation impossible.
+- Refactor and clean up internal code:
+ - Prefer using the `Into` trait over numeric casting.
+ - Add `Pro::new` and `Storage::new` functions.
+- Implement `From<Pro>` and `From<Storage>` for `DeviceWrapper`.
+- Add `Error::Utf8Error` variant.
+ - Return `Result<Version>` instead of `Version` from `get_library_version`.
+ - Return `Error::Utf8Error` if libnitrokey returns an invalid UTF-8 string.
+- Implement `From<(T: Device, Error)>` for `Error`.
+- Fix timing issues with the `totp_no_pin` and `totp_pin` test cases.
+- Always return a `Result` in functions that communicate with a device.
+- Combine `get_{major,minor}_firmware_version` into `get_firmware_version`.
+- Add `set_encrypted_volume_mode` to `Storage`.
+- Use mutability to represent changes to the device status:
+ - Implement `DerefMut` for `User<T>` and `Admin<T>`.
+ - Add `device_mut` method to `DeviceWrapper`.
+ - Require a mutable `Device` reference if a method changes the device state.
+- Update dependencies:
+ - `nitrokey-sys` to 3.5
+ - `nitrokey-test` to 0.3
+ - `rand_core` to 0.5
+ - `rand_os` to 0.2
+- Add `nitrokey-test-state` dependency in version 0.1.
+- Refactor connection management:
+ - Add `ConcurrentAccessError` and `PoisonError` `Error` variants.
+ - Add the `Manager` struct that manages connections to Nitrokey devices.
+ - Remove `connect`, `connect_model`, `Pro::connect` and `Storage::connect`.
+ - Add the `into_manager` function to the `Device` trait.
+ - Add the `force_take` function that ignores a `PoisonError` when accessing
+ the manager instance.
+- Internally refactor the `device` module into submodules.
+
# v0.3.5 (2019-12-16)
- Update the nitrokey-sys dependency version specification to ~3.4.