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 SPKAC 1 "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 spkac \- SPKAC printing and generating utility
193 \fBopenssl\fR \fBspkac\fR
194 [\fB\-in filename\fR]
195 [\fB\-out filename\fR]
196 [\fB\-key keyfile\fR]
198 [\fB\-challenge string\fR]
200 [\fB\-spkac spkacname\fR]
201 [\fB\-spksect section\fR]
206 The \fBspkac\fR command processes Netscape signed public key and challenge
207 (SPKAC) files. It can print out their contents, verify the signature and
208 produce its own SPKACs from a supplied private key.
209 .SH "COMMAND OPTIONS"
210 .Ip "\fB\-in filename\fR" 4
211 This specifies the input filename to read from or standard input if this
212 option is not specified. Ignored if the \fB\-key\fR option is used.
213 .Ip "\fB\-out filename\fR" 4
214 specifies the output filename to write to or standard output by
216 .Ip "\fB\-key keyfile\fR" 4
217 create an \s-1SPKAC\s0 file using the private key in \fBkeyfile\fR. The
218 \fB\-in\fR, \fB\-noout\fR, \fB\-spksect\fR and \fB\-verify\fR options are ignored if
220 .Ip "\fB\-passin password\fR" 4
221 the input file password source. For more information about the format of \fBarg\fR
222 see the \fB\s-1PASS\s0 \s-1PHRASE\s0 \s-1ARGUMENTS\s0\fR section in openssl(1).
223 .Ip "\fB\-challenge string\fR" 4
224 specifies the challenge string if an \s-1SPKAC\s0 is being created.
225 .Ip "\fB\-spkac spkacname\fR" 4
226 allows an alternative name form the variable containing the
227 \s-1SPKAC\s0. The default is \*(L"\s-1SPKAC\s0\*(R". This option affects both
228 generated and input \s-1SPKAC\s0 files.
229 .Ip "\fB\-spksect section\fR" 4
230 allows an alternative name form the section containing the
231 \s-1SPKAC\s0. The default is the default section.
232 .Ip "\fB\-noout\fR" 4
233 don't output the text version of the \s-1SPKAC\s0 (not used if an
234 \s-1SPKAC\s0 is being created).
235 .Ip "\fB\-pubkey\fR" 4
236 output the public key of an \s-1SPKAC\s0 (not used if an \s-1SPKAC\s0 is
238 .Ip "\fB\-verify\fR" 4
239 verifies the digital signature on the supplied \s-1SPKAC\s0.
240 .Ip "\fB\-engine id\fR" 4
241 specifying an engine (by it's unique \fBid\fR string) will cause \fBreq\fR
242 to attempt to obtain a functional reference to the specified engine,
243 thus initialising it if needed. The engine will then be set as the default
244 for all available algorithms.
246 Print out the contents of an SPKAC:
249 \& openssl spkac -in spkac.cnf
251 Verify the signature of an SPKAC:
254 \& openssl spkac -in spkac.cnf -noout -verify
256 Create an SPKAC using the challenge string \*(L"hello":
259 \& openssl spkac -key key.pem -challenge hello -out spkac.cnf
261 Example of an SPKAC, (long lines split up for clarity):
264 \& SPKAC=MIG5MGUwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA1cCoq2Wa3Ixs47uI7F\e
265 \& PVwHVIPDx5yso105Y6zpozam135a8R0CpoRvkkigIyXfcCjiVi5oWk+6FfPaD03u\e
266 \& PFoQIDAQABFgVoZWxsbzANBgkqhkiG9w0BAQQFAANBAFpQtY/FojdwkJh1bEIYuc\e
267 \& 2EeM2KHTWPEepWYeawvHD0gQ3DngSC75YCWnnDdq+NQ3F+X4deMx9AaEglZtULwV\e
271 A created SPKAC with suitable DN components appended can be fed into
272 the \fBca\fR utility.
274 SPKACs are typically generated by Netscape when a form is submitted
275 containing the \fBKEYGEN\fR tag as part of the certificate enrollment
278 The challenge string permits a primitive form of proof of possession
279 of private key. By checking the SPKAC signature and a random challenge
280 string some guarantee is given that the user knows the private key
281 corresponding to the public key being certified. This is important in
282 some applications. Without this it is possible for a previous SPKAC
283 to be used in a \*(L"replay attack\*(R".
289 .IX Name "spkac - SPKAC printing and generating utility"
293 .IX Header "SYNOPSIS"
295 .IX Header "DESCRIPTION"
297 .IX Header "COMMAND OPTIONS"
299 .IX Item "\fB\-in filename\fR"
301 .IX Item "\fB\-out filename\fR"
303 .IX Item "\fB\-key keyfile\fR"
305 .IX Item "\fB\-passin password\fR"
307 .IX Item "\fB\-challenge string\fR"
309 .IX Item "\fB\-spkac spkacname\fR"
311 .IX Item "\fB\-spksect section\fR"
313 .IX Item "\fB\-noout\fR"
315 .IX Item "\fB\-pubkey\fR"
317 .IX Item "\fB\-verify\fR"
319 .IX Item "\fB\-engine id\fR"
321 .IX Header "EXAMPLES"
325 .IX Header "SEE ALSO"