diff --git a/src/cccid.rs b/src/cccid.rs index 7db8aba..dbee031 100644 --- a/src/cccid.rs +++ b/src/cccid.rs @@ -48,27 +48,29 @@ const CCC_TMPL: &[u8] = &[ 0x00, 0xfe, 0x00, ]; -/// Cardholder Capability Container (CCC) Identifier card ID +/// Cardholder Capability Container (CCC) Identifier Card ID #[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub struct CccCardId(pub [u8; YKPIV_CCCID_SIZE]); +pub struct CardId(pub [u8; YKPIV_CCCID_SIZE]); + +impl CardId { + /// Generate a random CCC Card ID + pub fn generate() -> Result { + let mut id = [0u8; YKPIV_CCCID_SIZE]; + getrandom(&mut id).map_err(|_| Error::RandomnessError)?; + Ok(Self(id)) + } +} /// Cardholder Capability Container (CCC) Identifier #[derive(Copy, Clone)] pub struct CCC(pub [u8; YKPIV_CCC_SIZE]); impl CCC { - /// Return CardId component of CHUID - pub fn cccid(&self) -> Result { + /// Return CardId component of CCC + pub fn cccid(&self) -> Result { let mut cccid = [0u8; YKPIV_CCCID_SIZE]; cccid.copy_from_slice(&self.0[CCC_ID_OFFS..(CCC_ID_OFFS + YKPIV_CCCID_SIZE)]); - Ok(CccCardId(cccid)) - } - - /// Generate a random CCCID - pub fn generate() -> Result { - let mut id = [0u8; YKPIV_CCCID_SIZE]; - getrandom(&mut id).map_err(|_| Error::RandomnessError)?; - Ok(CccCardId(id)) + Ok(CardId(cccid)) } /// Get Cardholder Capability Container (CCC) ID @@ -82,7 +84,7 @@ impl CCC { let mut ccc = [0u8; YKPIV_CCC_SIZE]; ccc.copy_from_slice(&response[0..YKPIV_CCC_SIZE]); - Ok(CCC { 0: ccc }) + Ok(Self(ccc)) } /// Get Cardholder Capability Container (CCC) ID diff --git a/src/chuid.rs b/src/chuid.rs index 9f3c803..b460b0d 100644 --- a/src/chuid.rs +++ b/src/chuid.rs @@ -57,7 +57,16 @@ const CHUID_TMPL: &[u8] = &[ /// Cardholder Unique Identifier (CHUID) Card UUID/GUID value #[derive(Copy, Clone, Debug)] -pub struct ChuidUuid(pub [u8; YKPIV_CARDID_SIZE]); +pub struct Uuid(pub [u8; YKPIV_CARDID_SIZE]); + +impl Uuid { + /// Generate a random Cardholder Unique Identifier (CHUID) + pub fn generate() -> Result { + let mut id = [0u8; YKPIV_CARDID_SIZE]; + getrandom(&mut id).map_err(|_| Error::RandomnessError)?; + Ok(Self(id)) + } +} /// Cardholder Unique Identifier (CHUID) #[derive(Copy, Clone)] @@ -87,13 +96,6 @@ impl CHUID { Ok(expiration) } - /// Generate a random Cardholder Unique Identifier (CHUID) - pub fn generate() -> Result { - let mut id = [0u8; YKPIV_CARDID_SIZE]; - getrandom(&mut id).map_err(|_| Error::RandomnessError)?; - Ok(ChuidUuid(id)) - } - /// Get Cardholder Unique Identifier (CHUID) pub fn get(yubikey: &mut YubiKey) -> Result { let txn = yubikey.begin_transaction()?; diff --git a/src/yubikey.rs b/src/yubikey.rs index 177fb4a..4dab5e3 100644 --- a/src/yubikey.rs +++ b/src/yubikey.rs @@ -155,6 +155,9 @@ impl YubiKey { Err(Error::GenericError) } + /// Open a connection to a YubiKey with the given serial number. + + /// Reconnect to a YubiKey #[cfg(feature = "untested")] pub fn reconnect(&mut self) -> Result<(), Error> {