.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 (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 /usr/local/plan9/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)
