From 11c93d6421e9851dee26440cdac6c55e65782e13 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Sat, 30 Nov 2019 22:01:22 +0000 Subject: [PATCH] Inline SlotId constants --- src/consts.rs | 51 ----------------- src/key.rs | 150 +++++++++++++++++++++++++------------------------- 2 files changed, 75 insertions(+), 126 deletions(-) diff --git a/src/consts.rs b/src/consts.rs index ab903e7..2988342 100644 --- a/src/consts.rs +++ b/src/consts.rs @@ -137,72 +137,21 @@ pub const YKPIV_CCCID_SIZE: usize = 14; pub const YKPIV_CERTINFO_UNCOMPRESSED: u8 = 0; pub const YKPIV_CERTINFO_GZIP: u8 = 1; -pub const YKPIV_KEY_AUTHENTICATION: u8 = 0x9a; pub const YKPIV_KEY_CARDMGM: u8 = 0x9b; -pub const YKPIV_KEY_SIGNATURE: u8 = 0x9c; -pub const YKPIV_KEY_KEYMGM: u8 = 0x9d; -pub const YKPIV_KEY_CARDAUTH: u8 = 0x9e; -pub const YKPIV_KEY_RETIRED1: u8 = 0x82; -pub const YKPIV_KEY_RETIRED2: u8 = 0x83; -pub const YKPIV_KEY_RETIRED3: u8 = 0x84; -pub const YKPIV_KEY_RETIRED4: u8 = 0x85; -pub const YKPIV_KEY_RETIRED5: u8 = 0x86; -pub const YKPIV_KEY_RETIRED6: u8 = 0x87; -pub const YKPIV_KEY_RETIRED7: u8 = 0x88; -pub const YKPIV_KEY_RETIRED8: u8 = 0x89; -pub const YKPIV_KEY_RETIRED9: u8 = 0x8a; -pub const YKPIV_KEY_RETIRED10: u8 = 0x8b; -pub const YKPIV_KEY_RETIRED11: u8 = 0x8c; -pub const YKPIV_KEY_RETIRED12: u8 = 0x8d; -pub const YKPIV_KEY_RETIRED13: u8 = 0x8e; -pub const YKPIV_KEY_RETIRED14: u8 = 0x8f; -pub const YKPIV_KEY_RETIRED15: u8 = 0x90; -pub const YKPIV_KEY_RETIRED16: u8 = 0x91; -pub const YKPIV_KEY_RETIRED17: u8 = 0x92; -pub const YKPIV_KEY_RETIRED18: u8 = 0x93; -pub const YKPIV_KEY_RETIRED19: u8 = 0x94; -pub const YKPIV_KEY_RETIRED20: u8 = 0x95; -pub const YKPIV_KEY_ATTESTATION: u8 = 0xf9; pub const YKPIV_OBJ_CAPABILITY: u32 = 0x005f_c107; pub const YKPIV_OBJ_CHUID: u32 = 0x005f_c102; -pub const YKPIV_OBJ_AUTHENTICATION: u32 = 0x005f_c105; // cert for 9a key pub const YKPIV_OBJ_FINGERPRINTS: u32 = 0x005f_c103; pub const YKPIV_OBJ_SECURITY: u32 = 0x005f_c106; pub const YKPIV_OBJ_FACIAL: u32 = 0x005f_c108; pub const YKPIV_OBJ_PRINTED: u32 = 0x005f_c109; -pub const YKPIV_OBJ_SIGNATURE: u32 = 0x005f_c10a; // cert for 9c key -pub const YKPIV_OBJ_KEY_MANAGEMENT: u32 = 0x005f_c10b; // cert for 9d key -pub const YKPIV_OBJ_CARD_AUTH: u32 = 0x005f_c101; // cert for 9e key pub const YKPIV_OBJ_DISCOVERY: u32 = 0x7e; pub const YKPIV_OBJ_KEY_HISTORY: u32 = 0x005f_c10c; pub const YKPIV_OBJ_IRIS: u32 = 0x005f_c121; -pub const YKPIV_OBJ_RETIRED1: u32 = 0x005f_c10d; -pub const YKPIV_OBJ_RETIRED2: u32 = 0x005f_c10e; -pub const YKPIV_OBJ_RETIRED3: u32 = 0x005f_c10f; -pub const YKPIV_OBJ_RETIRED4: u32 = 0x005f_c110; -pub const YKPIV_OBJ_RETIRED5: u32 = 0x005f_c111; -pub const YKPIV_OBJ_RETIRED6: u32 = 0x005f_c112; -pub const YKPIV_OBJ_RETIRED7: u32 = 0x005f_c113; -pub const YKPIV_OBJ_RETIRED8: u32 = 0x005f_c114; -pub const YKPIV_OBJ_RETIRED9: u32 = 0x005f_c115; -pub const YKPIV_OBJ_RETIRED10: u32 = 0x005f_c116; -pub const YKPIV_OBJ_RETIRED11: u32 = 0x005f_c117; -pub const YKPIV_OBJ_RETIRED12: u32 = 0x005f_c118; -pub const YKPIV_OBJ_RETIRED13: u32 = 0x005f_c119; -pub const YKPIV_OBJ_RETIRED14: u32 = 0x005f_c11a; -pub const YKPIV_OBJ_RETIRED15: u32 = 0x005f_c11b; -pub const YKPIV_OBJ_RETIRED16: u32 = 0x005f_c11c; -pub const YKPIV_OBJ_RETIRED17: u32 = 0x005f_c11d; -pub const YKPIV_OBJ_RETIRED18: u32 = 0x005f_c11e; -pub const YKPIV_OBJ_RETIRED19: u32 = 0x005f_c11f; -pub const YKPIV_OBJ_RETIRED20: u32 = 0x005f_c120; - // Internal object IDs pub const YKPIV_OBJ_ADMIN_DATA: u32 = 0x005f_ff00; -pub const YKPIV_OBJ_ATTESTATION: u32 = 0x005f_ff01; pub const YKPIV_OBJ_MSCMAP: u32 = 0x005f_ff10; pub const YKPIV_OBJ_MSROOTS1: u32 = 0x005f_ff11; pub const YKPIV_OBJ_MSROOTS2: u32 = 0x005f_ff12; diff --git a/src/key.rs b/src/key.rs index 59cd178..96392c7 100644 --- a/src/key.rs +++ b/src/key.rs @@ -97,11 +97,11 @@ impl TryFrom for SlotId { fn try_from(value: u8) -> Result { match value { - YKPIV_KEY_AUTHENTICATION => Ok(SlotId::Authentication), - YKPIV_KEY_SIGNATURE => Ok(SlotId::Signature), - YKPIV_KEY_KEYMGM => Ok(SlotId::KeyManagement), - YKPIV_KEY_CARDAUTH => Ok(SlotId::CardAuthentication), - YKPIV_KEY_ATTESTATION => Ok(SlotId::Attestation), + 0x9a => Ok(SlotId::Authentication), + 0x9c => Ok(SlotId::Signature), + 0x9d => Ok(SlotId::KeyManagement), + 0x9e => Ok(SlotId::CardAuthentication), + 0xf9 => Ok(SlotId::Attestation), _ => RetiredSlotId::try_from(value).map(SlotId::Retired), } } @@ -110,12 +110,12 @@ impl TryFrom for SlotId { impl From for u8 { fn from(slot: SlotId) -> u8 { match slot { - SlotId::Authentication => YKPIV_KEY_AUTHENTICATION, - SlotId::Signature => YKPIV_KEY_SIGNATURE, - SlotId::KeyManagement => YKPIV_KEY_KEYMGM, - SlotId::CardAuthentication => YKPIV_KEY_CARDAUTH, + SlotId::Authentication => 0x9a, + SlotId::Signature => 0x9c, + SlotId::KeyManagement => 0x9d, + SlotId::CardAuthentication => 0x9e, SlotId::Retired(retired) => retired.into(), - SlotId::Attestation => YKPIV_KEY_ATTESTATION, + SlotId::Attestation => 0xf9, } } } @@ -124,12 +124,12 @@ impl SlotId { /// Returns the [`ObjectId`] that corresponds to a given [`SlotId`]. pub(crate) fn object_id(self) -> ObjectId { match self { - SlotId::Authentication => YKPIV_OBJ_AUTHENTICATION, - SlotId::Signature => YKPIV_OBJ_SIGNATURE, - SlotId::KeyManagement => YKPIV_OBJ_KEY_MANAGEMENT, - SlotId::CardAuthentication => YKPIV_OBJ_CARD_AUTH, + SlotId::Authentication => 0x005f_c105, + SlotId::Signature => 0x005f_c10a, + SlotId::KeyManagement => 0x005f_c10b, + SlotId::CardAuthentication => 0x005f_c101, SlotId::Retired(retired) => retired.object_id(), - SlotId::Attestation => YKPIV_OBJ_ATTESTATION, + SlotId::Attestation => 0x005f_ff01, } } } @@ -165,26 +165,26 @@ impl TryFrom for RetiredSlotId { fn try_from(value: u8) -> Result { match value { - YKPIV_KEY_RETIRED1 => Ok(RetiredSlotId::R1), - YKPIV_KEY_RETIRED2 => Ok(RetiredSlotId::R2), - YKPIV_KEY_RETIRED3 => Ok(RetiredSlotId::R3), - YKPIV_KEY_RETIRED4 => Ok(RetiredSlotId::R4), - YKPIV_KEY_RETIRED5 => Ok(RetiredSlotId::R5), - YKPIV_KEY_RETIRED6 => Ok(RetiredSlotId::R6), - YKPIV_KEY_RETIRED7 => Ok(RetiredSlotId::R7), - YKPIV_KEY_RETIRED8 => Ok(RetiredSlotId::R8), - YKPIV_KEY_RETIRED9 => Ok(RetiredSlotId::R9), - YKPIV_KEY_RETIRED10 => Ok(RetiredSlotId::R10), - YKPIV_KEY_RETIRED11 => Ok(RetiredSlotId::R11), - YKPIV_KEY_RETIRED12 => Ok(RetiredSlotId::R12), - YKPIV_KEY_RETIRED13 => Ok(RetiredSlotId::R13), - YKPIV_KEY_RETIRED14 => Ok(RetiredSlotId::R14), - YKPIV_KEY_RETIRED15 => Ok(RetiredSlotId::R15), - YKPIV_KEY_RETIRED16 => Ok(RetiredSlotId::R16), - YKPIV_KEY_RETIRED17 => Ok(RetiredSlotId::R17), - YKPIV_KEY_RETIRED18 => Ok(RetiredSlotId::R18), - YKPIV_KEY_RETIRED19 => Ok(RetiredSlotId::R19), - YKPIV_KEY_RETIRED20 => Ok(RetiredSlotId::R20), + 0x82 => Ok(RetiredSlotId::R1), + 0x83 => Ok(RetiredSlotId::R2), + 0x84 => Ok(RetiredSlotId::R3), + 0x85 => Ok(RetiredSlotId::R4), + 0x86 => Ok(RetiredSlotId::R5), + 0x87 => Ok(RetiredSlotId::R6), + 0x88 => Ok(RetiredSlotId::R7), + 0x89 => Ok(RetiredSlotId::R8), + 0x8a => Ok(RetiredSlotId::R9), + 0x8b => Ok(RetiredSlotId::R10), + 0x8c => Ok(RetiredSlotId::R11), + 0x8d => Ok(RetiredSlotId::R12), + 0x8e => Ok(RetiredSlotId::R13), + 0x8f => Ok(RetiredSlotId::R14), + 0x90 => Ok(RetiredSlotId::R15), + 0x91 => Ok(RetiredSlotId::R16), + 0x92 => Ok(RetiredSlotId::R17), + 0x93 => Ok(RetiredSlotId::R18), + 0x94 => Ok(RetiredSlotId::R19), + 0x95 => Ok(RetiredSlotId::R20), _ => Err(Error::InvalidObject), } } @@ -193,26 +193,26 @@ impl TryFrom for RetiredSlotId { impl From for u8 { fn from(slot: RetiredSlotId) -> u8 { match slot { - RetiredSlotId::R1 => YKPIV_KEY_RETIRED1, - RetiredSlotId::R2 => YKPIV_KEY_RETIRED2, - RetiredSlotId::R3 => YKPIV_KEY_RETIRED3, - RetiredSlotId::R4 => YKPIV_KEY_RETIRED4, - RetiredSlotId::R5 => YKPIV_KEY_RETIRED5, - RetiredSlotId::R6 => YKPIV_KEY_RETIRED6, - RetiredSlotId::R7 => YKPIV_KEY_RETIRED7, - RetiredSlotId::R8 => YKPIV_KEY_RETIRED8, - RetiredSlotId::R9 => YKPIV_KEY_RETIRED9, - RetiredSlotId::R10 => YKPIV_KEY_RETIRED10, - RetiredSlotId::R11 => YKPIV_KEY_RETIRED11, - RetiredSlotId::R12 => YKPIV_KEY_RETIRED12, - RetiredSlotId::R13 => YKPIV_KEY_RETIRED13, - RetiredSlotId::R14 => YKPIV_KEY_RETIRED14, - RetiredSlotId::R15 => YKPIV_KEY_RETIRED15, - RetiredSlotId::R16 => YKPIV_KEY_RETIRED16, - RetiredSlotId::R17 => YKPIV_KEY_RETIRED17, - RetiredSlotId::R18 => YKPIV_KEY_RETIRED18, - RetiredSlotId::R19 => YKPIV_KEY_RETIRED19, - RetiredSlotId::R20 => YKPIV_KEY_RETIRED20, + RetiredSlotId::R1 => 0x82, + RetiredSlotId::R2 => 0x83, + RetiredSlotId::R3 => 0x84, + RetiredSlotId::R4 => 0x85, + RetiredSlotId::R5 => 0x86, + RetiredSlotId::R6 => 0x87, + RetiredSlotId::R7 => 0x88, + RetiredSlotId::R8 => 0x89, + RetiredSlotId::R9 => 0x8a, + RetiredSlotId::R10 => 0x8b, + RetiredSlotId::R11 => 0x8c, + RetiredSlotId::R12 => 0x8d, + RetiredSlotId::R13 => 0x8e, + RetiredSlotId::R14 => 0x8f, + RetiredSlotId::R15 => 0x90, + RetiredSlotId::R16 => 0x91, + RetiredSlotId::R17 => 0x92, + RetiredSlotId::R18 => 0x93, + RetiredSlotId::R19 => 0x94, + RetiredSlotId::R20 => 0x95, } } } @@ -221,26 +221,26 @@ impl RetiredSlotId { /// Returns the [`ObjectId`] that corresponds to a given [`RetiredSlotId`]. pub(crate) fn object_id(self) -> ObjectId { match self { - RetiredSlotId::R1 => YKPIV_OBJ_RETIRED1, - RetiredSlotId::R2 => YKPIV_OBJ_RETIRED2, - RetiredSlotId::R3 => YKPIV_OBJ_RETIRED3, - RetiredSlotId::R4 => YKPIV_OBJ_RETIRED4, - RetiredSlotId::R5 => YKPIV_OBJ_RETIRED5, - RetiredSlotId::R6 => YKPIV_OBJ_RETIRED6, - RetiredSlotId::R7 => YKPIV_OBJ_RETIRED7, - RetiredSlotId::R8 => YKPIV_OBJ_RETIRED8, - RetiredSlotId::R9 => YKPIV_OBJ_RETIRED9, - RetiredSlotId::R10 => YKPIV_OBJ_RETIRED10, - RetiredSlotId::R11 => YKPIV_OBJ_RETIRED11, - RetiredSlotId::R12 => YKPIV_OBJ_RETIRED12, - RetiredSlotId::R13 => YKPIV_OBJ_RETIRED13, - RetiredSlotId::R14 => YKPIV_OBJ_RETIRED14, - RetiredSlotId::R15 => YKPIV_OBJ_RETIRED15, - RetiredSlotId::R16 => YKPIV_OBJ_RETIRED16, - RetiredSlotId::R17 => YKPIV_OBJ_RETIRED17, - RetiredSlotId::R18 => YKPIV_OBJ_RETIRED18, - RetiredSlotId::R19 => YKPIV_OBJ_RETIRED19, - RetiredSlotId::R20 => YKPIV_OBJ_RETIRED20, + RetiredSlotId::R1 => 0x005f_c10d, + RetiredSlotId::R2 => 0x005f_c10e, + RetiredSlotId::R3 => 0x005f_c10f, + RetiredSlotId::R4 => 0x005f_c110, + RetiredSlotId::R5 => 0x005f_c111, + RetiredSlotId::R6 => 0x005f_c112, + RetiredSlotId::R7 => 0x005f_c113, + RetiredSlotId::R8 => 0x005f_c114, + RetiredSlotId::R9 => 0x005f_c115, + RetiredSlotId::R10 => 0x005f_c116, + RetiredSlotId::R11 => 0x005f_c117, + RetiredSlotId::R12 => 0x005f_c118, + RetiredSlotId::R13 => 0x005f_c119, + RetiredSlotId::R14 => 0x005f_c11a, + RetiredSlotId::R15 => 0x005f_c11b, + RetiredSlotId::R16 => 0x005f_c11c, + RetiredSlotId::R17 => 0x005f_c11d, + RetiredSlotId::R18 => 0x005f_c11e, + RetiredSlotId::R19 => 0x005f_c11f, + RetiredSlotId::R20 => 0x005f_c120, } } }