package fiat-p256
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=f32a20800cb0c0baa4f851ceaab6d10b20fd8e6d5c88f3d5d5eff923f4efc8ed
sha512=cb4243eefbe2538fbea42ba4f155218ea0da341e1571ec4b207c8e775abcbdbec39f60b906468454c2515c3b7ff8698e8861df46cb12ba67a1f7f1b5f3a2eeb0
README.md.html
Fiat-p256
fiat-p256
contains primitives for ECDH key exchange algorithm over NIST curve P-256.
It internally uses bindings to C code generated using the correct-by-construction implementations from fiat-crypto.
Please be aware that cryptographic primitives should not be used in end applications, they are better used as part of a higher level cryptographic library.
Installation
fiat-p256
is available on opam and can be install as follows:
opam install fiat-p256
Usage
The entry point to this library is the Fiat_p256
module and the main function is dh
which let you perform a key exchange given your private key scalar
and the other party's public key point
:
let secret = Fiat_p256.dh ~scalar ~point
Note that the point
values built or parsed using Fiat_p256
's interface are checked according to NIST's Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography section 5.6.2.3.2 so that you shouldn't be able to provide an invalid point or the point at infinity to the functions exposed in this module.
You can also compute the public P-256 key corresponding to your private key scalar
using the public
function:
let public_key = Fiat_p256.public ~scalar
Note that the scalar
values parsed using Fiat_p256
's interface must be within P-256's generator subgroup order range so that your public key can't be the point at infinity. Any scalar not in the range [1 - (n-1)]
, n
being the group order, will be rejected.