aboutsummaryrefslogtreecommitdiff
path: root/nitrocli
diff options
context:
space:
mode:
Diffstat (limited to 'nitrocli')
-rw-r--r--nitrocli/CHANGELOG.md5
-rw-r--r--nitrocli/Cargo.lock10
-rw-r--r--nitrocli/Cargo.toml4
-rw-r--r--nitrocli/src/commands.rs24
-rw-r--r--nitrocli/src/error.rs16
-rw-r--r--nitrocli/src/tests/mod.rs17
-rw-r--r--nitrocli/src/tests/otp.rs4
-rw-r--r--nitrocli/src/tests/pin.rs11
-rw-r--r--nitrocli/src/tests/pws.rs4
9 files changed, 61 insertions, 34 deletions
diff --git a/nitrocli/CHANGELOG.md b/nitrocli/CHANGELOG.md
index 13f80c0..7099c6a 100644
--- a/nitrocli/CHANGELOG.md
+++ b/nitrocli/CHANGELOG.md
@@ -1,3 +1,8 @@
+Unreleased
+----------
+- Bumped `nitrokey` dependency to `0.4.0-alpha.0`
+
+
0.3.0
-----
- Added `unencrypted` command with `set` subcommand for changing the
diff --git a/nitrocli/Cargo.lock b/nitrocli/Cargo.lock
index 59bb9c9..8477b6a 100644
--- a/nitrocli/Cargo.lock
+++ b/nitrocli/Cargo.lock
@@ -77,14 +77,14 @@ dependencies = [
"argparse 0.2.2",
"base32 0.4.0",
"libc 0.2.66",
- "nitrokey 0.3.5",
- "nitrokey-test 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "nitrokey 0.4.0-alpha.0",
+ "nitrokey-test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "nitrokey"
-version = "0.3.5"
+version = "0.4.0-alpha.0"
dependencies = [
"libc 0.2.66",
"nitrokey-sys 3.4.3",
@@ -101,7 +101,7 @@ dependencies = [
[[package]]
name = "nitrokey-test"
-version = "0.1.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -230,7 +230,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
"checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8"
-"checksum nitrokey-test 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6226eaa31d1bbb031314d9288eb0e1bf6a70e7053da7960fea13ee84cab330ea"
+"checksum nitrokey-test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "54999e04037babf905431614d4bef874c4b80d496e361c7939920e2506faba5f"
"checksum proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "38fddd23d98b2144d197c0eca5705632d4fe2667d14a6be5df8934f8d74f1978"
"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1"
"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
diff --git a/nitrocli/Cargo.toml b/nitrocli/Cargo.toml
index f96df91..c2a061d 100644
--- a/nitrocli/Cargo.toml
+++ b/nitrocli/Cargo.toml
@@ -53,10 +53,10 @@ path = "../base32"
version = "0.2"
[dependencies.nitrokey]
-version = "0.3.5"
+version = "0.4.0-alpha.0"
[dev-dependencies.nitrokey-test]
-version = "0.1.1"
+version = "0.2"
[dev-dependencies.regex]
version = "1"
diff --git a/nitrocli/src/commands.rs b/nitrocli/src/commands.rs
index a65f070..6778332 100644
--- a/nitrocli/src/commands.rs
+++ b/nitrocli/src/commands.rs
@@ -39,8 +39,8 @@ use crate::Result;
const NITROKEY_DEFAULT_ADMIN_PIN: &str = "12345678";
/// Create an `error::Error` with an error message of the format `msg: err`.
-fn get_error(msg: &'static str, err: nitrokey::CommandError) -> Error {
- Error::CommandError(Some(msg), err)
+fn get_error(msg: &'static str, err: nitrokey::Error) -> Error {
+ Error::NitrokeyError(Some(msg), err)
}
/// Set `libnitrokey`'s log level based on the execution context's verbosity.
@@ -134,7 +134,7 @@ fn authenticate<D, A, F>(
) -> Result<A>
where
D: Device,
- F: FnMut(&mut args::ExecCtx<'_>, D, &str) -> result::Result<A, (D, nitrokey::CommandError)>,
+ F: FnMut(&mut args::ExecCtx<'_>, D, &str) -> result::Result<A, (D, nitrokey::Error)>,
{
let pin_entry = pinentry::PinEntry::from(pin_type, &device)?;
@@ -205,7 +205,7 @@ fn try_with_pin_and_data_with_pinentry<D, F, R, E>(
) -> Result<R>
where
F: FnMut(&mut args::ExecCtx<'_>, D, &str) -> result::Result<R, (D, E)>,
- E: error::TryInto<nitrokey::CommandError>,
+ E: error::TryInto<nitrokey::Error>,
{
let mut data = data;
let mut retry = 3;
@@ -216,7 +216,7 @@ where
Ok(result) => return Ok(result),
Err((new_data, err)) => match err.try_into() {
Ok(err) => match err {
- nitrokey::CommandError::WrongPassword => {
+ nitrokey::Error::CommandError(nitrokey::CommandError::WrongPassword) => {
pinentry::clear(pin_entry)?;
retry -= 1;
@@ -245,7 +245,7 @@ fn try_with_pin_and_data<D, F, R, E>(
) -> Result<R>
where
F: FnMut(&mut args::ExecCtx<'_>, D, &str) -> result::Result<R, (D, E)>,
- E: Into<Error> + error::TryInto<nitrokey::CommandError>,
+ E: Into<Error> + error::TryInto<nitrokey::Error>,
{
let pin = match pin_entry.pin_type() {
// Ideally we would not clone here, but that would require us to
@@ -280,7 +280,7 @@ fn try_with_pin<F, E>(
) -> Result<()>
where
F: FnMut(&str) -> result::Result<(), E>,
- E: Into<Error> + error::TryInto<nitrokey::CommandError>,
+ E: Into<Error> + error::TryInto<nitrokey::Error>,
{
try_with_pin_and_data(ctx, pin_entry, msg, (), |_ctx, data, pin| {
op(pin).map_err(|err| (data, err))
@@ -717,8 +717,8 @@ fn print_otp_status(
};
let name = match result {
Ok(name) => name,
- Err(nitrokey::CommandError::InvalidSlot) => return Ok(()),
- Err(nitrokey::CommandError::SlotNotProgrammed) => {
+ Err(nitrokey::Error::LibraryError(nitrokey::LibraryError::InvalidSlot)) => return Ok(()),
+ Err(nitrokey::Error::CommandError(nitrokey::CommandError::SlotNotProgrammed)) => {
if all {
"[not programmed]".to_string()
} else {
@@ -831,7 +831,7 @@ pub fn pin_unblock(ctx: &mut args::ExecCtx<'_>) -> Result<()> {
fn print_pws_data(
ctx: &mut args::ExecCtx<'_>,
description: &'static str,
- result: result::Result<String, nitrokey::CommandError>,
+ result: result::Result<String, nitrokey::Error>,
quiet: bool,
) -> Result<()> {
let value = result.map_err(|err| get_error("Could not access PWS slot", err))?;
@@ -845,7 +845,7 @@ fn print_pws_data(
fn check_slot(pws: &nitrokey::PasswordSafe<'_>, slot: u8) -> Result<()> {
if slot >= nitrokey::SLOT_COUNT {
- return Err(nitrokey::CommandError::InvalidSlot.into());
+ return Err(nitrokey::Error::from(nitrokey::LibraryError::InvalidSlot).into());
}
let status = pws
.get_slot_status()
@@ -855,7 +855,7 @@ fn check_slot(pws: &nitrokey::PasswordSafe<'_>, slot: u8) -> Result<()> {
} else {
Err(get_error(
"Could not access PWS slot",
- nitrokey::CommandError::SlotNotProgrammed,
+ nitrokey::CommandError::SlotNotProgrammed.into(),
))
}
}
diff --git a/nitrocli/src/error.rs b/nitrocli/src/error.rs
index c0e7403..819bed8 100644
--- a/nitrocli/src/error.rs
+++ b/nitrocli/src/error.rs
@@ -41,16 +41,16 @@ where
#[derive(Debug)]
pub enum Error {
ArgparseError(i32),
- CommandError(Option<&'static str>, nitrokey::CommandError),
IoError(io::Error),
+ NitrokeyError(Option<&'static str>, nitrokey::Error),
Utf8Error(str::Utf8Error),
Error(String),
}
-impl TryInto<nitrokey::CommandError> for Error {
- fn try_into(self) -> Result<nitrokey::CommandError, Error> {
+impl TryInto<nitrokey::Error> for Error {
+ fn try_into(self) -> Result<nitrokey::Error, Error> {
match self {
- Error::CommandError(_, err) => Ok(err),
+ Error::NitrokeyError(_, err) => Ok(err),
err => Err(err),
}
}
@@ -62,9 +62,9 @@ impl From<&str> for Error {
}
}
-impl From<nitrokey::CommandError> for Error {
- fn from(e: nitrokey::CommandError) -> Error {
- Error::CommandError(None, e)
+impl From<nitrokey::Error> for Error {
+ fn from(e: nitrokey::Error) -> Error {
+ Error::NitrokeyError(None, e)
}
}
@@ -90,7 +90,7 @@ impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match *self {
Error::ArgparseError(_) => write!(f, "Could not parse arguments"),
- Error::CommandError(ref ctx, ref e) => {
+ Error::NitrokeyError(ref ctx, ref e) => {
if let Some(ctx) = ctx {
write!(f, "{}: ", ctx)?;
}
diff --git a/nitrocli/src/tests/mod.rs b/nitrocli/src/tests/mod.rs
index c823f52..0e5d8bc 100644
--- a/nitrocli/src/tests/mod.rs
+++ b/nitrocli/src/tests/mod.rs
@@ -54,6 +54,8 @@ pub trait UnwrapError {
fn unwrap_str_err(self) -> String;
/// Unwrap a Error::CommandError variant.
fn unwrap_cmd_err(self) -> (Option<&'static str>, nitrokey::CommandError);
+ /// Unwrap a Error::LibraryError variant.
+ fn unwrap_lib_err(self) -> (Option<&'static str>, nitrokey::LibraryError);
}
impl<T> UnwrapError for crate::Result<T>
@@ -69,7 +71,20 @@ where
fn unwrap_cmd_err(self) -> (Option<&'static str>, nitrokey::CommandError) {
match self.unwrap_err() {
- crate::Error::CommandError(ctx, err) => (ctx, err),
+ crate::Error::NitrokeyError(ctx, err) => match err {
+ nitrokey::Error::CommandError(err) => (ctx, err),
+ err => panic!("Unexpected error variant found: {:?}", err),
+ },
+ err => panic!("Unexpected error variant found: {:?}", err),
+ }
+ }
+
+ fn unwrap_lib_err(self) -> (Option<&'static str>, nitrokey::LibraryError) {
+ match self.unwrap_err() {
+ crate::Error::NitrokeyError(ctx, err) => match err {
+ nitrokey::Error::LibraryError(err) => (ctx, err),
+ err => panic!("Unexpected error variant found: {:?}", err),
+ },
err => panic!("Unexpected error variant found: {:?}", err),
}
}
diff --git a/nitrocli/src/tests/otp.rs b/nitrocli/src/tests/otp.rs
index 531ed5f..2893e80 100644
--- a/nitrocli/src/tests/otp.rs
+++ b/nitrocli/src/tests/otp.rs
@@ -35,10 +35,10 @@ fn set_invalid_slot(device: nitrokey::DeviceWrapper) {
let res = Nitrocli::with_dev(device).handle(&["otp", "set", "100", "name", "1234"]);
assert_eq!(
- res.unwrap_cmd_err(),
+ res.unwrap_lib_err(),
(
Some("Could not write OTP slot"),
- nitrokey::CommandError::InvalidSlot
+ nitrokey::LibraryError::InvalidSlot
)
);
}
diff --git a/nitrocli/src/tests/pin.rs b/nitrocli/src/tests/pin.rs
index fe61b2d..69e0ff9 100644
--- a/nitrocli/src/tests/pin.rs
+++ b/nitrocli/src/tests/pin.rs
@@ -25,7 +25,10 @@ use super::*;
#[test_device]
fn unblock(device: nitrokey::DeviceWrapper) -> crate::Result<()> {
let (device, err) = device.authenticate_user("wrong-pin").unwrap_err();
- assert_eq!(err, nitrokey::CommandError::WrongPassword);
+ match err {
+ nitrokey::Error::CommandError(err) if err == nitrokey::CommandError::WrongPassword => (),
+ _ => panic!("Unexpected error variant found: {:?}", err),
+ }
assert!(device.get_user_retry_count() < 3);
let model = device.get_model();
@@ -48,7 +51,11 @@ fn set_user(device: nitrokey::DeviceWrapper) -> crate::Result<()> {
let (device, err) = device
.authenticate_user(NITROKEY_DEFAULT_USER_PIN)
.unwrap_err();
- assert_eq!(err, nitrokey::CommandError::WrongPassword);
+
+ match err {
+ nitrokey::Error::CommandError(err) if err == nitrokey::CommandError::WrongPassword => (),
+ _ => panic!("Unexpected error variant found: {:?}", err),
+ }
drop(device);
// Revert to the default user PIN.
diff --git a/nitrocli/src/tests/pws.rs b/nitrocli/src/tests/pws.rs
index 5d0f245..9468dcf 100644
--- a/nitrocli/src/tests/pws.rs
+++ b/nitrocli/src/tests/pws.rs
@@ -24,10 +24,10 @@ fn set_invalid_slot(device: nitrokey::DeviceWrapper) {
let res = Nitrocli::with_dev(device).handle(&["pws", "set", "100", "name", "login", "1234"]);
assert_eq!(
- res.unwrap_cmd_err(),
+ res.unwrap_lib_err(),
(
Some("Could not write PWS slot"),
- nitrokey::CommandError::InvalidSlot
+ nitrokey::LibraryError::InvalidSlot
)
);
}