Repository navigation
Conversation
BREAKING CHANGE: keyset encrypt/decrypt use opaque Ciphertext and separate context methods. Structural calls move to encrypt_node/decrypt_node; borrowed conversion helpers move to target::legacy. Declare owned conversions with EncryptTarget/DecryptSource and explicit context capabilities. Guard plaintext during planning and preserve the existing sealed-leaf bytes and Go/dynamic execution paths.
🦋 Changeset detectedLatest commit: 9a44074 The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
Contributor
Mutation testing (cargo-mutants,
|
| caught | missed | unviable | timeout |
|---|---|---|---|
| 7 | 3 | 24 | 0 |
Surviving mutants: add a test that fails on each before merging
packages/stack-encrypt/src/scalar.rs:55:9: replace <impl std::fmt::Debug for Ciphertext>::fmt -> std::fmt::Result with Ok(Default::default())
packages/stack-encrypt/src/target/input.rs:61:9: replace OptionalContext<C>::into_inner -> Option<C> with None
packages/stack-encrypt/src/target/input.rs:114:9: replace <impl From<NoCallerContext> for super::DeclaredContext>::from -> Self with Default::default()
This branch has not been deployed
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 direct Rust API previously required an AAD argument and returned a structural node even for one integer. This implements the first scalar slice of the API redesign in #1365:
EncryptTargetandDecryptSourcedeclare operations; the ownedEncryptIntoand destination-directedDecryptFromhelpers execute them through the existing batched engine.RequiredContext,OptionalContext, andNoCallerContextcontrol method availability explicitly:Defaultnever grants permission to omit context. Encryption guards the owned source withZeroizing, plans synchronously through a borrow, and wipes the source before returning the pending request. This imposes no blanketClonebound and also covers discarded requests, planning errors and context-conversion unwinding. Returned plaintext belongs to the caller; this is not a claim of complete compiler-copy erasure or constant-time serialization.Ciphertextexposes canonical byte encoding/decoding and provider-tag access over the unchanged SealedValue v1 envelope. Cross-opening tests exercise both old-writer/new-reader and new-writer/old-reader paths. No Go/dynamic grammar, stored encoding, SQL, or cryptographic derivation changes.Migration and scope
encrypt_node/decrypt_node. Existing plans and derives retain their declaration engine; their borrowed conversion helpers move totarget::legacy. Existing consumers and tests are updated explicitly.Validation
No live ZeroKMS or PostgreSQL tests were run. Based on latest next at ffeed7a.