- Documentation
- Reference manual
- Packages
- SWI-Prolog SSL Interface
- library(crypto): Cryptography and authentication library
- SWI-Prolog SSL Interface
3.10 Elliptic curves
This library provides functionality for reasoning over elliptic curves. Elliptic curves are represented as opaque objects. You acquire a handle for an elliptic curve via crypto_name_curve/2.
A point on a curve is represented by the Prolog term point(X, Y)
,
where X and Y are integers that represent the
point's affine coordinates.
The following predicates are provided for reasoning over elliptic curves:
- [det]crypto_name_curve(+Name, -Curve)
- Obtain a handle for a named elliptic curve. Name is an
atom, and
Curve is unified with an opaque object that represents the
curve. Currently, only elliptic curves over prime fields are supported.
Examples of such curves are
prime256v1
andsecp256k1
.If you have OpenSSL installed, you can get a list of supported curves via:
$ openssl ecparam -list_curves
- [det]crypto_curve_order(+Curve, -Order)
- Obtain the order of an elliptic curve. Order is an integer, denoting how many points on the curve can be reached by multiplying the curve's generator with a scalar.
- [det]crypto_curve_generator(+Curve, -Point)
- Point is the generator of the elliptic curve Curve.
- [det]crypto_curve_scalar_mult(+Curve, +N, +Point, -R)
- R is the result of N times Point on the elliptic curve Curve. N must be an integer, and Point must be a point on the curve.