Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
49314ad
fix(deps): patch rustls to 0.23.45
tobyhede Oct 12, 2026
12d239d
test(eql): review follow-ups to the SteVec selector derivation (#1202)
tobyhede Oct 14, 2026
1a815dd
test(eql): regenerate matrix expand snapshots; flag suffixed u128 sel…
tobyhede Oct 14, 2026
3bfd1b6
test(eql): address review of the selector follow-ups
tobyhede Oct 15, 2026
46b5754
test(eql): pin that a SteVec document does not cast to a json entry
tobyhede Oct 15, 2026
4f663dc
test(eql): run the entry shape checks through the matrix access path
tobyhede Oct 15, 2026
0e34176
chore(deps): bump golang.org/x/sys in /languages/golang
dependabot[bot] Oct 15, 2026
1ab3718
chore(deps): bump the cargo-minor-patch group across 4 directories wi…
dependabot[bot] Oct 15, 2026
457b28e
chore(changeset): release the rustls 0.23.45 patch
claude Oct 16, 2026
67ff1cc
chore(deps): bump the production-minor-patch group across 1 directory…
dependabot[bot] Oct 18, 2026
da8e870
Merge pull request #1228 from cipherstash/dependabot/cargo/cargo-mino…
tobyhede Oct 18, 2026
e827f95
Merge pull request #1224 from cipherstash/dependabot/go_modules/langu…
tobyhede Oct 18, 2026
66092fe
Merge pull request #1268 from cipherstash/dependabot/npm_and_yarn/pro…
tobyhede Oct 18, 2026
fc591e3
Merge pull request #1158 from cipherstash/fix/cip-4891-rustls
tobyhede Oct 18, 2026
c57ae14
test(eql): address coderdan's review of the selector follow-ups
claude Oct 18, 2026
039a961
docs(eql): doc comments on the functions this PR touches
claude Oct 19, 2026
38f55d2
Merge pull request #1204 from cipherstash/test/eql-selector-review-fo…
tobyhede Oct 19, 2026
febb750
Merge remote-tracking branch 'origin/main' into chore/merge-main-into…
coderdan Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/auth-rustls-0-23-45.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@cipherstash/auth": patch
---

The native binaries now use rustls 0.23.45, which fixes GHSA-2mjx-qc3c-rqvc
(affecting rustls 0.23.13 up to 0.23.44). The package's API is unchanged.
12 changes: 12 additions & 0 deletions .changeset/protect-ffi-rustls-0-23-45.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@cipherstash/protect-ffi": patch
"@cipherstash/protect-ffi-darwin-arm64": patch
"@cipherstash/protect-ffi-darwin-x64": patch
"@cipherstash/protect-ffi-linux-arm64-gnu": patch
"@cipherstash/protect-ffi-linux-x64-gnu": patch
"@cipherstash/protect-ffi-linux-x64-musl": patch
"@cipherstash/protect-ffi-win32-x64-msvc": patch
---

The native binaries now use rustls 0.23.45, which fixes GHSA-2mjx-qc3c-rqvc
(affecting rustls 0.23.13 up to 0.23.44). The package's API is unchanged.
36 changes: 26 additions & 10 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -570,17 +570,33 @@ monorepo, which is where the silent failures are.
`fixtures::v3_doc_integer::field_op_selector` and
`fixtures::v3_ste_vec::hello_op_selector`, which apply a written rule to the
loaded fixture and fail, listing every candidate, when zero or several
selectors match. `tests/sqlx/tests/selector_literal_guard.rs` fails on a
random-looking standalone 32-hex run anywhere in the crate's source, SQL and
escaped JSON strings included, and runs DB-free in `mise run test:schema` so
fork PRs get it too; a forged selector must be
visibly fake (`"00000000000000000000000000000001"`). The suite passes against
any workspace. That a keyset and path still produce the same selector bytes is
pinned separately, in the encryption test crate
selectors match. The jsonb_entry matrix resolves the selector at runtime and
queries the literal `payload -> '<sel>'::text` customers write.
`tests/sqlx/tests/selector_literal_guard.rs` fails on a random-looking
standalone 32-hex run, in any case, in any `.rs` file under the crate's `src/`
and `tests/`, SQL and escaped JSON inside Rust strings included, and counts a
string escape (`\n`, `\x`), a `0x` prefix or an integer suffix (`0x…u128`)
as a boundary. It does not catch a selector split into pieces, such as a
`[u8; 16]` array of `0x..` bytes; the generated
`fixtures/*.sql` files hold real selectors and are not scanned. It runs
DB-free in `mise run test:schema` so fork PRs get it too; a forged selector
must be visibly fake (`"00000000000000000000000000000001"`). The suite passes
against any workspace. That a keyset and path still produce the same selector
bytes is pinned separately, in the encryption test crate
(`packages/eql/tests/encryption/tests/ste_vec_selectors.rs`, regenerated only
with `EQL_UPDATE_STE_VEC_SELECTORS=1`). It pins the cipherstash-client version
the EQL workspace resolves; protect-ffi resolves its own from its own
lockfile, so the pin covers protect-ffi's only while the two versions agree.
with `EQL_UPDATE_STE_VEC_SELECTORS=1`, exactly `1`). It pins the index config
production really sends for an EQL v3 JSON column, the unrewritten
`prefix: "enabled"` sentinel included (#1203: a fix there changes every stored
v3 JSON selector and is meant to fail the pin). It also records the fake index
key it derives under: a changed key fails first, with a message naming it a
stack-kms test-infrastructure change rather than a stored-data break. It pins
the cipherstash-client and cipherstash-config (the crates that compute the
selectors) the EQL workspace resolves; protect-ffi resolves its own from its
own lockfile, and `scripts/__tests__/cipherstash-client-parity.test.mjs`
(`pnpm run test:scripts`, every PR) fails when the two lockfiles disagree on
the version, source or checksum of either, so a protect-ffi bump has to move the EQL pins with it. Primitive
dependencies such as blake3 are not compared, and already differ at patch
level.
- **`FROZEN_PUBLISHERS` is what stops this repo publishing a package whose
publisher lives elsewhere, and it is a mechanism, not a status.** `scripts/release-gate.mjs` carries a map of every
package that lives here but is published from another repository. For each,
Expand Down
Loading
Loading