Blame


1 cfa37a7b 2004-04-10 devnull .TH DSA 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
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>
6 cfa37a7b 2004-04-10 devnull .br
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
8 cfa37a7b 2004-04-10 devnull .br
9 cfa37a7b 2004-04-10 devnull .B #include <mp.h>
10 cfa37a7b 2004-04-10 devnull .br
11 cfa37a7b 2004-04-10 devnull .B #include <libsec.h>
12 cfa37a7b 2004-04-10 devnull .PP
13 cfa37a7b 2004-04-10 devnull .B
14 cfa37a7b 2004-04-10 devnull DSApriv* dsagen(DSApub *opub)
15 cfa37a7b 2004-04-10 devnull .PP
16 cfa37a7b 2004-04-10 devnull .B
17 cfa37a7b 2004-04-10 devnull DSAsig* dsasign(DSApriv *k, mpint *m)
18 cfa37a7b 2004-04-10 devnull .PP
19 cfa37a7b 2004-04-10 devnull .B
20 cfa37a7b 2004-04-10 devnull int dsaverify(DSApub *k, DSAsig *sig, mpint *m)
21 cfa37a7b 2004-04-10 devnull .PP
22 cfa37a7b 2004-04-10 devnull .B
23 cfa37a7b 2004-04-10 devnull DSApub* dsapuballoc(void)
24 cfa37a7b 2004-04-10 devnull .PP
25 cfa37a7b 2004-04-10 devnull .B
26 cfa37a7b 2004-04-10 devnull void dsapubfree(DSApub*)
27 cfa37a7b 2004-04-10 devnull .PP
28 cfa37a7b 2004-04-10 devnull .B
29 cfa37a7b 2004-04-10 devnull DSApriv* dsaprivalloc(void)
30 cfa37a7b 2004-04-10 devnull .PP
31 cfa37a7b 2004-04-10 devnull .B
32 cfa37a7b 2004-04-10 devnull void dsaprivfree(DSApriv*)
33 cfa37a7b 2004-04-10 devnull .PP
34 cfa37a7b 2004-04-10 devnull .B
35 cfa37a7b 2004-04-10 devnull DSAsig* dsasigalloc(void)
36 cfa37a7b 2004-04-10 devnull .PP
37 cfa37a7b 2004-04-10 devnull .B
38 cfa37a7b 2004-04-10 devnull void dsasigfree(DSAsig*)
39 cfa37a7b 2004-04-10 devnull .PP
40 cfa37a7b 2004-04-10 devnull .B
41 cfa37a7b 2004-04-10 devnull DSApub* dsaprivtopub(DSApriv*)
42 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
43 cfa37a7b 2004-04-10 devnull .PP
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:
46 cfa37a7b 2004-04-10 devnull .EX
47 cfa37a7b 2004-04-10 devnull struct DSApub
48 cfa37a7b 2004-04-10 devnull {
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
53 cfa37a7b 2004-04-10 devnull };
54 cfa37a7b 2004-04-10 devnull .EE
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:
61 cfa37a7b 2004-04-10 devnull .EX
62 cfa37a7b 2004-04-10 devnull struct DSApriv
63 cfa37a7b 2004-04-10 devnull {
64 cfa37a7b 2004-04-10 devnull DSApub pub;
65 cfa37a7b 2004-04-10 devnull mpint *secret; // (decryption key)
66 cfa37a7b 2004-04-10 devnull };
67 cfa37a7b 2004-04-10 devnull .EE
68 cfa37a7b 2004-04-10 devnull .PP
69 cfa37a7b 2004-04-10 devnull Keys are generated using
70 cfa37a7b 2004-04-10 devnull .IR dsagen .
71 cfa37a7b 2004-04-10 devnull If
72 cfa37a7b 2004-04-10 devnull .IR dsagen 's
73 cfa37a7b 2004-04-10 devnull argument
74 cfa37a7b 2004-04-10 devnull .I opub
75 cfa37a7b 2004-04-10 devnull is
76 cfa37a7b 2004-04-10 devnull .BR nil ,
77 cfa37a7b 2004-04-10 devnull a key is created using a new
78 cfa37a7b 2004-04-10 devnull .B p
79 cfa37a7b 2004-04-10 devnull and
80 cfa37a7b 2004-04-10 devnull .B q
81 cfa37a7b 2004-04-10 devnull generated by
82 058b0118 2005-01-03 devnull .IR DSAprimes
83 058b0118 2005-01-03 devnull (see
84 058b0118 2005-01-03 devnull .IR prime (3)).
85 cfa37a7b 2004-04-10 devnull Otherwise,
86 cfa37a7b 2004-04-10 devnull .B p
87 cfa37a7b 2004-04-10 devnull and
88 cfa37a7b 2004-04-10 devnull .B q
89 cfa37a7b 2004-04-10 devnull are copied from the old key.
90 cfa37a7b 2004-04-10 devnull .PP
91 cfa37a7b 2004-04-10 devnull .I Dsaprivtopub
92 cfa37a7b 2004-04-10 devnull returns a newly allocated copy of the public key
93 cfa37a7b 2004-04-10 devnull corresponding to the private key.
94 cfa37a7b 2004-04-10 devnull .PP
95 cfa37a7b 2004-04-10 devnull The routines
96 cfa37a7b 2004-04-10 devnull .IR dsapuballoc ,
97 cfa37a7b 2004-04-10 devnull .IR dsapubfree ,
98 cfa37a7b 2004-04-10 devnull .IR dsaprivalloc ,
99 cfa37a7b 2004-04-10 devnull and
100 cfa37a7b 2004-04-10 devnull .I dsaprivfree
101 cfa37a7b 2004-04-10 devnull are provided to manage key storage.
102 cfa37a7b 2004-04-10 devnull .PP
103 cfa37a7b 2004-04-10 devnull .I Dsasign
104 cfa37a7b 2004-04-10 devnull signs message
105 cfa37a7b 2004-04-10 devnull .I m
106 cfa37a7b 2004-04-10 devnull using a private key
107 cfa37a7b 2004-04-10 devnull .I k
108 cfa37a7b 2004-04-10 devnull yielding a
109 cfa37a7b 2004-04-10 devnull .EX
110 cfa37a7b 2004-04-10 devnull struct DSAsig
111 cfa37a7b 2004-04-10 devnull {
112 cfa37a7b 2004-04-10 devnull mpint *r, *s;
113 cfa37a7b 2004-04-10 devnull };
114 cfa37a7b 2004-04-10 devnull .EE
115 cfa37a7b 2004-04-10 devnull .I Dsaverify
116 cfa37a7b 2004-04-10 devnull returns 0 if the signature is valid and \-1 if not.
117 cfa37a7b 2004-04-10 devnull .PP
118 cfa37a7b 2004-04-10 devnull The routines
119 cfa37a7b 2004-04-10 devnull .I dsasigalloc
120 cfa37a7b 2004-04-10 devnull and
121 cfa37a7b 2004-04-10 devnull .I dsasigfree
122 cfa37a7b 2004-04-10 devnull are provided to manage signature storage.
123 cfa37a7b 2004-04-10 devnull .SH SOURCE
124 c3674de4 2005-01-11 devnull .B \*9/src/libsec
125 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
126 bf8a59fa 2004-04-11 devnull .IR mp (3),
127 bf8a59fa 2004-04-11 devnull .IR aes (3),
128 bf8a59fa 2004-04-11 devnull .IR blowfish (3),
129 bf8a59fa 2004-04-11 devnull .IR des (3),
130 bf8a59fa 2004-04-11 devnull .IR rc4 (3),
131 bf8a59fa 2004-04-11 devnull .IR rsa (3),
132 bf8a59fa 2004-04-11 devnull .IR sechash (3),
133 bf8a59fa 2004-04-11 devnull .IR prime (3),
134 bf8a59fa 2004-04-11 devnull .IR rand (3)