added ec(2), added ripemd160 to sechash(2)

This commit is contained in:
aiju 2012-06-04 12:27:38 +02:00
parent 005248b4c5
commit 1ffd5f9af1
2 changed files with 112 additions and 0 deletions

108
sys/man/2/ec Normal file
View file

@ -0,0 +1,108 @@
.TH EC 2
.SH NAME
ecassign,
ecadd,
ecmul,
strtoec,
ecgen,
ecverify,
ecpubverify,
ecdsasign,
ecdsaverify \- Elliptic Curve Cryptography
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.br
.B #include <mp.h>
.br
.B #include <libsec.h>
.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 function implement elliptic curve cryptography.
An elliptic curve together with cryptographic parameters are specified using a
.B ECdomain
struct.
Points on the curve are represented by
.B ECpoint
structs.
.PP
.BR ecassign ", " ecadd " and " ecmul
work analogous to their counterparts in
.IR mp (2).
.PP
.B strtoec
converts a hex string representing an octet string as specified in SEC 1 to a
.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, resp., 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, resp., a signature using the ECDSA scheme specified in 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 (e.g. failing
.IR malloc (2)).
.SH SOURCE
.B /sys/src/libsec/ec.c
.SH SEE ALSO
Standards for Efficient Cryptography (SEC) 1: Elliptic Curve Cryptography, Certicom Research, 2009

View file

@ -2,6 +2,7 @@
.SH NAME .SH NAME
md4, md5, md4, md5,
sha1, sha2_224, sha2_256, sha2_384, sha2_512, sha1, sha2_224, sha2_256, sha2_384, sha2_512,
ripemd160,
aes, hmac_x, hmac_md5, aes, hmac_x, hmac_md5,
hmac_sha1, hmac_sha2_224, hmac_sha2_256, hmac_sha2_384, hmac_sha2_512, hmac_sha1, hmac_sha2_224, hmac_sha2_256, hmac_sha2_384, hmac_sha2_512,
hmac_aes, md5pickle, md5unpickle, hmac_aes, md5pickle, md5unpickle,
@ -55,6 +56,8 @@ DS* sha2_384(uchar *data, ulong dlen, uchar *digest, DS *state)
.Ti .Ti
DS* sha2_512(uchar *data, ulong dlen, uchar *digest, DS *state) DS* sha2_512(uchar *data, ulong dlen, uchar *digest, DS *state)
.Ti .Ti
DS* ripemd160(uchar *data, ulong dlen, uchar *digest, DS *state)
.Ti
DS* aes(uchar *data, ulong dlen, uchar *digest, DS *state) DS* aes(uchar *data, ulong dlen, uchar *digest, DS *state)
.Ti .Ti
DS* hmac_x(uchar *p, ulong len, uchar *key, ulong klen, uchar *digest, DS *s, DS*(*x)(uchar*, ulong, uchar*, DS*), int xlen) DS* hmac_x(uchar *p, ulong len, uchar *key, ulong klen, uchar *digest, DS *s, DS*(*x)(uchar*, ulong, uchar*, DS*), int xlen)
@ -92,6 +95,7 @@ The routines
.IR sha2_256 , .IR sha2_256 ,
.IR sha2_384 , .IR sha2_384 ,
.IR sha2_512 , .IR sha2_512 ,
.IR ripemd160 ,
.IR aes , .IR aes ,
.IR hmac_md5 , .IR hmac_md5 ,
.IR hmac_sha1 , .IR hmac_sha1 ,