summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2018-05-28 20:22:01 +0000
committerRobin Krahl <robin.krahl@ireas.org>2018-05-28 22:22:54 +0200
commit15706f8708af4175a5376026cdd7c6f821945a5d (patch)
treedf66bd75aaff9410c7f0af60daa1ace2fc702c53
parent1ceea28c65b60c31c6c2667cd6de90935e4b9dc1 (diff)
downloadnitrokey-rs-15706f8708af4175a5376026cdd7c6f821945a5d.tar.gz
nitrokey-rs-15706f8708af4175a5376026cdd7c6f821945a5d.tar.bz2
Move set_time from Device to GenerateOtp
The set_time operation is only used with TOTP generation. Therefore it makes more sense to have it in the GenerateOtp trait than in the Device trait.
-rw-r--r--src/device.rs36
-rw-r--r--src/otp.rs38
-rw-r--r--src/tests/pro.rs2
3 files changed, 38 insertions, 38 deletions
diff --git a/src/device.rs b/src/device.rs
index 7387dd9..25e4596 100644
--- a/src/device.rs
+++ b/src/device.rs
@@ -140,42 +140,6 @@ pub struct Admin<T: Device> {
/// This trait provides the commands that can be executed without authentication and that are
/// present on all supported Nitrokey devices.
pub trait Device: GenerateOtp {
- /// 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).
- ///
- /// The time is used for TOTP generation (see [`get_totp_code`][]).
- ///
- /// # Example
- ///
- /// ```ignore
- /// extern crate chrono;
- ///
- /// use chrono::Utc;
- /// use nitrokey::Device;
- /// # use nitrokey::CommandError;
- ///
- /// # fn try_main() -> Result<(), CommandError> {
- /// let device = nitrokey::connect()?;
- /// let time = Utc::now().timestamp();
- /// if time < 0 {
- /// println!("Timestamps before 1970-01-01 are not supported!");
- /// } else {
- /// device.set_time(time as u64);
- /// }
- /// # Ok(())
- /// # }
- /// ```
- ///
- /// # Errors
- ///
- /// - [`Timestamp`][] if the time could not be set
- ///
- /// [`get_totp_code`]: trait.GenerateOtp.html#method.get_totp_code
- /// [`Timestamp`]: enum.CommandError.html#variant.Timestamp
- fn set_time(&self, time: u64) -> CommandStatus {
- unsafe { CommandStatus::from(nitrokey_sys::NK_totp_set_time(time)) }
- }
-
/// Returns the serial number of the Nitrokey device. The serial number is the string
/// representation of a hex number.
///
diff --git a/src/otp.rs b/src/otp.rs
index 0d04e27..b89d2bf 100644
--- a/src/otp.rs
+++ b/src/otp.rs
@@ -149,6 +149,42 @@ pub trait ConfigureOtp {
/// Provides methods to generate OTP codes and to query OTP slots on a Nitrokey
/// device.
pub trait GenerateOtp {
+ /// 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).
+ ///
+ /// The time is used for TOTP generation (see [`get_totp_code`][]).
+ ///
+ /// # Example
+ ///
+ /// ```ignore
+ /// extern crate chrono;
+ ///
+ /// use chrono::Utc;
+ /// use nitrokey::Device;
+ /// # use nitrokey::CommandError;
+ ///
+ /// # fn try_main() -> Result<(), CommandError> {
+ /// let device = nitrokey::connect()?;
+ /// let time = Utc::now().timestamp();
+ /// if time < 0 {
+ /// println!("Timestamps before 1970-01-01 are not supported!");
+ /// } else {
+ /// device.set_time(time as u64);
+ /// }
+ /// # Ok(())
+ /// # }
+ /// ```
+ ///
+ /// # Errors
+ ///
+ /// - [`Timestamp`][] if the time could not be set
+ ///
+ /// [`get_totp_code`]: #method.get_totp_code
+ /// [`Timestamp`]: enum.CommandError.html#variant.Timestamp
+ fn set_time(&self, time: u64) -> CommandStatus {
+ unsafe { CommandStatus::from(nitrokey_sys::NK_totp_set_time(time)) }
+ }
+
/// Returns the name of the given HOTP slot.
///
/// # Errors
@@ -274,7 +310,7 @@ pub trait GenerateOtp {
/// # }
/// ```
///
- /// [`set_time`]: trait.Device.html#method.set_time
+ /// [`set_time`]: #method.set_time
/// [`get_config`]: trait.Device.html#method.get_config
/// [`InvalidSlot`]: enum.CommandError.html#variant.InvalidSlot
/// [`NotAuthorized`]: enum.CommandError.html#variant.NotAuthorized
diff --git a/src/tests/pro.rs b/src/tests/pro.rs
index 915b45b..e52c287 100644
--- a/src/tests/pro.rs
+++ b/src/tests/pro.rs
@@ -180,7 +180,7 @@ fn configure_totp(admin: &ConfigureOtp) {
assert_eq!(CommandStatus::Success, admin.write_totp_slot(slot_data, 30));
}
-fn check_totp_codes<T: Device + GenerateOtp>(device: &T) {
+fn check_totp_codes(device: &GenerateOtp) {
for (i, &(time, code)) in TOTP_CODES.iter().enumerate() {
assert_eq!(CommandStatus::Success, device.set_time(time));
let result = device.get_totp_code(1);