diff options
author | Daniel Mueller <deso@posteo.net> | 2017-04-09 20:21:39 -0700 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2017-04-09 20:21:39 -0700 |
commit | a23c692dc38fe95b1a584663166fd3c9ed251326 (patch) | |
tree | 21f2a08703245b0022da01d7ab6cc312bacfb584 /nitrocli/src/nitrokey.rs | |
parent | f94d04578f44fc79212550203838f7c78e1ac414 (diff) | |
download | nitrocli-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.rs | 14 |
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, |