aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO.md2
-rw-r--r--src/lib.rs30
-rw-r--r--src/tests/pro.rs2
3 files changed, 8 insertions, 26 deletions
diff --git a/TODO.md b/TODO.md
index b9efdbd..b2fa21e 100644
--- a/TODO.md
+++ b/TODO.md
@@ -36,10 +36,10 @@
- `NK_list_devices_by_cpuID`
- `NK_connect_with_ID`
- Fix timing issues with the `totp` and `totp_pin` test cases.
-- Consider implementing `Drop` instead of the method `disconnect`.
- Find an example for `set_time`, also adapt `get_totp_code`.
- Improve log level documentation.
- Clear passwords from memory.
- Find a nicer syntax for the `write_config` test.
- Fix segmentation faults when freeing string literals with old Nitrokey
versions (fixed in libnitrokey commit 7a8550d).
+- Prevent construction of internal types.
diff --git a/src/lib.rs b/src/lib.rs
index 817ee0a..1548950 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -329,30 +329,6 @@ static TEMPORARY_PASSWORD_LENGTH: usize = 25;
/// [`get_hotp_code`]: #method.get_hotp_code
/// [`get_totp_code`]: #method.get_totp_code
pub trait Device {
- /// Closes the connection to this device. This method consumes the device.
- ///
- /// # Example
- ///
- /// ```no_run
- /// use nitrokey::Device;
- /// # use nitrokey::CommandError;
- ///
- /// # fn try_main() -> Result<(), CommandError> {
- /// let device = nitrokey::connect()?;
- /// // perform tasks ...
- /// device.disconnect();
- /// # Ok(())
- /// # }
- /// ```
- fn disconnect(self)
- where
- Self: std::marker::Sized,
- {
- unsafe {
- nitrokey_sys::NK_logout();
- }
- }
-
/// Sets the time on the Nitrokey. This command may set the time to
/// arbitrary values. `time` is the number of seconds since January 1st,
/// 1970 (Unix timestamp).
@@ -1110,6 +1086,12 @@ impl UnauthenticatedDevice {
}
}
+impl Drop for UnauthenticatedDevice {
+ fn drop(&mut self) {
+ unsafe { nitrokey_sys::NK_logout(); }
+ }
+}
+
impl Device for UnauthenticatedDevice {}
impl UserAuthenticatedDevice {
diff --git a/src/tests/pro.rs b/src/tests/pro.rs
index 732c248..feadcbc 100644
--- a/src/tests/pro.rs
+++ b/src/tests/pro.rs
@@ -48,7 +48,7 @@ fn connect() {
#[cfg_attr(not(feature = "test-pro"), ignore)]
fn disconnect() {
set_debug(false);
- ::connect().unwrap().disconnect();
+ ::connect().unwrap();
unsafe {
let ptr = ::nitrokey_sys::NK_device_serial_number();
assert!(!ptr.is_null());