Merge branch 'vendor/OPENSSL'
[dragonfly.git] / secure / usr.bin / openssl / man / rsautl.1
CommitLineData
e257b235 1.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
8b0cefbb
JR
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
984263bc
MD
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
8b0cefbb 13.de Sp \" Vertical space (when we can't use .PP)
984263bc
MD
14.if t .sp .5v
15.if n .sp
16..
8b0cefbb 17.de Vb \" Begin verbatim text
984263bc
MD
18.ft CW
19.nf
20.ne \\$1
21..
8b0cefbb 22.de Ve \" End verbatim text
984263bc 23.ft R
984263bc
MD
24.fi
25..
8b0cefbb
JR
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
e257b235
PA
28.\" double quote, and \*(R" will give a right double quote. \*(C+ will
29.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
30.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
31.\" nothing in troff, for use with C<>.
32.tr \(*W-
8b0cefbb 33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
984263bc 34.ie n \{\
8b0cefbb
JR
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
984263bc
MD
43'br\}
44.el\{\
8b0cefbb
JR
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
984263bc 49'br\}
8b0cefbb 50.\"
e257b235
PA
51.\" Escape single quotes in literal strings from groff's Unicode transform.
52.ie \n(.g .ds Aq \(aq
53.el .ds Aq '
54.\"
8b0cefbb
JR
55.\" If the F register is turned on, we'll generate index entries on stderr for
56.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
57.\" entries marked with X<> in POD. Of course, you'll have to process the
58.\" output yourself in some meaningful fashion.
e257b235 59.ie \nF \{\
8b0cefbb
JR
60. de IX
61. tm Index:\\$1\t\\n%\t"\\$2"
984263bc 62..
8b0cefbb
JR
63. nr % 0
64. rr F
984263bc 65.\}
e257b235
PA
66.el \{\
67. de IX
68..
69.\}
aac4ff6f 70.\"
8b0cefbb
JR
71.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
72.\" Fear. Run. Save yourself. No user-serviceable parts.
73. \" fudge factors for nroff and troff
984263bc 74.if n \{\
8b0cefbb
JR
75. ds #H 0
76. ds #V .8m
77. ds #F .3m
78. ds #[ \f1
79. ds #] \fP
984263bc
MD
80.\}
81.if t \{\
8b0cefbb
JR
82. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
83. ds #V .6m
84. ds #F 0
85. ds #[ \&
86. ds #] \&
984263bc 87.\}
8b0cefbb 88. \" simple accents for nroff and troff
984263bc 89.if n \{\
8b0cefbb
JR
90. ds ' \&
91. ds ` \&
92. ds ^ \&
93. ds , \&
94. ds ~ ~
95. ds /
984263bc
MD
96.\}
97.if t \{\
8b0cefbb
JR
98. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
99. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
100. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
101. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
102. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
103. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
984263bc 104.\}
8b0cefbb 105. \" troff and (daisy-wheel) nroff accents
984263bc
MD
106.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
107.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
108.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
109.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
110.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
111.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
112.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
113.ds ae a\h'-(\w'a'u*4/10)'e
114.ds Ae A\h'-(\w'A'u*4/10)'E
8b0cefbb 115. \" corrections for vroff
984263bc
MD
116.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
117.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
8b0cefbb 118. \" for low resolution devices (crt and lpr)
984263bc
MD
119.if \n(.H>23 .if \n(.V>19 \
120\{\
8b0cefbb
JR
121. ds : e
122. ds 8 ss
123. ds o a
124. ds d- d\h'-1'\(ga
125. ds D- D\h'-1'\(hy
126. ds th \o'bp'
127. ds Th \o'LP'
128. ds ae ae
129. ds Ae AE
984263bc
MD
130.\}
131.rm #[ #] #H #V #F C
8b0cefbb
JR
132.\" ========================================================================
133.\"
134.IX Title "RSAUTL 1"
fc468453 135.TH RSAUTL 1 "2010-02-27" "0.9.8m" "OpenSSL"
e257b235
PA
136.\" For nroff, turn off justification. Always turn off hyphenation; it makes
137.\" way too many mistakes in technical documents.
138.if n .ad l
139.nh
984263bc 140.SH "NAME"
e3cdf75b 141rsautl \- RSA utility
984263bc 142.SH "SYNOPSIS"
8b0cefbb
JR
143.IX Header "SYNOPSIS"
144\&\fBopenssl\fR \fBrsautl\fR
984263bc
MD
145[\fB\-in file\fR]
146[\fB\-out file\fR]
147[\fB\-inkey file\fR]
148[\fB\-pubin\fR]
149[\fB\-certin\fR]
150[\fB\-sign\fR]
151[\fB\-verify\fR]
152[\fB\-encrypt\fR]
153[\fB\-decrypt\fR]
154[\fB\-pkcs\fR]
155[\fB\-ssl\fR]
156[\fB\-raw\fR]
157[\fB\-hexdump\fR]
158[\fB\-asn1parse\fR]
159.SH "DESCRIPTION"
8b0cefbb 160.IX Header "DESCRIPTION"
984263bc 161The \fBrsautl\fR command can be used to sign, verify, encrypt and decrypt
8b0cefbb 162data using the \s-1RSA\s0 algorithm.
984263bc 163.SH "COMMAND OPTIONS"
8b0cefbb
JR
164.IX Header "COMMAND OPTIONS"
165.IP "\fB\-in filename\fR" 4
166.IX Item "-in filename"
984263bc
MD
167This specifies the input filename to read data from or standard input
168if this option is not specified.
8b0cefbb
JR
169.IP "\fB\-out filename\fR" 4
170.IX Item "-out filename"
984263bc
MD
171specifies the output filename to write to or standard output by
172default.
8b0cefbb
JR
173.IP "\fB\-inkey file\fR" 4
174.IX Item "-inkey file"
984263bc 175the input key file, by default it should be an \s-1RSA\s0 private key.
8b0cefbb
JR
176.IP "\fB\-pubin\fR" 4
177.IX Item "-pubin"
e257b235 178the input file is an \s-1RSA\s0 public key.
8b0cefbb
JR
179.IP "\fB\-certin\fR" 4
180.IX Item "-certin"
e257b235 181the input is a certificate containing an \s-1RSA\s0 public key.
8b0cefbb
JR
182.IP "\fB\-sign\fR" 4
183.IX Item "-sign"
984263bc
MD
184sign the input data and output the signed result. This requires
185and \s-1RSA\s0 private key.
8b0cefbb
JR
186.IP "\fB\-verify\fR" 4
187.IX Item "-verify"
984263bc 188verify the input data and output the recovered data.
8b0cefbb
JR
189.IP "\fB\-encrypt\fR" 4
190.IX Item "-encrypt"
984263bc 191encrypt the input data using an \s-1RSA\s0 public key.
8b0cefbb
JR
192.IP "\fB\-decrypt\fR" 4
193.IX Item "-decrypt"
984263bc 194decrypt the input data using an \s-1RSA\s0 private key.
8b0cefbb
JR
195.IP "\fB\-pkcs, \-oaep, \-ssl, \-raw\fR" 4
196.IX Item "-pkcs, -oaep, -ssl, -raw"
197the padding to use: PKCS#1 v1.5 (the default), PKCS#1 \s-1OAEP\s0,
984263bc
MD
198special padding used in \s-1SSL\s0 v2 backwards compatible handshakes,
199or no padding, respectively.
200For signatures, only \fB\-pkcs\fR and \fB\-raw\fR can be used.
8b0cefbb
JR
201.IP "\fB\-hexdump\fR" 4
202.IX Item "-hexdump"
984263bc 203hex dump the output data.
8b0cefbb
JR
204.IP "\fB\-asn1parse\fR" 4
205.IX Item "-asn1parse"
984263bc 206asn1parse the output data, this is useful when combined with the
8b0cefbb 207\&\fB\-verify\fR option.
984263bc 208.SH "NOTES"
8b0cefbb
JR
209.IX Header "NOTES"
210\&\fBrsautl\fR because it uses the \s-1RSA\s0 algorithm directly can only be
984263bc
MD
211used to sign or verify small pieces of data.
212.SH "EXAMPLES"
8b0cefbb 213.IX Header "EXAMPLES"
984263bc
MD
214Sign some data using a private key:
215.PP
216.Vb 1
e257b235 217\& openssl rsautl \-sign \-in file \-inkey key.pem \-out sig
984263bc 218.Ve
8b0cefbb 219.PP
984263bc
MD
220Recover the signed data
221.PP
222.Vb 1
e257b235 223\& openssl rsautl \-verify \-in sig \-inkey key.pem
984263bc 224.Ve
8b0cefbb 225.PP
984263bc
MD
226Examine the raw signed data:
227.PP
228.Vb 1
e257b235
PA
229\& openssl rsautl \-verify \-in file \-inkey key.pem \-raw \-hexdump
230\&
231\& 0000 \- 00 01 ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................
232\& 0010 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................
233\& 0020 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................
234\& 0030 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................
235\& 0040 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................
236\& 0050 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................
237\& 0060 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................
238\& 0070 \- ff ff ff ff 00 68 65 6c\-6c 6f 20 77 6f 72 6c 64 .....hello world
984263bc 239.Ve
8b0cefbb 240.PP
984263bc
MD
241The PKCS#1 block formatting is evident from this. If this was done using
242encrypt and decrypt the block would have been of type 2 (the second byte)
243and random padding data visible instead of the 0xff bytes.
244.PP
245It is possible to analyse the signature of certificates using this
246utility in conjunction with \fBasn1parse\fR. Consider the self signed
8b0cefbb 247example in certs/pca\-cert.pem . Running \fBasn1parse\fR as follows yields:
984263bc
MD
248.PP
249.Vb 1
e257b235
PA
250\& openssl asn1parse \-in pca\-cert.pem
251\&
984263bc
MD
252\& 0:d=0 hl=4 l= 742 cons: SEQUENCE
253\& 4:d=1 hl=4 l= 591 cons: SEQUENCE
254\& 8:d=2 hl=2 l= 3 cons: cont [ 0 ]
255\& 10:d=3 hl=2 l= 1 prim: INTEGER :02
256\& 13:d=2 hl=2 l= 1 prim: INTEGER :00
257\& 16:d=2 hl=2 l= 13 cons: SEQUENCE
258\& 18:d=3 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption
259\& 29:d=3 hl=2 l= 0 prim: NULL
260\& 31:d=2 hl=2 l= 92 cons: SEQUENCE
261\& 33:d=3 hl=2 l= 11 cons: SET
262\& 35:d=4 hl=2 l= 9 cons: SEQUENCE
263\& 37:d=5 hl=2 l= 3 prim: OBJECT :countryName
264\& 42:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AU
265\& ....
266\& 599:d=1 hl=2 l= 13 cons: SEQUENCE
267\& 601:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption
268\& 612:d=2 hl=2 l= 0 prim: NULL
8b0cefbb 269\& 614:d=1 hl=3 l= 129 prim: BIT STRING
984263bc 270.Ve
8b0cefbb
JR
271.PP
272The final \s-1BIT\s0 \s-1STRING\s0 contains the actual signature. It can be extracted with:
984263bc
MD
273.PP
274.Vb 1
e257b235 275\& openssl asn1parse \-in pca\-cert.pem \-out sig \-noout \-strparse 614
984263bc 276.Ve
8b0cefbb 277.PP
984263bc 278The certificate public key can be extracted with:
8b0cefbb
JR
279.PP
280.Vb 1
e257b235 281\& openssl x509 \-in test/testx509.pem \-pubkey \-noout >pubkey.pem
8b0cefbb 282.Ve
984263bc 283.PP
984263bc
MD
284The signature can be analysed with:
285.PP
286.Vb 1
e257b235
PA
287\& openssl rsautl \-in sig \-verify \-asn1parse \-inkey pubkey.pem \-pubin
288\&
984263bc
MD
289\& 0:d=0 hl=2 l= 32 cons: SEQUENCE
290\& 2:d=1 hl=2 l= 12 cons: SEQUENCE
291\& 4:d=2 hl=2 l= 8 prim: OBJECT :md5
292\& 14:d=2 hl=2 l= 0 prim: NULL
293\& 16:d=1 hl=2 l= 16 prim: OCTET STRING
e257b235 294\& 0000 \- f3 46 9e aa 1a 4a 73 c9\-37 ea 93 00 48 25 08 b5 .F...Js.7...H%..
984263bc 295.Ve
8b0cefbb
JR
296.PP
297This is the parsed version of an \s-1ASN1\s0 DigestInfo structure. It can be seen that
984263bc
MD
298the digest used was md5. The actual part of the certificate that was signed can
299be extracted with:
300.PP
301.Vb 1
e257b235 302\& openssl asn1parse \-in pca\-cert.pem \-out tbs \-noout \-strparse 4
984263bc 303.Ve
8b0cefbb 304.PP
984263bc
MD
305and its digest computed with:
306.PP
307.Vb 2
e257b235 308\& openssl md5 \-c tbs
984263bc
MD
309\& MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5
310.Ve
8b0cefbb 311.PP
984263bc
MD
312which it can be seen agrees with the recovered value above.
313.SH "SEE ALSO"
e3cdf75b 314.IX Header "SEE ALSO"
8b0cefbb 315\&\fIdgst\fR\|(1), \fIrsa\fR\|(1), \fIgenrsa\fR\|(1)