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 bf8a59fa 2004-04-11 devnull .IR DSAprimes (3).
83 cfa37a7b 2004-04-10 devnull Otherwise,
84 cfa37a7b 2004-04-10 devnull .B p
85 cfa37a7b 2004-04-10 devnull and
86 cfa37a7b 2004-04-10 devnull .B q
87 cfa37a7b 2004-04-10 devnull are copied from the old key.
88 cfa37a7b 2004-04-10 devnull .PP
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.
92 cfa37a7b 2004-04-10 devnull .PP
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 ,
97 cfa37a7b 2004-04-10 devnull and
98 cfa37a7b 2004-04-10 devnull .I dsaprivfree
99 cfa37a7b 2004-04-10 devnull are provided to manage key storage.
100 cfa37a7b 2004-04-10 devnull .PP
101 cfa37a7b 2004-04-10 devnull .I Dsasign
102 cfa37a7b 2004-04-10 devnull signs message
103 cfa37a7b 2004-04-10 devnull .I m
104 cfa37a7b 2004-04-10 devnull using a private key
105 cfa37a7b 2004-04-10 devnull .I k
106 cfa37a7b 2004-04-10 devnull yielding a
107 cfa37a7b 2004-04-10 devnull .EX
108 cfa37a7b 2004-04-10 devnull struct DSAsig
109 cfa37a7b 2004-04-10 devnull {
110 cfa37a7b 2004-04-10 devnull mpint *r, *s;
111 cfa37a7b 2004-04-10 devnull };
112 cfa37a7b 2004-04-10 devnull .EE
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.
115 cfa37a7b 2004-04-10 devnull .PP
116 cfa37a7b 2004-04-10 devnull The routines
117 cfa37a7b 2004-04-10 devnull .I dsasigalloc
118 cfa37a7b 2004-04-10 devnull and
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)