diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2018-05-28 20:22:01 +0000 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2018-05-28 22:22:54 +0200 |
commit | 15706f8708af4175a5376026cdd7c6f821945a5d (patch) | |
tree | df66bd75aaff9410c7f0af60daa1ace2fc702c53 /src/otp.rs | |
parent | 1ceea28c65b60c31c6c2667cd6de90935e4b9dc1 (diff) | |
download | nitrokey-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.
Diffstat (limited to 'src/otp.rs')
-rw-r--r-- | src/otp.rs | 38 |
1 files changed, 37 insertions, 1 deletions
@@ -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 |