How menonsamir/spiral works
Spiral is a research implementation of single-server private information retrieval (PIR) using fully homomorphic encryption. Its principal workflow is a client-generated encrypted query, server-side expansion and database computation, then client-side decryption; the C++ executable contains both client and server work. The README also documents streaming, packing, and high-rate variants, plus implicit or explicit database representations. The excerpts show only parts of the runtime, so the graph omits unverified internal transitions; variant capabilities are included where documented.
Main entry points: spiral.cpp PIR runtime · client.cpp Client crypto · poly.cpp Polynomial operations · core.cpp NTT and sampling
Components 15
PIR runtime
- Client crypto
src/client.cpp - PIR runtime
src/spiral.cpp - Query generation
src/spiral.cpp - Server setup
src/spiral.cpp - Query expansion
src/spiral.cpp - Database computation
src/spiral.cpp - Database input
src/spiral.cpp
Crypto primitives
- Polynomial operations
src/poly.cpp - NTT and sampling
src/core.cpp - Gadget utilities
src/util.cpp - PIR parameters
include/values.h
PIR variants
- Response packing
src/testing.cpp - Streaming mode
src/spiral.cpp - High-rate mode
src/spiral.cpp
Other components
- PIR user
Connections 16
- PIR user → Client crypto: requests privately
README.md - Client crypto → Query generation: generates query
README.md - Query generation → PIR runtime: submits query
README.md - PIR runtime → Server setup: generates setup
src/spiral.cpp - PIR runtime → Query generation: generates query
src/spiral.cpp - PIR runtime → Query expansion: expands query
src/spiral.cpp - PIR runtime → Database computation: computes response
src/spiral.cpp - Database input → Database computation: supplies records
src/spiral.cpp - Database computation → Client crypto: returns ciphertext
README.md - Client crypto → Polynomial operations: uses operations
- Polynomial operations → NTT and sampling: uses NTT
- Polynomial operations → Gadget utilities: uses helpers
- PIR runtime → PIR parameters: uses parameters
- PIR runtime → Response packing: supports packing
README.md - PIR runtime → Streaming mode: supports streaming
README.md - PIR runtime → High-rate mode: supports high rate
README.md