Support getting encryption context on a message#526
Merged
BewareMyPower merged 12 commits intoapache:mainfrom Dec 9, 2025
Merged
Support getting encryption context on a message#526BewareMyPower merged 12 commits intoapache:mainfrom
BewareMyPower merged 12 commits intoapache:mainfrom
Conversation
This reverts commit e8e3e23.
e53f8c6 to
5775987
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds support for retrieving encryption context from messages in the Pulsar C++ client, enabling applications to inspect encryption metadata and manually decrypt messages when ConsumerCryptoFailureAction::CONSUME is configured. The implementation introduces a new public EncryptionContext class that encapsulates encryption keys, parameters, algorithm, and compression information, along with a flag indicating decryption failure status.
Key changes:
- Introduces
EncryptionContextclass andEncryptionKeystruct as public API types to expose encryption metadata - Adds
Message::getEncryptionContext()method returningstd::optional<const EncryptionContext*>to access encryption context - Refactors
MessageCryptoto useEncryptionContextinstead of protobuf types for better API abstraction
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| include/pulsar/EncryptionContext.h | New public header defining EncryptionContext and EncryptionKey with methods to access encryption metadata |
| include/pulsar/Message.h | Adds getEncryptionContext() method and includes <optional> for C++17 support |
| lib/EncryptionContext.cc | Implementation of EncryptionContext constructor that converts protobuf metadata to public API types |
| lib/Message.cc | Implements getEncryptionContext() returning pointer to optional encryption context |
| lib/MessageImpl.h | Adds encryptionContext_ member to store optional encryption context in message implementation |
| lib/MessageCrypto.h | Updates method signatures to accept EncryptionContext and EncryptionKey instead of protobuf types |
| lib/MessageCrypto.cc | Refactors decryption methods to work with EncryptionContext API, converting from protobuf field access to method calls |
| lib/ConsumerImpl.h | Introduces DecryptionResult enum to distinguish between successful decryption, consuming encrypted, and failure states |
| lib/ConsumerImpl.cc | Creates encryption context before decryption, sets isDecryptionFailed_ flag for consumed encrypted messages, and propagates context to Message |
| lib/Commands.cc | Propagates encryption context from batched messages to individual deserialized messages |
| tests/EncryptionTest.cc | New comprehensive test demonstrating manual decryption using encryption context when decryption is disabled |
| tests/BasicEndToEndTest.cc | Adds assertion to verify encryption context availability and correctness in existing encryption test |
| win-examples/CMakeLists.txt | Sets C++17 standard required for std::optional support in Windows examples |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
RobertIndie
reviewed
Dec 8, 2025
Co-authored-by: Zike Yang <zike@apache.org>
RobertIndie
approved these changes
Dec 9, 2025
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.
No description provided.