1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
//! U2F Authenticator API
mod authenticate;
mod commands;
mod register;
mod version;
pub use {authenticate::*, commands::*, register::*, version::*};
/// ISO 7816-4 Status Words (`SW_*`)
///
/// Values are taken from <https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html#h3_status-codes>
#[repr(u16)]
#[derive(Debug)]
pub enum ResponseStatusWords {
/// The command completed successfully without error
NoError = 0x9000,
/// The request was rejected due to test-of-user-presence being required.
ConditionsNotSatisfied = 0x6985,
/// The request was rejected due to an invalid key handle.
WrongData = 0x6A80,
/// The length of the request was invalid.
WrongLength = 0x6700,
/// The Class byte of the request is not supported. (i.e. CLA != 0)
ClaNotSupported = 0x6E00,
/// The Instruction of the request is not supported.
InsNotSupported = 0x6D00,
}
impl From<ResponseStatusWords> for u16 {
#[allow(clippy::as_conversions)]
fn from(sw: ResponseStatusWords) -> Self {
sw as u16
}
}
impl ResponseStatusWords {
/// Transform a `ResponseStatusWords` to a `u16` as postfix without needing to specify the type.
pub fn as_primitive(self) -> u16 {
self.into()
}
}