summaryrefslogtreecommitdiffstats
path: root/openpgp/src/types
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2023-07-03 12:50:25 +0200
committerJustus Winter <justus@sequoia-pgp.org>2023-07-18 17:06:52 +0200
commitbe437462e2bdc774d586c396b116b23b7536fd56 (patch)
tree0c8cadd7291a9019af1242cc650f76179b864eae /openpgp/src/types
parent3723a190585fec8573713ac2378001a442bb95b7 (diff)
openpgp: Rework Bitfield::padding_len.
Diffstat (limited to 'openpgp/src/types')
-rw-r--r--openpgp/src/types/bitfield.rs14
-rw-r--r--openpgp/src/types/features.rs3
-rw-r--r--openpgp/src/types/key_flags.rs3
-rw-r--r--openpgp/src/types/server_preferences.rs3
4 files changed, 7 insertions, 16 deletions
diff --git a/openpgp/src/types/bitfield.rs b/openpgp/src/types/bitfield.rs
index af05d24f..ea0c7c21 100644
--- a/openpgp/src/types/bitfield.rs
+++ b/openpgp/src/types/bitfield.rs
@@ -35,16 +35,10 @@ impl Bitfield {
.filter_map(|(i, v)| if v { Some(i) } else { None })
}
- pub fn padding_len(&self) -> usize {
- let mut padding = 0;
- for i in (0..self.raw.len()).rev() {
- if self.raw[i] == 0 {
- padding += 1;
- } else {
- break;
- }
- }
- padding
+ /// Returns the number of trailing zero bytes.
+ pub fn padding_bytes(&self) -> Option<std::num::NonZeroUsize> {
+ std::num::NonZeroUsize::new(
+ self.raw.iter().rev().take_while(|b| **b == 0).count())
}
/// Compares two feature sets for semantic equality.
diff --git a/openpgp/src/types/features.rs b/openpgp/src/types/features.rs
index 2a3689ce..29fb8560 100644
--- a/openpgp/src/types/features.rs
+++ b/openpgp/src/types/features.rs
@@ -85,8 +85,7 @@ impl fmt::Debug for Features {
}
// Mention any padding, as equality is sensitive to this.
- let padding = self.0.padding_len();
- if padding > 0 {
+ if let Some(padding) = self.0.padding_bytes() {
if need_comma { f.write_str(", ")?; }
write!(f, "+padding({} bytes)", padding)?;
}
diff --git a/openpgp/src/types/key_flags.rs b/openpgp/src/types/key_flags.rs
index 5c3a8945..e2948722 100644
--- a/openpgp/src/types/key_flags.rs
+++ b/openpgp/src/types/key_flags.rs
@@ -95,8 +95,7 @@ impl fmt::Debug for KeyFlags {
}
// Mention any padding, as equality is sensitive to this.
- let padding = self.0.padding_len();
- if padding > 0 {
+ if let Some(padding) = self.0.padding_bytes() {
if need_comma { f.write_str(", ")?; }
write!(f, "+padding({} bytes)", padding)?;
}
diff --git a/openpgp/src/types/server_preferences.rs b/openpgp/src/types/server_preferences.rs
index cd3d10aa..6428196f 100644
--- a/openpgp/src/types/server_preferences.rs
+++ b/openpgp/src/types/server_preferences.rs
@@ -78,8 +78,7 @@ impl fmt::Debug for KeyServerPreferences {
}
// Mention any padding, as equality is sensitive to this.
- let padding = self.0.padding_len();
- if padding > 0 {
+ if let Some(padding) = self.0.padding_bytes() {
if need_comma { f.write_str(", ")?; }
write!(f, "+padding({} bytes)", padding)?;
}