Blob


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