aboutsummaryrefslogtreecommitdiff
path: root/man/man3/dsa.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/dsa.3')
-rw-r--r--man/man3/dsa.3132
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)