Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow roundtripping OpenPGP packet format #1642

Closed
wants to merge 2 commits into from

Conversation

vanitasvitae
Copy link
Contributor

@vanitasvitae vanitasvitae commented Apr 29, 2024

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
Copy link
Contributor

dghgit commented May 22, 2024

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
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
Copy link
Contributor Author

Rebased and fixed.

@dghgit
Copy link
Contributor

dghgit commented May 22, 2024

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.

None yet

2 participants