Skip to content

Allow roundtripping OpenPGP packet format - #1642

Closed
vanitasvitae wants to merge 2 commits into
bcgit:mainfrom
pgpainless:roundtripPacketFormat
Closed

Allow roundtripping OpenPGP packet format#1642
vanitasvitae wants to merge 2 commits into
bcgit:mainfrom
pgpainless:roundtripPacketFormat

Conversation

@vanitasvitae

@vanitasvitae vanitasvitae commented Apr 29, 2024

Copy link
Copy Markdown
Contributor

The OpenPGP protocol defines different formats to encode packet lengths.
BC supports reading and writing both packet format types, though it is not always clear, how to chose, which format to use.

This PR improves the status quo by defining an enum PacketFormat consisting of 3 options:

  • LEGACY: Always encode packets using the old legacy packet format
  • CURRENT: Always encode packets using the current (new) packet format
  • ROUNDTRIP: Encode packets that were read from an InputStream the same way they were originally encoded.

Further, packets now contain a new flag remembering the packet format they were originally encoded in.
This, and the fact that there is a new BCPGOutputStream constructor allowing the user to chose which format encoding strategy to use allows to round-trip packet streams without changing the packet format.

getEncoded() now round-trips the original packet format, but the user can decide, in which format they want to retrieve the packet encoding by calling e.g. getEncoded(PacketFormat.LEGACY).

The changes were introduced in a backwards compatible way and the tests still run successful.

@vanitasvitae
vanitasvitae force-pushed the roundtripPacketFormat branch 2 times, most recently from c382827 to 06ef4f6 Compare May 7, 2024 08:01
@dghgit

dghgit commented May 22, 2024

Copy link
Copy Markdown
Contributor

I'm seeing a failure in OnePassSignaturePacketTest, would you take a look? Getting:

Expected:
00000000 90 0d 03 00 08 01 00 00 00 00 00 00 00 7b 00

Got:
00000000 c4 0d 03 00 08 01 00 00 00 00 00 00 00 7b 00

Looks like something may not be fully round-tripping.

Thanks.

@vanitasvitae

Copy link
Copy Markdown
Contributor Author

Ah, probably because you locally applied this PR over #1634
I did not yet update this PR based on that patch :D

Will update :)

@vanitasvitae
vanitasvitae force-pushed the roundtripPacketFormat branch from 06ef4f6 to 1bca359 Compare May 22, 2024 10:55
@vanitasvitae

Copy link
Copy Markdown
Contributor Author

Rebased and fixed.

@dghgit

dghgit commented May 22, 2024

Copy link
Copy Markdown
Contributor

Thanks, now passes. Merged!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants