diff --git a/Cargo.lock b/Cargo.lock index 67e7c765..565ed15a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -210,8 +210,7 @@ dependencies = [ [[package]] name = "nitrokey" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddeb2d19d5499ab4740c0131562e8c4b2c13f8954677be4318c1efc944911531" +source = "git+https://git.sr.ht/~ireas/nitrokey-rs?branch=backend#16f6c38eff783382cf1f1679271254aa85e7ce1d" dependencies = [ "lazy_static", "libc", diff --git a/Cargo.toml b/Cargo.toml index 19e77bc9..1b9a149f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,7 +56,8 @@ version = "0.2" version = "0.1" [dependencies.nitrokey] -version = "0.9.0" +git = "https://git.sr.ht/~ireas/nitrokey-rs" +branch = "backend" [dependencies.progressing] version = "3.0.2" diff --git a/src/commands.rs b/src/commands.rs index ad61c65d..cbb37854 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -112,7 +112,7 @@ fn find_device(config: &config::Config) -> anyhow::Result /// Connect to a Nitrokey device that matches the given requirements fn connect<'mgr>( - manager: &'mgr mut nitrokey::Manager, + manager: &'mgr nitrokey::Manager, config: &config::Config, ) -> anyhow::Result> { let device_info = find_device(config)?; @@ -131,12 +131,11 @@ fn with_device(ctx: &mut Context<'_>, op: F) -> anyhow::Result<()> where F: FnOnce(&mut Context<'_>, nitrokey::DeviceWrapper<'_>) -> anyhow::Result<()>, { - let mut manager = - nitrokey::take().context("Failed to acquire access to Nitrokey device manager")?; + let manager = nitrokey::take().context("Failed to acquire access to Nitrokey device manager")?; set_log_level(ctx); - let device = connect(&mut manager, &ctx.config)?; + let device = connect(&manager, &ctx.config)?; op(ctx, device) } @@ -145,8 +144,7 @@ fn with_storage_device(ctx: &mut Context<'_>, op: F) -> anyhow::Result<()> where F: FnOnce(&mut Context<'_>, nitrokey::Storage<'_>) -> anyhow::Result<()>, { - let mut manager = - nitrokey::take().context("Failed to acquire access to Nitrokey device manager")?; + let manager = nitrokey::take().context("Failed to acquire access to Nitrokey device manager")?; set_log_level(ctx); @@ -158,7 +156,7 @@ where ctx.config.model = Some(args::DeviceModel::Storage); } - let device = connect(&mut manager, &ctx.config)?; + let device = connect(&manager, &ctx.config)?; if let nitrokey::DeviceWrapper::Storage(storage) = device { op(ctx, storage) } else { @@ -518,7 +516,7 @@ pub fn list(ctx: &mut Context<'_>, no_connect: bool) -> anyhow::Result<()> { println!(ctx, "No Nitrokey device connected")?; } else { println!(ctx, "USB path\tmodel\tserial number")?; - let mut manager = + let manager = nitrokey::take().context("Failed to acquire access to Nitrokey device manager")?; for device_info in device_infos { diff --git a/src/tests/encrypted.rs b/src/tests/encrypted.rs index 085a5687..a93841d3 100644 --- a/src/tests/encrypted.rs +++ b/src/tests/encrypted.rs @@ -66,7 +66,7 @@ fn encrypted_open_close(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_storage()?; assert!(device.get_storage_status()?.encrypted_volume.active); assert!(!device.get_storage_status()?.hidden_volume.active); @@ -76,7 +76,7 @@ fn encrypted_open_close(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_storage()?; assert!(!device.get_storage_status()?.encrypted_volume.active); assert!(!device.get_storage_status()?.hidden_volume.active); diff --git a/src/tests/hidden.rs b/src/tests/hidden.rs index 1b072e1c..21ffd8b6 100644 --- a/src/tests/hidden.rs +++ b/src/tests/hidden.rs @@ -15,7 +15,7 @@ fn hidden_create_open_close(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_storage()?; assert!(!device.get_storage_status()?.encrypted_volume.active); assert!(device.get_storage_status()?.hidden_volume.active); @@ -25,7 +25,7 @@ fn hidden_create_open_close(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_storage()?; assert!(!device.get_storage_status()?.encrypted_volume.active); assert!(!device.get_storage_status()?.hidden_volume.active); diff --git a/src/tests/lock.rs b/src/tests/lock.rs index 51804863..3d66500a 100644 --- a/src/tests/lock.rs +++ b/src/tests/lock.rs @@ -22,7 +22,7 @@ fn lock_storage(model: nitrokey::Model) -> anyhow::Result<()> { let out = ncli.handle(&["lock"])?; assert!(out.is_empty()); - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_storage()?; assert!(!device.get_storage_status()?.encrypted_volume.active); diff --git a/src/tests/pin.rs b/src/tests/pin.rs index 484e256a..44612885 100644 --- a/src/tests/pin.rs +++ b/src/tests/pin.rs @@ -11,7 +11,7 @@ use super::*; #[test_device] fn unblock(model: nitrokey::Model) -> anyhow::Result<()> { { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_model(model)?; let (device, err) = device.authenticate_user("wrong-pin").unwrap_err(); match err { @@ -24,7 +24,7 @@ fn unblock(model: nitrokey::Model) -> anyhow::Result<()> { let _ = Nitrocli::new().model(model).handle(&["pin", "unblock"])?; { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_model(model)?; assert_eq!(device.get_user_retry_count()?, 3); } @@ -40,7 +40,7 @@ fn set_user(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_model(model)?; let (_, err) = device .authenticate_user(nitrokey::DEFAULT_USER_PIN) @@ -61,7 +61,7 @@ fn set_user(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_model(model)?; let _ = device .authenticate_user(nitrokey::DEFAULT_USER_PIN) diff --git a/src/tests/pws.rs b/src/tests/pws.rs index 7ad1e314..58b0f998 100644 --- a/src/tests/pws.rs +++ b/src/tests/pws.rs @@ -8,7 +8,7 @@ use nitrokey::GetPasswordSafe as _; use super::*; fn clear_pws(model: nitrokey::Model) -> anyhow::Result<()> { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let mut device = manager.connect_model(model)?; let mut pws = device.get_password_safe(nitrokey::DEFAULT_USER_PIN)?; let slots_to_clear = pws @@ -342,7 +342,7 @@ fn add_full(model: nitrokey::Model) -> anyhow::Result<()> { // Fill all PWS slots { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let mut device = manager.connect_model(model)?; let mut pws = device.get_password_safe(nitrokey::DEFAULT_USER_PIN)?; for slot in 0..pws.get_slot_count() { diff --git a/src/tests/reset.rs b/src/tests/reset.rs index 78fd13c7..d3dcdfd2 100644 --- a/src/tests/reset.rs +++ b/src/tests/reset.rs @@ -17,7 +17,7 @@ fn reset(model: nitrokey::Model) -> anyhow::Result<()> { let _ = ncli.handle(&["pin", "set", "admin"])?; { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; // Check that the admin PIN has been changed. let device = manager.connect_model(model)?; let _ = device.authenticate_admin(new_admin_pin).unwrap(); @@ -29,7 +29,7 @@ fn reset(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; // Check that the admin PIN has been reset. let device = manager.connect_model(model)?; let mut device = device @@ -58,7 +58,7 @@ fn reset_only_aes_key(model: nitrokey::Model) -> anyhow::Result<()> { // Add an entry to the PWS { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let mut device = manager.connect_model(model)?; let mut pws = device.get_password_safe(NEW_USER_PIN)?; pws.write_slot(0, NAME, LOGIN, PASSWORD)?; @@ -74,7 +74,7 @@ fn reset_only_aes_key(model: nitrokey::Model) -> anyhow::Result<()> { // been replaced, and that 3) the changed user PIN still works, i.e., // we did not perform a factory reset. { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let mut device = manager.connect_model(model)?; let pws = device.get_password_safe(NEW_USER_PIN)?; let slot = pws.get_slot_unchecked(0)?; diff --git a/src/tests/unencrypted.rs b/src/tests/unencrypted.rs index 89049de8..f4516b32 100644 --- a/src/tests/unencrypted.rs +++ b/src/tests/unencrypted.rs @@ -12,7 +12,7 @@ fn unencrypted_set_read_write(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_storage()?; assert!(device.get_storage_status()?.unencrypted_volume.active); assert!(!device.get_storage_status()?.unencrypted_volume.read_only); @@ -22,7 +22,7 @@ fn unencrypted_set_read_write(model: nitrokey::Model) -> anyhow::Result<()> { assert!(out.is_empty()); { - let mut manager = nitrokey::force_take()?; + let manager = nitrokey::force_take()?; let device = manager.connect_storage()?; assert!(device.get_storage_status()?.unencrypted_volume.active); assert!(device.get_storage_status()?.unencrypted_volume.read_only);