Blame


1 cfa37a7b 2004-04-10 devnull .TH DSA 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 30f6ae14 2005-02-13 devnull asn1toDSApriv, 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 30f6ae14 2005-02-13 devnull .PP
43 30f6ae14 2005-02-13 devnull .B
44 30f6ae14 2005-02-13 devnull DSApriv* asn1toDSApriv(uchar *priv, int npriv)
45 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
46 cfa37a7b 2004-04-10 devnull .PP
47 cfa37a7b 2004-04-10 devnull DSA is the NIST approved digital signature algorithm. The owner of a key publishes
48 cfa37a7b 2004-04-10 devnull the public part of the key:
49 cfa37a7b 2004-04-10 devnull .EX
50 cfa37a7b 2004-04-10 devnull struct DSApub
51 cfa37a7b 2004-04-10 devnull {
52 cfa37a7b 2004-04-10 devnull mpint *p; // modulus
53 cfa37a7b 2004-04-10 devnull mpint *q; // group order, q divides p-1
54 cfa37a7b 2004-04-10 devnull mpint *alpha; // group generator
55 cfa37a7b 2004-04-10 devnull mpint *key; // alpha**secret mod p
56 cfa37a7b 2004-04-10 devnull };
57 cfa37a7b 2004-04-10 devnull .EE
58 cfa37a7b 2004-04-10 devnull This part can be used for verifying signatures (with
59 cfa37a7b 2004-04-10 devnull .IR dsaverify )
60 cfa37a7b 2004-04-10 devnull created by the owner.
61 cfa37a7b 2004-04-10 devnull The owner signs (with
62 cfa37a7b 2004-04-10 devnull .IR dsasign )
63 cfa37a7b 2004-04-10 devnull using his private key:
64 cfa37a7b 2004-04-10 devnull .EX
65 cfa37a7b 2004-04-10 devnull struct DSApriv
66 cfa37a7b 2004-04-10 devnull {
67 cfa37a7b 2004-04-10 devnull DSApub pub;
68 cfa37a7b 2004-04-10 devnull mpint *secret; // (decryption key)
69 cfa37a7b 2004-04-10 devnull };
70 cfa37a7b 2004-04-10 devnull .EE
71 cfa37a7b 2004-04-10 devnull .PP
72 cfa37a7b 2004-04-10 devnull Keys are generated using
73 cfa37a7b 2004-04-10 devnull .IR dsagen .
74 cfa37a7b 2004-04-10 devnull If
75 cfa37a7b 2004-04-10 devnull .IR dsagen 's
76 cfa37a7b 2004-04-10 devnull argument
77 cfa37a7b 2004-04-10 devnull .I opub
78 cfa37a7b 2004-04-10 devnull is
79 cfa37a7b 2004-04-10 devnull .BR nil ,
80 cfa37a7b 2004-04-10 devnull a key is created using a new
81 cfa37a7b 2004-04-10 devnull .B p
82 cfa37a7b 2004-04-10 devnull and
83 cfa37a7b 2004-04-10 devnull .B q
84 cfa37a7b 2004-04-10 devnull generated by
85 058b0118 2005-01-03 devnull .IR DSAprimes
86 058b0118 2005-01-03 devnull (see
87 d32deab1 2020-08-16 rsc .MR prime (3) ).
88 cfa37a7b 2004-04-10 devnull Otherwise,
89 cfa37a7b 2004-04-10 devnull .B p
90 cfa37a7b 2004-04-10 devnull and
91 cfa37a7b 2004-04-10 devnull .B q
92 cfa37a7b 2004-04-10 devnull are copied from the old key.
93 cfa37a7b 2004-04-10 devnull .PP
94 cfa37a7b 2004-04-10 devnull .I Dsaprivtopub
95 cfa37a7b 2004-04-10 devnull returns a newly allocated copy of the public key
96 cfa37a7b 2004-04-10 devnull corresponding to the private key.
97 cfa37a7b 2004-04-10 devnull .PP
98 cfa37a7b 2004-04-10 devnull The routines
99 cfa37a7b 2004-04-10 devnull .IR dsapuballoc ,
100 cfa37a7b 2004-04-10 devnull .IR dsapubfree ,
101 cfa37a7b 2004-04-10 devnull .IR dsaprivalloc ,
102 cfa37a7b 2004-04-10 devnull and
103 cfa37a7b 2004-04-10 devnull .I dsaprivfree
104 cfa37a7b 2004-04-10 devnull are provided to manage key storage.
105 cfa37a7b 2004-04-10 devnull .PP
106 cfa37a7b 2004-04-10 devnull .I Dsasign
107 cfa37a7b 2004-04-10 devnull signs message
108 cfa37a7b 2004-04-10 devnull .I m
109 cfa37a7b 2004-04-10 devnull using a private key
110 cfa37a7b 2004-04-10 devnull .I k
111 cfa37a7b 2004-04-10 devnull yielding a
112 cfa37a7b 2004-04-10 devnull .EX
113 cfa37a7b 2004-04-10 devnull struct DSAsig
114 cfa37a7b 2004-04-10 devnull {
115 cfa37a7b 2004-04-10 devnull mpint *r, *s;
116 cfa37a7b 2004-04-10 devnull };
117 cfa37a7b 2004-04-10 devnull .EE
118 cfa37a7b 2004-04-10 devnull .I Dsaverify
119 cfa37a7b 2004-04-10 devnull returns 0 if the signature is valid and \-1 if not.
120 cfa37a7b 2004-04-10 devnull .PP
121 cfa37a7b 2004-04-10 devnull The routines
122 cfa37a7b 2004-04-10 devnull .I dsasigalloc
123 cfa37a7b 2004-04-10 devnull and
124 cfa37a7b 2004-04-10 devnull .I dsasigfree
125 cfa37a7b 2004-04-10 devnull are provided to manage signature storage.
126 30f6ae14 2005-02-13 devnull .PP
127 30f6ae14 2005-02-13 devnull .I Asn1toDSApriv
128 30f6ae14 2005-02-13 devnull converts an ASN1 formatted DSA private key into the corresponding
129 30f6ae14 2005-02-13 devnull .B DSApriv
130 30f6ae14 2005-02-13 devnull structure; see
131 d32deab1 2020-08-16 rsc .MR rsa (3)
132 30f6ae14 2005-02-13 devnull for other ASN1 routines.
133 cfa37a7b 2004-04-10 devnull .SH SOURCE
134 c3674de4 2005-01-11 devnull .B \*9/src/libsec
135 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
136 d32deab1 2020-08-16 rsc .MR mp (3) ,
137 d32deab1 2020-08-16 rsc .MR aes (3) ,
138 d32deab1 2020-08-16 rsc .MR blowfish (3) ,
139 d32deab1 2020-08-16 rsc .MR des (3) ,
140 d32deab1 2020-08-16 rsc .MR rc4 (3) ,
141 d32deab1 2020-08-16 rsc .MR rsa (3) ,
142 d32deab1 2020-08-16 rsc .MR sechash (3) ,
143 d32deab1 2020-08-16 rsc .MR prime (3) ,
144 d32deab1 2020-08-16 rsc .MR rand (3)