From 6965d56ac36ec81926f3c379590c661b1b357a93 Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Thu, 10 Sep 2020 11:01:18 +0200 Subject: [PATCH 1/2] Print SD card usage in Storage status The Storage device keeps track of the areas of the SD card that have been accessed during this power cycle. This data can be accessed using the NK_get_SD_usage_data function that returns a range of the SD card that has not been accessed. This data can be used as a guide line when creating new hidden volumes. This patch adds the SD card usage data to the output of the status command for Nitrokey Storage devices. --- doc/nitrocli.1 | 7 ++++++- doc/nitrocli.1.pdf | Bin 42203 -> 42949 bytes src/commands.rs | 10 +++++++++- src/tests/status.rs | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/nitrocli.1 b/doc/nitrocli.1 index 6fb1fd9d..73eb330e 100644 --- a/doc/nitrocli.1 +++ b/doc/nitrocli.1 @@ -70,7 +70,8 @@ them, set the \fB\-\-no-connect\fR option. Print the status of the connected Nitrokey device, including the stick serial number, the firmware version, and the PIN retry count. If the device is a Nitrokey Storage, also print storage related information including the SD card -serial number, the encryption status, and the status of the volumes. +serial number, the SD card usage during this power cycle, the encryption +status, and the status of the volumes. .TP .B nitrocli lock Lock the Nitrokey. @@ -121,6 +122,10 @@ respectively, the start and end position of the hidden volume inside the encrypted volume, as a percentage of the encrypted volume's size. This command requires a password which is later used to look up the hidden volume to open. Unlike a PIN, this password is not cached by \fBgpg\-agent\fR(1). + +As a guide line for creating new hidden volumes, the \fBstatus\fR command +provides a range of the SD card that has not been accessed during this power +cycle. .TP \fBnitrocli hidden open Open a hidden volume. The volume to open is determined based on the password diff --git a/doc/nitrocli.1.pdf b/doc/nitrocli.1.pdf index d98ab41f4f75d9807f6f6741974cc1775a839e38..d04786957ff04d59cdf5a9c7a9b139d65a823be8 100644 GIT binary patch delta 34401 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 delta 33857 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 z zu5=~<6U*Oc!oj}^?!#KivhV3-*H)8N1CF>?H7kpIOoGbcOif5@C13@vR;LEHtf z;4Ca4i2?#WF?KdKHWoHkF?JDAp|?hILSoEs9~e$fVIg)V7BLY{KA!*Q2;JXIen%%m Y2PZcNQ!^MA0Dz4XhKx*9UJT~{0FPIVegFUf diff --git a/src/commands.rs b/src/commands.rs index ebb28ca1..b8a3e398 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -6,6 +6,7 @@ use std::convert::TryFrom as _; use std::fmt; use std::mem; +use std::ops; use std::ops::Deref as _; use std::thread; use std::time; @@ -334,11 +335,13 @@ where fn print_storage_status( ctx: &mut Context<'_>, status: &nitrokey::StorageStatus, + sd_card_usage: &ops::Range, ) -> anyhow::Result<()> { println!( ctx, r#" Storage: SD card ID: {id:#x} + SD card usage: {usagestart}% .. {usageend}% not accessed firmware: {fw} storage keys: {sk} volumes: @@ -346,6 +349,8 @@ fn print_storage_status( encrypted: {ve} hidden: {vh}"#, id = status.serial_number_sd_card, + usagestart = sd_card_usage.start, + usageend = sd_card_usage.end, fw = if status.firmware_locked { "locked" } else { @@ -398,8 +403,11 @@ fn print_status( let status = device .get_storage_status() .context("Failed to retrieve storage status")?; + let sd_card_usage = device + .get_sd_card_usage() + .context("Failed to retrieve SD card usage")?; - print_storage_status(ctx, &status) + print_storage_status(ctx, &status, &sd_card_usage) } else { Ok(()) } diff --git a/src/tests/status.rs b/src/tests/status.rs index fe69d788..109d223b 100644 --- a/src/tests/status.rs +++ b/src/tests/status.rs @@ -50,6 +50,7 @@ fn output_storage(model: nitrokey::Model) -> anyhow::Result<()> { admin retry count: [0-3] Storage: SD card ID: 0x[[:xdigit:]]{8} + SD card usage: \d+% .. \d+% not accessed firmware: (un)?locked storage keys: (not )?created volumes: From e3e0f9e0cff208d4a60b5e3c8da2a1335fa154d0 Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Thu, 10 Sep 2020 11:47:14 +0200 Subject: [PATCH 2/2] fixup! Print SD card usage in Storage status changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83fc8d97..77d8e779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ Unreleased - Added `--usb-path` option that restricts the USB path of the device to connect to - Bumped `structopt` dependency to `0.3.17` +- Added SD card usage information to the output of the `status` command for + Storage devices 0.3.4