From 83de59983f7729d87171579e66fb03082f115f58 Mon Sep 17 00:00:00 2001 From: Ferdinand Linnenberg Date: Fri, 11 Feb 2022 22:10:53 +0100 Subject: [PATCH] Add Display formatter to SlotId (#353) --- src/piv.rs | 16 ++++++++++++++++ tests/integration.rs | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/piv.rs b/src/piv.rs index e64f103..af0a483 100644 --- a/src/piv.rs +++ b/src/piv.rs @@ -57,6 +57,7 @@ use log::{debug, error, warn}; use p256::NistP256; use p384::NistP384; use rsa::{BigUint, RsaPublicKey}; +use std::fmt::{Display, Formatter}; use std::str::FromStr; #[cfg(feature = "untested")] @@ -153,6 +154,15 @@ impl From for u8 { } } +impl Display for SlotId { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match self { + SlotId::Retired(r) => write!(f, "{:?}", r), + _ => write!(f, "{:?}", self), + } + } +} + impl FromStr for SlotId { type Err = Error; @@ -295,6 +305,12 @@ impl From for u8 { } } +impl Display for RetiredSlotId { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "{:?}", self) + } +} + impl RetiredSlotId { /// Returns the [`ObjectId`] that corresponds to a given [`RetiredSlotId`]. pub(crate) fn object_id(self) -> ObjectId { diff --git a/tests/integration.rs b/tests/integration.rs index feb6da1..c2f93d5 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -241,3 +241,36 @@ fn generate_self_signed_ec_cert() { use p256::ecdsa::signature::Verifier; assert!(vk.verify(msg, &sig).is_ok()); } + +#[test] +#[ignore] +fn test_slot_id_display() { + assert_eq!(format!("{}", SlotId::Authentication), "Authentication"); + assert_eq!(format!("{}", SlotId::Signature), "Signature"); + assert_eq!(format!("{}", SlotId::KeyManagement), "KeyManagement"); + assert_eq!( + format!("{}", SlotId::CardAuthentication), + "CardAuthentication" + ); + assert_eq!(format!("{}", SlotId::Attestation), "Attestation"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R1)), "R1"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R2)), "R2"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R3)), "R3"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R4)), "R4"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R5)), "R5"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R6)), "R6"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R7)), "R7"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R8)), "R8"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R9)), "R9"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R10)), "R10"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R11)), "R11"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R12)), "R12"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R13)), "R13"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R14)), "R14"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R15)), "R15"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R16)), "R16"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R17)), "R17"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R18)), "R18"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R19)), "R19"); + assert_eq!(format!("{}", SlotId::Retired(RetiredSlotId::R20)), "R20"); +}