Skip to content

Commit abc15c9

Browse files
authored
Merge pull request #1262 from cipherstash/feat/typed-control-messages
refactor: read control messages from frames with serde, not FfiValue (part 1: options and stats)
2 parents 5887218 + 42c8486 commit abc15c9

34 files changed

Lines changed: 2489 additions & 1507 deletions

‎.cargo/mutants.toml‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,17 @@ exclude_re = [
9696
# `true` there refuses the same values with the same error. The guard stays
9797
# so the model says what it holds without leaning on the writer behind it.
9898
'stack-encrypt/src/dynamic/value_frame\.rs:\d+:\d+: replace match guard logical\.admits\(&value\) with true in model$',
99+
# A serde visitor's `expecting` writes only the "expected ..." half of a
100+
# serde error's message, and no caller of these three reads that message:
101+
# a context, statistics and a plan's root are each refused with one fixed
102+
# `Reason` (`ContextKind`, `NotStats`, `NotAnObject`), and the plan's
103+
# field-level reasons are read from the error's path, so writing nothing
104+
# refuses the same input with the same error.
105+
'stack-encrypt/src/dynamic/(context|query|record)\.rs:\d+:\d+: replace <impl (Visitor<\x27de> for ContextVisitor|serde::Deserialize<\x27de> for Confidence>::deserialize::<impl serde::de::Visitor<\x27_> for V|Deserialize<\x27de> for PlanWire>::deserialize::<impl Visitor<\x27de> for V)>::expecting -> fmt::Result with Ok\(Default::default\(\)\)$',
106+
# The same for the visitor that reads a refused plan's keys back
107+
# (`entry_key`): its error is discarded (`.ok()`), so its message is never
108+
# read at all.
109+
'stack-encrypt/src/dynamic/record\.rs:\d+:\d+: replace entry_key::<impl Deserialize<\x27de> for Keys>::deserialize::<impl Visitor<\x27de> for V>::expecting -> fmt::Result with Ok\(Default::default\(\)\)$',
99110
]
100111

101112
# Headroom over the measured baseline before a slow-but-correct mutant is

‎Cargo.lock‎

Lines changed: 67 additions & 64 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,16 +120,15 @@ web-time = "1.1"
120120
zeroize = { version = "1.8.1", features = ["derive"] }
121121
# This is needed because lock_api 0.4.6 was breaking things and the branch forces the use of 0.4.12
122122
temp-env = { git = "https://github.com/cipherstash/temp-env", branch = "main" }
123-
vitaminc = { version = "0.6.0", features = ["random", "protected", "encrypt"] }
124-
vitaminc-aead = "0.6.0"
123+
vitaminc = { version = "0.6.1", features = ["random", "protected", "encrypt"] }
124+
vitaminc-aead = "0.6.1"
125125
# The transport frame and ciphertext codec every language binding carries
126126
# across its FFI boundary. Optional in stack-encrypt (the `dynamic` feature).
127-
vitaminc-aead-frame = "0.6.0"
128-
vitaminc-encrypt = "0.6.0"
129-
vitaminc-hmac = "0.6.0"
130-
# Not on crates.io yet: the `[patch.crates-io]` block below supplies it.
127+
vitaminc-aead-frame = "0.6.1"
128+
vitaminc-encrypt = "0.6.1"
129+
vitaminc-hmac = "0.6.1"
131130
# Normalized equality terms (Unicode 16 NFC text, one integer encoding for
132131
# every width), which `vitaminc-prf`'s `normalize` feature derives over.
133-
vitaminc-normalize = "0.6.0"
134-
vitaminc-prf = { version = "0.6.0", features = ["normalize"] }
135-
vitaminc-protected = "0.6.0"
132+
vitaminc-normalize = "0.6.1"
133+
vitaminc-prf = { version = "0.6.1", features = ["normalize"] }
134+
vitaminc-protected = "0.6.1"

0 commit comments

Comments
 (0)