Oracle interfaces and plain states for the stateful Fiat-Shamir CMA proof #
This file contains the oracle interfaces and direct product-state shapes used
by the QueryImpl.Stateful Fiat-Shamir CMA games. The games store their private
data in ordinary product types.
The fs_simp simp attribute used to tag handler definitions, frames, lenses,
and adversary wrappers throughout the stateful FS-CMA development is declared
in Stateful/SimpAttr.lean and imported above.
Oracle specs #
Named query constructors for the source CMA adversary interface.
- unif
{M Commit : Type}
(n : ℕ)
: CmaSourceQuery M Commit
Uniform sampling query.
- ro
{M Commit : Type}
(mc : M × Commit)
: CmaSourceQuery M Commit
Random-oracle query.
- sign
{M Commit : Type}
(m : M)
: CmaSourceQuery M Commit
Signing query.
Instances For
Named query constructors for the CMA adversary's oracle view.
- unif
{M Commit : Type}
(n : ℕ)
: CmaQuery M Commit
Uniform sampling query.
- ro
{M Commit : Type}
(mc : M × Commit)
: CmaQuery M Commit
Random-oracle query.
- sign
{M Commit : Type}
(m : M)
: CmaQuery M Commit
Signing query.
- pk
{M Commit : Type}
: CmaQuery M Commit
Public-key query.
Instances For
Named query constructors for the public, non-signing portion of the CMA interface.
- unif
{M Commit : Type}
(n : ℕ)
: CmaPublicQuery M Commit
Uniform sampling query.
- ro
{M Commit : Type}
(mc : M × Commit)
: CmaPublicQuery M Commit
Random-oracle query.
- pk
{M Commit : Type}
: CmaPublicQuery M Commit
Public-key query.
Instances For
Named query constructors for the NMA interface used internally by the CMA-to-NMA reduction.
- unif
{M Commit Chal : Type}
(n : ℕ)
: NmaQuery M Commit Chal
Uniform sampling query.
- ro
{M Commit Chal : Type}
(mc : M × Commit)
: NmaQuery M Commit Chal
Random-oracle query.
- pk
{M Commit Chal : Type}
: NmaQuery M Commit Chal
Public-key query.
- prog
{M Commit Chal : Type}
(mch : M × Commit × Chal)
: NmaQuery M Commit Chal
Programmable-random-oracle query.
Instances For
Random-oracle interface for the Fiat-Shamir transform.
Instances For
Signing-oracle interface presented to the CMA adversary.
Instances For
Public-key oracle interface: a single GetPK query returning the
challenger's public key.
Instances For
Programming interface for the programmable random oracle.
Instances For
Source CMA adversary interface: uniform sampling, RO, and signing.
Instances For
The CMA adversary's complete oracle view: uniform sampling, RO, signing, and public-key oracles.
Instances For
The non-signing portion of the CMA adversary's oracle view.
Instances For
The NMA-game oracle interface used internally by the CMA-to-NMA reduction. Includes uniform sampling, RO, programmable RO, and public-key queries.
Instances For
Route named CMA queries to the public-forwarding component or the signing component of the CMA-to-NMA reduction.
Instances For
The Fiat-Shamir public random-oracle interface embeds into the named CMA interface by routing uniform and random-oracle queries to their named constructors.
Plain state shapes #
Random-oracle cache state.
Instances For
Outer CMA-to-NMA state: the signed-message log.
Instances For
Inner NMA state: RO cache, optional keypair, and bad flag.
Instances For
Direct CMA state without the bad flag: signed log, RO cache, keypair.
Instances For
Direct CMA state with the bad flag as the final component.
Instances For
Initial NMA state: empty RO cache, no keypair, bad unset.
Instances For
Initial CMA state: empty signed log, empty RO cache, no keypair, bad unset.
Instances For
Frame for linking CMA-to-NMA over direct CMA state #
Lens selecting the signed-message log from direct CMA state.
Instances For
Lens selecting the NMA state from direct CMA state.
Instances For
The direct CMA frame used by cmaToNma.linkWith nma.
Instances For
Frame for routing the CMA-to-NMA reduction #
Trivial lens into a PUnit component.
Instances For
Frame used to compose the stateless forwarding part of cmaToNma with the
stateful signing simulator while keeping only the signing log as state.