diff options
Diffstat (limited to 'man/man3/dsa.3')
-rw-r--r-- | man/man3/dsa.3 | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/man/man3/dsa.3 b/man/man3/dsa.3 new file mode 100644 index 00000000..5535164e --- /dev/null +++ b/man/man3/dsa.3 @@ -0,0 +1,132 @@ +.TH DSA 3 +.SH NAME +dsagen, dsasign, dsaverify, dsapuballoc, dsapubfree, dsaprivalloc, dsaprivfree, dsasigalloc, dsasigfree, dsaprivtopub - digital signature algorithm +.SH SYNOPSIS +.B #include <u.h> +.br +.B #include <libc.h> +.br +.B #include <mp.h> +.br +.B #include <libsec.h> +.PP +.B +DSApriv* dsagen(DSApub *opub) +.PP +.B +DSAsig* dsasign(DSApriv *k, mpint *m) +.PP +.B +int dsaverify(DSApub *k, DSAsig *sig, mpint *m) +.PP +.B +DSApub* dsapuballoc(void) +.PP +.B +void dsapubfree(DSApub*) +.PP +.B +DSApriv* dsaprivalloc(void) +.PP +.B +void dsaprivfree(DSApriv*) +.PP +.B +DSAsig* dsasigalloc(void) +.PP +.B +void dsasigfree(DSAsig*) +.PP +.B +DSApub* dsaprivtopub(DSApriv*) +.SH DESCRIPTION +.PP +DSA is the NIST approved digital signature algorithm. The owner of a key publishes +the public part of the key: +.EX + struct DSApub + { + mpint *p; // modulus + mpint *q; // group order, q divides p-1 + mpint *alpha; // group generator + mpint *key; // alpha**secret mod p + }; +.EE +This part can be used for verifying signatures (with +.IR dsaverify ) +created by the owner. +The owner signs (with +.IR dsasign ) +using his private key: +.EX + struct DSApriv + { + DSApub pub; + mpint *secret; // (decryption key) + }; +.EE +.PP +Keys are generated using +.IR dsagen . +If +.IR dsagen 's +argument +.I opub +is +.BR nil , +a key is created using a new +.B p +and +.B q +generated by +.IR DSAprimes (2). +Otherwise, +.B p +and +.B q +are copied from the old key. +.PP +.I Dsaprivtopub +returns a newly allocated copy of the public key +corresponding to the private key. +.PP +The routines +.IR dsapuballoc , +.IR dsapubfree , +.IR dsaprivalloc , +and +.I dsaprivfree +are provided to manage key storage. +.PP +.I Dsasign +signs message +.I m +using a private key +.I k +yielding a +.EX + struct DSAsig + { + mpint *r, *s; + }; +.EE +.I Dsaverify +returns 0 if the signature is valid and \-1 if not. +.PP +The routines +.I dsasigalloc +and +.I dsasigfree +are provided to manage signature storage. +.SH SOURCE +.B /sys/src/libsec +.SH SEE ALSO +.IR mp (2), +.IR aes (2), +.IR blowfish (2), +.IR des (2), +.IR rc4 (2), +.IR rsa (2), +.IR sechash (2), +.IR prime (2), +.IR rand (2) |