Allow roundtripping OpenPGP packet format - #1642
Closed
vanitasvitae wants to merge 2 commits into
Closed
Conversation
vanitasvitae
force-pushed
the
roundtripPacketFormat
branch
2 times, most recently
from
May 7, 2024 08:01
c382827 to
06ef4f6
Compare
Contributor
|
I'm seeing a failure in OnePassSignaturePacketTest, would you take a look? Getting: Expected: Got: Looks like something may not be fully round-tripping. Thanks. |
Contributor
Author
|
Ah, probably because you locally applied this PR over #1634 Will update :) |
vanitasvitae
force-pushed
the
roundtripPacketFormat
branch
from
May 22, 2024 10:55
06ef4f6 to
1bca359
Compare
Contributor
Author
|
Rebased and fixed. |
Contributor
|
Thanks, now passes. Merged! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
PacketFormatconsisting of 3 options:LEGACY: Always encode packets using the old legacy packet formatCURRENT: Always encode packets using the current (new) packet formatROUNDTRIP: Encode packets that were read from anInputStreamthe 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
BCPGOutputStreamconstructor 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.