.TH EC 2 .SH NAME ecassign, ecadd, ecmul, strtoec, ecgen, ecverify, ecpubverify, ecdsasign, ecdsaverify \- elliptic curve cryptography .SH SYNOPSIS .B #include .br .B #include .br .B #include .br .B #include .PP .B void ecassign(ECdomain *dom, ECpoint *old, ECpoint *new); .PP .B void ecadd(ECdomain *dom, ECpoint *a, ECpoint *b, ECpoint *s); .PP .B void ecmul(ECdomain *dom, ECpoint *a, mpint *k, ECpoint *s); .PP .B ECpoint* strtoec(ECdomain *dom, char *s, char **rptr, ECpoint *p); .PP .B ECpriv* ecgen(ECdomain *dom, ECpriv *p); .PP .B int ecverify(ECdomain *dom, ECpoint *p); .PP .B int ecpubverify(ECdomain *dom, ECpub *p); .PP .B void ecdsasign(ECdomain *dom, ECpriv *priv, uchar *dig, int dlen, mpint *r, mpint *s); .PP .B int ecdsaverify(ECdomain *dom, ECpub *pub, uchar *dig, int dlen, mpint *r, mpint *s); .DT .SH DESCRIPTION These functions implement elliptic curve cryptography. An elliptic curve together with cryptographic parameters are specified using an .B ECdomain struct. Points on the curve are represented by .B ECpoint structs. .PP .BR ecassign ", " ecadd " and " ecmul are analogous to their counterparts in .IR mp (2). .PP .B strtoec converts a hex string representing an octet string as specified in .I Standards for Efficient Cryptography (SEC) 1 to an .B ECpoint struct. Both uncompressed and compressed formats are supported. If .B rptr is not .BR nil , it is used to return the position in the string where the parser stopped. If .BR p " is " nil space is allocated automatically, else the given struct is used. .PP .B ecverify and .B ecpubverify verify that the given point or public key, respectively, is valid. .PP .B ecgen generates a keypair and returns a pointer to it. If .BR p " is " nil space is allocated automatically, else the given struct is used. .PP .B ecdsasign and .B ecdsaverify create or verify, respectively, a signature using the ECDSA scheme specified in .I SEC 1. It is absolutely vital that .B dig is a cryptographic hash to the message. .B ecdsasign writes the signature to .BR r " and " s which are assumed to be allocated properly. .SH RETURN VALUE .B *verify functions return .B 1 for a positive result. Functions returning pointers may return .B nil in case of error .I (e.g. failing .IR malloc (2)). .SH SOURCE .B /sys/src/libsec/port/ecc.c .SH SEE ALSO .I Standards for Efficient Cryptography (SEC) 1: Elliptic Curve Cryptography - Certicom Research, 2009 .SH HISTORY This implementation of elliptic curve cryptography first appeared in 9front (June, 2012).