Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Coq
  3. Fiat-Crypto

Fiat-Crypto

NOASSERTIONRocq Prover

Synthesizes formally verified, correct-by-construction C, Rust, Go, and other language code for cryptographic field arithmetic primitives.

Visit WebsiteGitHubGitHub
829 stars176 forks0 contributors

What is Fiat-Crypto?

Fiat-Crypto is a Coq-based tool that synthesizes formally verified, correct-by-construction code for cryptographic field arithmetic primitives. It generates high-assurance implementations of operations like modular multiplication and addition for elliptic curves (e.g., Curve25519, NIST P-256), solving the problem of error-prone manual crypto implementation.

Target Audience

Cryptography engineers, security researchers, and developers building verified cryptographic libraries who need mathematically correct and efficient field arithmetic code.

Value Proposition

Developers choose Fiat-Crypto because it provides formally verified code that eliminates subtle bugs, supports multiple output languages and optimization strategies, and integrates into existing cryptographic libraries with high assurance.

Overview

Cryptographic Primitive Code Generation by Fiat

Use Cases

Best For

  • Generating verified field arithmetic code for elliptic curve implementations
  • Building high-assurance cryptographic libraries in C, Rust, or Go
  • Prototyping new cryptographic primitives with formal correctness guarantees
  • Educational purposes for understanding verified crypto implementation
  • Integrating formally verified components into existing security projects
  • Reducing manual review burden for critical cryptographic software

Not Ideal For

  • Teams needing quick, drop-in cryptographic libraries without formal verification setup overhead
  • Projects targeting languages with poorly maintained backends like Java, where generated code may be buggy
  • Developers with tight deadlines who cannot afford the hour-long builds and Coq learning curve
  • Real-time applications where code generation speed is critical, as synthesis for large primes can take hours

Pros & Cons

Pros

Formally Verified Correctness

All generated code is proven correct in Coq against mathematical specifications, eliminating subtle implementation bugs common in manual crypto code, as highlighted in the project's papers and thesis links.

Multi-Language Output

Synthesizes code for C, Rust, Go, Java, Zig, and Bedrock2/C, allowing integration into diverse projects, with some backends like C and Rust tested against external test suites.

Flexible Optimization Strategies

Supports multiple strategies like unsaturated Solinas and word-by-word Montgomery, enabling performance tuning for specific hardware, as demonstrated in the command-line examples for curves like Curve25519.

Interactive Web Demo

Includes a web interface powered by js_of_ocaml for trying synthesis without local setup, making it easier to experiment with parameters and strategies.

Cons

Complex Build and Setup

Requires Coq 8.20+, OCaml, and specific dependencies; the README notes builds can take over an hour, and setup involves managing submodules and package installations across different OSes.

Variable Backend Reliability

Some backends like Java are marked as buggy and unmaintained in the status table, while others like JSON are experimental, reducing trust for production use in those languages.

Steep Formal Methods Barrier

Users must understand Coq and formal methods to modify or extend the synthesis, as the pipeline relies on verified transformations and proofs, limiting accessibility for non-experts.

Frequently Asked Questions

Quick Stats

Stars829
Forks176
Contributors0
Open Issues140
Last commit21 hours ago
CreatedSince 2015

Tags

#coq#cryptography#verified-software#crypto-primitives#code-generation#formal-verification#elliptic-curves

Built With

M
Make
H
Haskell
C
Coq
O
OCaml
D
Docker

Links & Resources

Website

Included in

Coq380
Auto-fetched 13 hours ago

Related Projects

JasminJasmin

Language for high-assurance and high-speed cryptography

Stars359
Forks77
Last commit18 hours ago
Verdi RaftVerdi Raft

An implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework

Stars199
Forks20
Last commit2 years ago
CertiCoqCertiCoq

A Verified Compiler for Gallina, Written in Gallina

Stars170
Forks37
Last commit8 days ago
CeramistCeramist

Verified hash-based AMQ structures in Coq

Stars124
Forks5
Last commit6 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub