From aa7e617e4a6aee954d30651d7ba9e6b9c51e57c0 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 14 Mar 2023 14:18:14 +0100 Subject: openpgp: Simplify trimming of leading zeros. --- openpgp/src/crypto/mpi.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/openpgp/src/crypto/mpi.rs b/openpgp/src/crypto/mpi.rs index 7cc94206..e9b65bf6 100644 --- a/openpgp/src/crypto/mpi.rs +++ b/openpgp/src/crypto/mpi.rs @@ -51,20 +51,17 @@ impl From> for MPI { } impl MPI { + /// Trims leading zero octets. + fn trim_leading_zeros(v: &[u8]) -> &[u8] { + let offset = v.iter().take_while(|&&o| o == 0).count(); + &v[offset..] + } + /// Creates a new MPI. /// /// This function takes care of removing leading zeros. pub fn new(value: &[u8]) -> Self { - let mut leading_zeros = 0; - for b in value { - leading_zeros += b.leading_zeros() as usize; - if *b != 0 { - break; - } - } - - let offset = leading_zeros / 8; - let value = Vec::from(&value[offset..]).into_boxed_slice(); + let value = Self::trim_leading_zeros(value).to_vec().into_boxed_slice(); MPI { value, -- cgit v1.2.3