Skip to content

Conversation

@BewareMyPower
Copy link
Contributor

@BewareMyPower BewareMyPower commented Dec 4, 2025

No description provided.

@BewareMyPower BewareMyPower marked this pull request as draft December 4, 2025 12:42
@BewareMyPower BewareMyPower self-assigned this Dec 4, 2025
@BewareMyPower BewareMyPower added the enhancement New feature or request label Dec 4, 2025
@BewareMyPower BewareMyPower added this to the 4.0.0 milestone Dec 4, 2025
@BewareMyPower BewareMyPower force-pushed the bewaremypower/msg-enc-context branch from e53f8c6 to 5775987 Compare December 5, 2025 03:24
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 EncryptionContext class and EncryptionKey struct as public API types to expose encryption metadata
  • Adds Message::getEncryptionContext() method returning std::optional<const EncryptionContext*> to access encryption context
  • Refactors MessageCrypto to use EncryptionContext instead 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.

BewareMyPower and others added 2 commits December 8, 2025 18:11
Co-authored-by: Zike Yang <zike@apache.org>
@BewareMyPower BewareMyPower merged commit 889a04b into apache:main Dec 9, 2025
14 checks passed
@BewareMyPower BewareMyPower deleted the bewaremypower/msg-enc-context branch December 9, 2025 02:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants