Cross-platform elliptic curve arithmetic.
Git issues and other communications are warmly welcomed. [email protected]
jvm
, node + npm
, clj
, shadow-cljs
{nuid/elliptic {:git/url "https://github.com/nuid/elliptic" :sha "..."}}
$ clj # or shadow-cljs node-repl
=> (require '[nuid.elliptic.curve.point :as point])
=> (require '[nuid.elliptic.curve :as curve])
=> (require '[nuid.transit :as transit])
=> (require '[nuid.bn :as bn])
=> (def c (curve/from ::curve/secp256k1))
=> (def g (curve/base c))
=> (def n (curve/order c))
=> (def k (bn/from "123333333333333333333333333333333333333333321"))
=> (def p (point/mul g k))
=> (def q (point/add g p))
nuid.elliptic
primarily exists to abstract over platform-specific differences
and provide a common interface to the provided functionality across host
platforms. nuid.elliptic
delegates directly to host implementions (e.g.
bouncycastle
on the jvm
, and elliptic
, etc., in node
and the browser).
Apache v2.0 or MIT
This library is property tested to help verify implementation, but has not yet been audited by an independent third party.