3 cfa37a7b 2004-04-10 devnull dsagen, dsasign, dsaverify, dsapuballoc, dsapubfree, dsaprivalloc, dsaprivfree, dsasigalloc, dsasigfree, dsaprivtopub - digital signature algorithm
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
9 cfa37a7b 2004-04-10 devnull .B #include <mp.h>
11 cfa37a7b 2004-04-10 devnull .B #include <libsec.h>
14 cfa37a7b 2004-04-10 devnull DSApriv* dsagen(DSApub *opub)
17 cfa37a7b 2004-04-10 devnull DSAsig* dsasign(DSApriv *k, mpint *m)
20 cfa37a7b 2004-04-10 devnull int dsaverify(DSApub *k, DSAsig *sig, mpint *m)
23 cfa37a7b 2004-04-10 devnull DSApub* dsapuballoc(void)
26 cfa37a7b 2004-04-10 devnull void dsapubfree(DSApub*)
29 cfa37a7b 2004-04-10 devnull DSApriv* dsaprivalloc(void)
32 cfa37a7b 2004-04-10 devnull void dsaprivfree(DSApriv*)
35 cfa37a7b 2004-04-10 devnull DSAsig* dsasigalloc(void)
38 cfa37a7b 2004-04-10 devnull void dsasigfree(DSAsig*)
41 cfa37a7b 2004-04-10 devnull DSApub* dsaprivtopub(DSApriv*)
42 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
44 cfa37a7b 2004-04-10 devnull DSA is the NIST approved digital signature algorithm. The owner of a key publishes
45 cfa37a7b 2004-04-10 devnull the public part of the key:
47 cfa37a7b 2004-04-10 devnull struct DSApub
49 cfa37a7b 2004-04-10 devnull mpint *p; // modulus
50 cfa37a7b 2004-04-10 devnull mpint *q; // group order, q divides p-1
51 cfa37a7b 2004-04-10 devnull mpint *alpha; // group generator
52 cfa37a7b 2004-04-10 devnull mpint *key; // alpha**secret mod p
55 cfa37a7b 2004-04-10 devnull This part can be used for verifying signatures (with
56 cfa37a7b 2004-04-10 devnull .IR dsaverify )
57 cfa37a7b 2004-04-10 devnull created by the owner.
58 cfa37a7b 2004-04-10 devnull The owner signs (with
59 cfa37a7b 2004-04-10 devnull .IR dsasign )
60 cfa37a7b 2004-04-10 devnull using his private key:
62 cfa37a7b 2004-04-10 devnull struct DSApriv
64 cfa37a7b 2004-04-10 devnull DSApub pub;
65 cfa37a7b 2004-04-10 devnull mpint *secret; // (decryption key)
69 cfa37a7b 2004-04-10 devnull Keys are generated using
70 cfa37a7b 2004-04-10 devnull .IR dsagen .
72 cfa37a7b 2004-04-10 devnull .IR dsagen 's
76 cfa37a7b 2004-04-10 devnull .BR nil ,
77 cfa37a7b 2004-04-10 devnull a key is created using a new
81 cfa37a7b 2004-04-10 devnull generated by
82 bf8a59fa 2004-04-11 devnull .IR DSAprimes (3).
83 cfa37a7b 2004-04-10 devnull Otherwise,
87 cfa37a7b 2004-04-10 devnull are copied from the old key.
89 cfa37a7b 2004-04-10 devnull .I Dsaprivtopub
90 cfa37a7b 2004-04-10 devnull returns a newly allocated copy of the public key
91 cfa37a7b 2004-04-10 devnull corresponding to the private key.
93 cfa37a7b 2004-04-10 devnull The routines
94 cfa37a7b 2004-04-10 devnull .IR dsapuballoc ,
95 cfa37a7b 2004-04-10 devnull .IR dsapubfree ,
96 cfa37a7b 2004-04-10 devnull .IR dsaprivalloc ,
98 cfa37a7b 2004-04-10 devnull .I dsaprivfree
99 cfa37a7b 2004-04-10 devnull are provided to manage key storage.
101 cfa37a7b 2004-04-10 devnull .I Dsasign
102 cfa37a7b 2004-04-10 devnull signs message
104 cfa37a7b 2004-04-10 devnull using a private key
106 cfa37a7b 2004-04-10 devnull yielding a
108 cfa37a7b 2004-04-10 devnull struct DSAsig
110 cfa37a7b 2004-04-10 devnull mpint *r, *s;
113 cfa37a7b 2004-04-10 devnull .I Dsaverify
114 cfa37a7b 2004-04-10 devnull returns 0 if the signature is valid and \-1 if not.
116 cfa37a7b 2004-04-10 devnull The routines
117 cfa37a7b 2004-04-10 devnull .I dsasigalloc
119 cfa37a7b 2004-04-10 devnull .I dsasigfree
120 cfa37a7b 2004-04-10 devnull are provided to manage signature storage.
121 cfa37a7b 2004-04-10 devnull .SH SOURCE
122 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/libsec
123 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
124 bf8a59fa 2004-04-11 devnull .IR mp (3),
125 bf8a59fa 2004-04-11 devnull .IR aes (3),
126 bf8a59fa 2004-04-11 devnull .IR blowfish (3),
127 bf8a59fa 2004-04-11 devnull .IR des (3),
128 bf8a59fa 2004-04-11 devnull .IR rc4 (3),
129 bf8a59fa 2004-04-11 devnull .IR rsa (3),
130 bf8a59fa 2004-04-11 devnull .IR sechash (3),
131 bf8a59fa 2004-04-11 devnull .IR prime (3),
132 bf8a59fa 2004-04-11 devnull .IR rand (3)