Add encryption/decryption logic #11110
Closed
+2,716
−0
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.
This pr introduces a encryption subsystem, providing the core encryption logic along with comprehensive tests. The main changes include the implementation of a ChaCha20-Poly1305-based encryption module, key provider interfaces and implementations (for both Kubernetes and in-memory usage), and thorough unit and integration tests to ensure reliability and correct behavior.
ref: design doc
Encryption functionality:
Encryptortype inencryption.go, providing methods for encrypting and decrypting data using ChaCha20-Poly1305 with support for associated data (AD) binding, and includes utility methods for key generation and encrypted data validation.Key management:
KeyProviderinterface and provides two implementations inkeyprovider.go:KubernetesKeyProvider(retrieves keys from Kubernetes Secrets with configurable options) andInMemoryKeyProvider(for testing and development), along with error handling for key retrieval and validation.Testing and validation:
keyprovider_test.gowith comprehensive tests for both key provider implementations, covering success and error cases.Type of change
Fixes: #11071
Contributor checklist
Please verify that the PR meets the following requirements, where applicable: