diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2019-01-03 17:04:50 +0000 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2019-01-03 18:06:30 +0100 |
commit | 616f84c13a4e676d3e2f870533fb1b8778c5f614 (patch) | |
tree | d90e68cbc631280e45adf1e7cb04139693213f06 /tests | |
parent | 0a7a62c9af15b11e5dbfad1900ac89924457b272 (diff) | |
download | nitrokey-rs-616f84c13a4e676d3e2f870533fb1b8778c5f614.tar.gz nitrokey-rs-616f84c13a4e676d3e2f870533fb1b8778c5f614.tar.bz2 |
Add Device::build_aes_key method
This patch adds the build_aes_key method to the Device trait that uses
the NK_build_aes_key function to build new AES keys on the device. This
effectively resets the password safe and the encrypted storage. It is
unclear whether other data (e. g. the one-time passwords) are affected
too.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/device.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/device.rs b/tests/device.rs index 363b8d8..06e014e 100644 --- a/tests/device.rs +++ b/tests/device.rs @@ -347,6 +347,29 @@ fn factory_reset() { } #[test] +#[cfg_attr(not(any(feature = "test-pro", feature = "test-storage")), ignore)] +fn build_aes_key() { + let device = Target::connect().unwrap(); + + let pws = device.get_password_safe(USER_PASSWORD).unwrap(); + assert_eq!(Ok(()), pws.write_slot(0, "test", "testlogin", "testpw")); + drop(pws); + + assert_eq!( + Err(CommandError::WrongPassword), + device.build_aes_key(USER_PASSWORD) + ); + assert_eq!(Ok(()), device.build_aes_key(ADMIN_PASSWORD)); + + let device = device.authenticate_admin(ADMIN_PASSWORD).unwrap().device(); + + let pws = device.get_password_safe(USER_PASSWORD).unwrap(); + assert_ne!("test".to_string(), pws.get_slot_name(0).unwrap()); + assert_ne!("testlogin".to_string(), pws.get_slot_login(0).unwrap()); + assert_ne!("testpw".to_string(), pws.get_slot_password(0).unwrap()); +} + +#[test] #[cfg_attr(not(feature = "test-storage"), ignore)] fn change_update_pin() { let device = Storage::connect().unwrap(); |