summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2021-04-07 15:15:06 +0200
committerJustus Winter <justus@sequoia-pgp.org>2021-04-08 12:56:15 +0200
commit6432f9dd143e10bb1475df059d9f275981010fad (patch)
tree0551d39e2c966bac4868a9136f72cc71c735ab16
parent6f677cf5d3110ae9e7b062de7bd7474c3c409764 (diff)
openpgp: Improve Packet::serialized_len.
- Use NetLength::gross_len that is both shorter and smart enough not to compute the net length twice.
-rw-r--r--openpgp/src/serialize.rs46
1 files changed, 2 insertions, 44 deletions
diff --git a/openpgp/src/serialize.rs b/openpgp/src/serialize.rs
index 2b7ca32d..8ffdf94a 100644
--- a/openpgp/src/serialize.rs
+++ b/openpgp/src/serialize.rs
@@ -2668,28 +2668,7 @@ impl NetLength for Packet {
impl SerializeInto for Packet {}
impl MarshalInto for Packet {
fn serialized_len(&self) -> usize {
- (match self {
- &Packet::Unknown(ref p) => p.serialized_len(),
- &Packet::Signature(ref p) => p.serialized_len(),
- &Packet::OnePassSig(ref p) => p.serialized_len(),
- &Packet::PublicKey(ref p) => p.serialized_len(),
- &Packet::PublicSubkey(ref p) => p.serialized_len(),
- &Packet::SecretKey(ref p) => p.serialized_len(),
- &Packet::SecretSubkey(ref p) => p.serialized_len(),
- &Packet::Marker(ref p) => p.serialized_len(),
- &Packet::Trust(ref p) => p.serialized_len(),
- &Packet::UserID(ref p) => p.serialized_len(),
- &Packet::UserAttribute(ref p) => p.serialized_len(),
- &Packet::Literal(ref p) => p.serialized_len(),
- &Packet::CompressedData(ref p) => p.serialized_len(),
- &Packet::PKESK(ref p) => p.serialized_len(),
- &Packet::SKESK(ref p) => p.serialized_len(),
- &Packet::SEIP(ref p) => p.serialized_len(),
- &Packet::MDC(ref p) => p.serialized_len(),
- &Packet::AED(ref p) => p.serialized_len(),
- })
- + 1 // CTB.
- + BodyLength::Full(self.net_len() as u32).serialized_len()
+ self.gross_len()
}
fn serialize_into(&self, buf: &mut [u8]) -> Result<usize> {
@@ -2894,28 +2873,7 @@ impl<'a> NetLength for PacketRef<'a> {
impl<'a> SerializeInto for PacketRef<'a> {}
impl<'a> MarshalInto for PacketRef<'a> {
fn serialized_len(&self) -> usize {
- (match self {
- PacketRef::Unknown(p) => p.serialized_len(),
- PacketRef::Signature(p) => p.serialized_len(),
- PacketRef::OnePassSig(p) => p.serialized_len(),
- PacketRef::PublicKey(p) => p.serialized_len(),
- PacketRef::PublicSubkey(p) => p.serialized_len(),
- PacketRef::SecretKey(p) => p.serialized_len(),
- PacketRef::SecretSubkey(p) => p.serialized_len(),
- PacketRef::Marker(p) => p.serialized_len(),
- PacketRef::Trust(p) => p.serialized_len(),
- PacketRef::UserID(p) => p.serialized_len(),
- PacketRef::UserAttribute(p) => p.serialized_len(),
- PacketRef::Literal(p) => p.serialized_len(),
- PacketRef::CompressedData(p) => p.serialized_len(),
- PacketRef::PKESK(p) => p.serialized_len(),
- PacketRef::SKESK(p) => p.serialized_len(),
- PacketRef::SEIP(p) => p.serialized_len(),
- PacketRef::MDC(p) => p.serialized_len(),
- PacketRef::AED(p) => p.serialized_len(),
- })
- + 1 // CTB.
- + BodyLength::Full(self.net_len() as u32).serialized_len()
+ self.gross_len()
}
fn serialize_into(&self, buf: &mut [u8]) -> Result<usize> {