From aac8f14edf4986c4881267a5b76a58d6800945bb Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Mon, 21 May 2018 23:17:46 +0000 Subject: Use drop() instead of disconnect() Previously, the user had to explicitly call diconnect() to terminate the connection to the Nitrokey. Now NK_logout() is called automatically once the device is out of scope as UnauthenticatedDevice implements Drop. AdminAuthenticatedDevice and UserAuthenticatedDevice do not have to implement Drop, as it will be called recursively. --- src/lib.rs | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) (limited to 'src/lib.rs') 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 { -- cgit v1.2.1