diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/device.rs | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/src/device.rs b/src/device.rs index ee8e31c..f247f58 100644 --- a/src/device.rs +++ b/src/device.rs @@ -1170,6 +1170,27 @@ impl Storage {      pub fn wink(&self) -> Result<(), CommandError> {          get_command_result(unsafe { nitrokey_sys::NK_wink() })      } + +    /// Exports the firmware to the unencrypted volume. +    /// +    /// This command requires the admin PIN.  The unencrypted volume must be in read-write mode +    /// when this command is executed.  Otherwise, it will still return `Ok` but not write the +    /// firmware. +    /// +    /// This command unmounts the unencrypted volume if it has been mounted, so all buffers should +    /// be flushed.  The firmware is written to the `firmware.bin` file on the unencrypted volume. +    /// +    /// # Errors +    /// +    /// - [`InvalidString`][] if one of the provided passwords contains a null byte +    /// - [`WrongPassword`][] if the admin password is wrong +    /// +    /// [`InvalidString`]: enum.CommandError.html#variant.InvalidString +    /// [`WrongPassword`]: enum.CommandError.html#variant.WrongPassword +    pub fn export_firmware(&self, admin_pin: &str) -> Result<(), CommandError> { +        let admin_pin_string = get_cstring(admin_pin)?; +        get_command_result(unsafe { nitrokey_sys::NK_export_firmware(admin_pin_string.as_ptr()) }) +    }  }  impl Drop for Storage {  | 
