added ec(2), added ripemd160 to sechash(2)
This commit is contained in:
parent
005248b4c5
commit
1ffd5f9af1
2 changed files with 112 additions and 0 deletions
108
sys/man/2/ec
Normal file
108
sys/man/2/ec
Normal 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
|
|
@ -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 ,
|
||||||
|
|
Loading…
Reference in a new issue