# CurveForge
**CurveForge** is a Rust crate that provides concrete implementations of elliptic curves and models built using the `curveforge_traits` and `curveforge_macro` libraries.
It serves as a showcase and testbed for curve and field definitions written with `curveforge_macro`, implementing standard and custom elliptic curve constructions in a modular and ergonomic way.
## Provided Models
Curveforge includes implementations of several elliptic curve models in the [`models` module](models):
| [Double-Odd](models::double_odd) | `double_odd` |
| [Short Weierstrass](models::short_weierstrass) | `short_weierstrass` |
| [Montgomery](models::montgomery) | `montgomery` |
| [Twisted Edwards](models::twisted_edwards) | `twisted_edwards` |
## Provided Curves
Curveforge includes implementations of several well-known elliptic curves, each associated with a specific model in the [`curves` module](curves):
| [NIST P256 and P384](curves::nist) | `nist` | Short Weierstrass |
| [Jq255s](curves::jq255s) | `jq255s` | Double-Odd |
| [Curve25519](curves::curve25519) | `curve25519` | Montgomery |
| [Curve448](curves::curve448) | `curve448` | Montgomery |
| [Ed25519](curves::ed25519) | `ed25519` | Twisted Edwards |
| [rtr family](curves::rtr) | `rtr` | Various (mainly Double-Odd) |
Enable features in your `Cargo.toml` as needed to include these curves and models.
Enabling a curve will automatically enable its underlying model.