aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2018-05-21 23:17:46 +0000
committerRobin Krahl <robin.krahl@ireas.org>2018-05-22 01:19:42 +0200
commitaac8f14edf4986c4881267a5b76a58d6800945bb (patch)
tree3ecf8243bb354bff8d737cc44495ce31e96793f6 /src
parenta9f51585b909c805bd441200c65e622217dc1a38 (diff)
downloadnitrokey-rs-aac8f14edf4986c4881267a5b76a58d6800945bb.tar.gz
nitrokey-rs-aac8f14edf4986c4881267a5b76a58d6800945bb.tar.bz2
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.
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs30
-rw-r--r--src/tests/pro.rs2
2 files changed, 7 insertions, 25 deletions
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());