2 ''' $RCSfile$$Revision$$Date$
20 .ie \\n(.$>=3 .ne \\$3
36 ''' Set up \*(-- to give an unbreakable dash;
37 ''' string Tr holds user defined translation string.
38 ''' Bell System Logo is used as a dummy character.
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
48 ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 ''' \*(L" and \*(R", except that they are used on ".xx" lines,
50 ''' such as .IP and .SH, which do another additional levels of
51 ''' double-quote interpretation
80 .\" If the F register is turned on, we'll generate
81 .\" index entries out stderr for the following things:
86 .\" X<> Xref (embedded
87 .\" Of course, you have to process the output yourself
88 .\" in some meaninful fashion.
91 .tm Index:\\$1\t\\n%\t"\\$2"
96 .TH d2i_DSAPublicKey 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ \" put $1 in typewriter font
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 . \" AM - accent mark definitions
113 . \" fudge factors for nroff and troff
122 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
128 . \" simple accents for nroff and troff
141 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
151 . \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 . \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 . \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
175 . ds v \h'-1'\o'\(aa\(ga'
191 d2i_DSAPublicKey, i2d_DSAPublicKey, d2i_DSAPrivateKey, i2d_DSAPrivateKey,
192 d2i_DSA_PUBKEY, i2d_DSA_PUBKEY, d2i_DSA_SIG, i2d_DSA_SIG \- DSA key encoding
193 and parsing functions.
197 \& #include <openssl/dsa.h>
198 \& #include <openssl/x509.h>
201 \& DSA * d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length);
204 \& int i2d_DSAPublicKey(const DSA *a, unsigned char **pp);
207 \& DSA * d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length);
210 \& int i2d_DSA_PUBKEY(const DSA *a, unsigned char **pp);
213 \& DSA * d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length);
216 \& int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
219 \& DSA * d2i_DSAparams(DSA **a, const unsigned char **pp, long length);
222 \& int i2d_DSAparams(const DSA *a, unsigned char **pp);
225 \& DSA * d2i_DSA_SIG(DSA_SIG **a, const unsigned char **pp, long length);
228 \& int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);
231 \fId2i_DSAPublicKey()\fR and \fIi2d_DSAPublicKey()\fR decode and encode the DSA public key
232 components structure.
234 \fId2i_DSA_PUBKEY()\fR and \fIi2d_DSA_PUBKEY()\fR decode and encode an DSA public key using
235 a SubjectPublicKeyInfo (certificate public key) structure.
237 \fId2i_DSAPrivateKey()\fR, \fIi2d_DSAPrivateKey()\fR decode and encode the DSA private key
240 \fId2i_DSAparams()\fR, \fIi2d_DSAparams()\fR decode and encode the DSA parameters using
241 a \fBDss-Parms\fR structure as defined in RFC2459.
243 \fId2i_DSA_SIG()\fR, \fIi2d_DSA_SIG()\fR decode and encode a DSA signature using a
244 \fBDss-Sig-Value\fR structure as defined in RFC2459.
246 The usage of all of these functions is similar to the \fId2i_X509()\fR and
247 \fIi2d_X509()\fR described in the d2i_X509(3) manual page.
249 The \fBDSA\fR structure passed to the private key encoding functions should have
250 all the private key components present.
252 The data encoded by the private key functions is unencrypted and therefore
253 offers no private key security.
255 The \fBDSA_PUBKEY\fR functions should be used in preference to the \fBDSAPublicKey\fR
256 functions when encoding public keys because they use a standard format.
258 The \fBDSAPublicKey\fR functions use an non standard format the actual data encoded
259 depends on the value of the \fBwrite_params\fR field of the \fBa\fR key parameter.
260 If \fBwrite_params\fR is zero then only the \fBpub_key\fR field is encoded as an
261 \fBINTEGER\fR. If \fBwrite_params\fR is 1 then a \fBSEQUENCE\fR consisting of the
262 \fBp\fR, \fBq\fR, \fBg\fR and \fBpub_key\fR respectively fields are encoded.
264 The \fBDSAPrivateKey\fR functions also use a non standard structure consiting
265 consisting of a SEQUENCE containing the \fBp\fR, \fBq\fR, \fBg\fR and \fBpub_key\fR and
266 \fBpriv_key\fR fields respectively.
273 .IX Title "d2i_DSAPublicKey 3"
274 .IX Name "d2i_DSAPublicKey, i2d_DSAPublicKey, d2i_DSAPrivateKey, i2d_DSAPrivateKey,
275 d2i_DSA_PUBKEY, i2d_DSA_PUBKEY, d2i_DSA_SIG, i2d_DSA_SIG - DSA key encoding
276 and parsing functions."
280 .IX Header "SYNOPSIS"
282 .IX Header "DESCRIPTION"
286 .IX Header "SEE ALSO"