aboutsummaryrefslogtreecommitdiff
path: root/nitrocli/src/nitrokey.rs
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2017-04-09 20:21:39 -0700
committerDaniel Mueller <deso@posteo.net>2017-04-09 20:21:39 -0700
commita23c692dc38fe95b1a584663166fd3c9ed251326 (patch)
tree21f2a08703245b0022da01d7ab6cc312bacfb584 /nitrocli/src/nitrokey.rs
parentf94d04578f44fc79212550203838f7c78e1ac414 (diff)
downloadnitrocli-a23c692dc38fe95b1a584663166fd3c9ed251326.tar.gz
nitrocli-a23c692dc38fe95b1a584663166fd3c9ed251326.tar.bz2
Detect wrong password during 'open' command
When a wrong password is entered when attempting to open the encrypted volume the nitrokey will report that in the form of an error. In such a case we should retry the operation after asking the user for the corrected password. This change implements this logic. Note that because we use gpg-agent for the PIN inquiry and because it caches passwords by default we must make sure to clear the cache before retrying.
Diffstat (limited to 'nitrocli/src/nitrokey.rs')
-rw-r--r--nitrocli/src/nitrokey.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/nitrocli/src/nitrokey.rs b/nitrocli/src/nitrokey.rs
index d1d6c72..00a681c 100644
--- a/nitrocli/src/nitrokey.rs
+++ b/nitrocli/src/nitrokey.rs
@@ -241,6 +241,9 @@ pub enum CommandStatus {
#[allow(dead_code)]
+#[derive(Copy)]
+#[derive(Clone)]
+#[derive(Debug)]
#[derive(PartialEq)]
#[repr(u8)]
pub enum StorageStatus {
@@ -273,6 +276,17 @@ impl<P> AsRef<[u8]> for Response<P> {
#[repr(packed)]
+pub struct StorageResponse {
+ pub padding1: [u8; 13],
+ pub command_counter: u8,
+ pub last_storage_command: Command,
+ pub storage_status: StorageStatus,
+ pub progress: u8,
+ pub padding2: [u8; 2],
+}
+
+
+#[repr(packed)]
pub struct DeviceStatusResponse {
pub padding0: [u8; 22],
pub magic: u16,