From 6b402b83cffc97015345dab1c27c35afe64bb3db Mon Sep 17 00:00:00 2001 From: mischief Date: Tue, 25 Aug 2015 02:07:46 -0700 Subject: import E script from bell labs --- sys/include/libsec.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'sys/include') diff --git a/sys/include/libsec.h b/sys/include/libsec.h index 60f25f944..d8d4852d5 100644 --- a/sys/include/libsec.h +++ b/sys/include/libsec.h @@ -403,6 +403,16 @@ PEMChain*readcertchain(char *filename); int aes_xts_encrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *input, uchar *output, ulong len) ; int aes_xts_decrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *input, uchar *output, ulong len); +/* + * ECC + */ + +/* ids for ecnamedcurve */ +enum +{ + Secp256r1 = 23, +}; + typedef struct ECpoint{ int inf; mpint *x; @@ -424,10 +434,15 @@ typedef struct ECdomain{ mpint *h; } ECdomain; +ECdomain* ecnamedcurve(int); +void ecfreepoint(ECpoint*); +void ecfreepriv(ECpriv*); +void ecfreedomain(ECdomain*); void ecassign(ECdomain *, ECpoint *old, ECpoint *new); void ecadd(ECdomain *, ECpoint *a, ECpoint *b, ECpoint *s); void ecmul(ECdomain *, ECpoint *a, mpint *k, ECpoint *s); -ECpoint* strtoec(ECdomain *, char *, char **, ECpoint *); +ECpoint* betoec(ECdomain*, uchar*, int, ECpoint*); +ECpoint* strtoec(ECdomain *, char *, char **, ECpoint*); ECpriv* ecgen(ECdomain *, ECpriv*); int ecverify(ECdomain *, ECpoint *); int ecpubverify(ECdomain *, ECpub *); @@ -457,5 +472,8 @@ mpint* dh_new(DHstate *dh, mpint *p, mpint *g); /* calculate shared key: k = pub ^ x % p */ mpint* dh_finish(DHstate *dh, mpint *pub); +/* constant-time comparison similar to memcmp(2) */ +int constcmp(uchar *x, uchar *y, int len); + /* password-based key derivation function 2 (RFC 2898) */ void pbkdf2_hmac_sha1(uchar *p, ulong plen, uchar *s, ulong slen, ulong rounds, uchar *d, ulong dlen); -- cgit v1.2.3