Skip to content

eql-types: canonical EQL v3 payload types (Rust) #286

Description

@coderdan

Tracking issue for the crates/eql-types foundation.

Implemented by #236 (merged).

Goal

A single Rust source of truth for EQL v3 payloads — one struct per eql_v3 SQL domain — so every tool that produces/consumes EQL payloads (cipherstash-client, protect-ffi, CipherStash Proxy) stops hand-copying and drifting shapes. Replaces the runtime key-sniffing (e.g. term.k === 'ct' && term.hm) that produced the protect-dynamodb guard bugs.

Delivered

  • Capability-encoded types mirroring eql-scalars::CATALOG (one per SQL domain), envelope (v/i/c) + index terms as required fields — no Option.
  • Reusable term newtypes (Ciphertext, Hmac256, OreBlockU64_8_256, BloomFilter as signed i16).
  • Drift protection in tests/catalog_parity.rs (registry covers CATALOG in order; behavioural required-keys round-trip).
  • Joins the lean mise run test:crates set (fmt, clippy, test — no DB).

Stack

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions