Expand description
Provides access to a Nitrokey device using the native libnitrokey API.
Usage
Operations on the Nitrokey require different authentication levels. Some operations can be
performed without authentication, some require user access, and some require admin access.
This is modelled using the types User
and Admin
.
Use connect
to connect to any Nitrokey device. The method will return a
DeviceWrapper
that abstracts over the supported Nitrokey devices. You can also use
Pro::connect
or Storage::connect
to connect to a specific device.
You can then use authenticate_user
or authenticate_admin
to get an authenticated
device that can perform operations that require authentication. You can use device
to go
back to the unauthenticated device.
This makes sure that you can only execute a command if you have the required access rights.
Otherwise, your code will not compile. The only exception are the methods to generate one-time
passwords – get_hotp_code
and get_totp_code
. Depending on the stick configuration,
these operations are available without authentication or with user authentication.
Examples
Connect to any Nitrokey and print its serial number:
use nitrokey::Device;
let device = nitrokey::connect()?;
println!("{}", device.get_serial_number()?);
Configure an HOTP slot:
use nitrokey::{Authenticate, ConfigureOtp, OtpMode, OtpSlotData};
let device = nitrokey::connect()?;
let slot_data = OtpSlotData::new(1, "test", "01234567890123456689", OtpMode::SixDigits);
match device.authenticate_admin("12345678") {
Ok(admin) => {
match admin.write_hotp_slot(slot_data, 0) {
Ok(()) => println!("Successfully wrote slot."),
Err(err) => println!("Could not write slot: {}", err),
}
},
Err((_, err)) => println!("Could not authenticate as admin: {}", err),
}
Generate an HOTP one-time password:
use nitrokey::{Device, GenerateOtp};
let device = nitrokey::connect()?;
match device.get_hotp_code(1) {
Ok(code) => println!("Generated HOTP code: {}", code),
Err(err) => println!("Could not generate HOTP code: {}", err),
}
Structs
Enums
Constants
PasswordSafe
.Traits
PasswordSafe
.Functions
true
is equivalent to setting the
log level to Debug
; calling it with false
is equivalent to the log level Error
(see
set_log_level
).