aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md6
-rw-r--r--README.md3
-rw-r--r--doc/nitrocli.17
-rw-r--r--doc/nitrocli.1.pdfbin42165 -> 42316 bytes
-rw-r--r--src/commands.rs10
-rw-r--r--src/tests/status.rs1
6 files changed, 24 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 22551e7..19f0189 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Unreleased
+----------
+- Added SD card usage information to the output of the `status` command for
+ Storage devices
+
+
0.3.5
-----
- Added support for configuration files
diff --git a/README.md b/README.md
index 93ea71a..adcd128 100644
--- a/README.md
+++ b/README.md
@@ -58,11 +58,12 @@ $ nitrocli status
Status:
model: Storage
serial number: 0x00053141
- firmware version: 0.47
+ firmware version: v0.54
user retry count: 3
admin retry count: 3
Storage:
SD card ID: 0x05dcad1d
+ SD card usage: 24% .. 99% not written
firmware: unlocked
storage keys: created
volumes:
diff --git a/doc/nitrocli.1 b/doc/nitrocli.1
index e65a9e7..fb207c4 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 written to 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 030a80d..c5fce65 100644
--- a/doc/nitrocli.1.pdf
+++ b/doc/nitrocli.1.pdf
Binary files differ
diff --git a/src/commands.rs b/src/commands.rs
index 64da866..d81e095 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<u8>,
) -> anyhow::Result<()> {
println!(
ctx,
r#" Storage:
SD card ID: {id:#x}
+ SD card usage: {usagestart}% .. {usageend}% not written
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 fe69d78..ca16121 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 written
firmware: (un)?locked
storage keys: (not )?created
volumes: