.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 | |
(see | |
.IR prime (3)). | |
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 \*9/src/libsec | |
.SH SEE ALSO | |
.IR mp (3), | |
.IR aes (3), | |
.IR blowfish (3), | |
.IR des (3), | |
.IR rc4 (3), | |
.IR rsa (3), | |
.IR sechash (3), | |
.IR prime (3), | |
.IR rand (3) |