summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWiktor Kwapisiewicz <wiktor@metacode.biz>2020-03-20 14:19:00 +0100
committerWiktor Kwapisiewicz <wiktor@metacode.biz>2020-03-20 15:36:44 +0100
commit8905aabfa245754426bd67ba5319024e61fc39db (patch)
tree2075601dec4dd7de191a288f7d3a042737add751
parenta8298cc84165f573375efc69ccb788da378ca2ab (diff)
openpgp: Allow formatting KeyHandle with x and X.
-rw-r--r--openpgp/src/keyhandle.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/openpgp/src/keyhandle.rs b/openpgp/src/keyhandle.rs
index 22c654d1..80293fe6 100644
--- a/openpgp/src/keyhandle.rs
+++ b/openpgp/src/keyhandle.rs
@@ -30,6 +30,24 @@ impl std::fmt::Display for KeyHandle {
}
}
+impl std::fmt::UpperHex for KeyHandle {
+ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
+ match &self {
+ KeyHandle::Fingerprint(ref fpr) => write!(f, "{:X}", fpr),
+ KeyHandle::KeyID(ref keyid) => write!(f, "{:X}", keyid),
+ }
+ }
+}
+
+impl std::fmt::LowerHex for KeyHandle {
+ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
+ match &self {
+ KeyHandle::Fingerprint(ref fpr) => write!(f, "{:x}", fpr),
+ KeyHandle::KeyID(ref keyid) => write!(f, "{:x}", keyid),
+ }
+ }
+}
+
impl From<KeyID> for KeyHandle {
fn from(i: KeyID) -> Self {
KeyHandle::KeyID(i)
@@ -209,3 +227,41 @@ impl KeyHandle {
== Ordering::Equal
}
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn upper_hex_formatting() {
+ let handle = KeyHandle::Fingerprint(Fingerprint::V4([1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]));
+ assert_eq!(format!("{:X}", handle), "0102030405060708090A0B0C0D0E0F1011121314");
+
+ let handle = KeyHandle::Fingerprint(Fingerprint::Invalid(Box::new([10, 2, 3, 4])));
+ assert_eq!(format!("{:X}", handle), "0A020304");
+
+ let handle = KeyHandle::KeyID(KeyID::V4([10, 2, 3, 4, 5, 6, 7, 8]));
+ assert_eq!(format!("{:X}", handle), "0A02030405060708");
+
+ let handle = KeyHandle::KeyID(KeyID::Invalid(Box::new([10, 2])));
+ assert_eq!(format!("{:X}", handle), "0A02");
+ }
+
+ #[test]
+ fn lower_hex_formatting() {
+ let handle = KeyHandle::Fingerprint(Fingerprint::V4([1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]));
+ assert_eq!(format!("{:x}", handle), "0102030405060708090a0b0c0d0e0f1011121314");
+
+ let handle = KeyHandle::Fingerprint(Fingerprint::Invalid(Box::new([10, 2, 3, 4])));
+ assert_eq!(format!("{:x}", handle), "0a020304");
+
+ let handle = KeyHandle::KeyID(KeyID::V4([10, 2, 3, 4, 5, 6, 7, 8]));
+ assert_eq!(format!("{:x}", handle), "0a02030405060708");
+
+ let handle = KeyHandle::KeyID(KeyID::Invalid(Box::new([10, 2])));
+ assert_eq!(format!("{:x}", handle), "0a02");
+ }
+
+}