]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man1/openssl-rsautl.pod.in
pkey: update command line tool examples in light of deprecations.
[thirdparty/openssl.git] / doc / man1 / openssl-rsautl.pod.in
CommitLineData
bbb72003 1=pod
625c781d 2{- OpenSSL::safe::output_do_not_edit_headers(); -}
9fcb9702 3
bbb72003
DSH
4=head1 NAME
5
b6b66573 6openssl-rsautl - RSA utility
bbb72003
DSH
7
8=head1 SYNOPSIS
9
10B<openssl> B<rsautl>
169394d4 11[B<-help>]
e8769719 12[B<-in> I<file>]
65718c51
RS
13[B<-passin> I<arg>]
14[B<-rev>]
e8769719
RS
15[B<-out> I<file>]
16[B<-inkey> I<file>]
17[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
bbb72003
DSH
18[B<-pubin>]
19[B<-certin>]
20[B<-sign>]
21[B<-verify>]
22[B<-encrypt>]
23[B<-decrypt>]
24[B<-pkcs>]
65718c51
RS
25[B<-x931>]
26[B<-oaep>]
27[B<-ssl>]
28[B<-raw>]
29[B<-pkcs>]
bbb72003
DSH
30[B<-ssl>]
31[B<-raw>]
32[B<-hexdump>]
33[B<-asn1parse>]
65718c51 34{- $OpenSSL::safe::opt_engine_synopsis -}
9fcb9702 35{- $OpenSSL::safe::opt_r_synopsis -}
bbb72003 36
9f3c076b 37=for openssl ifdef engine
1738c0ce 38
bbb72003
DSH
39=head1 DESCRIPTION
40
b9f733c2
P
41This command has been deprecated.
42The L<openssl-pkeyutl(1)> command should be used instead.
43
35a810bb 44This command can be used to sign, verify, encrypt and decrypt
bbb72003
DSH
45data using the RSA algorithm.
46
3dfda1a6 47=head1 OPTIONS
bbb72003
DSH
48
49=over 4
50
169394d4
MR
51=item B<-help>
52
53Print out a usage message.
54
e8769719 55=item B<-in> I<filename>
bbb72003
DSH
56
57This specifies the input filename to read data from or standard input
58if this option is not specified.
59
65718c51
RS
60=item B<-passin> I<arg>
61
62The passphrase used in the output file.
63See see L<openssl(1)/Pass Phrase Options>.
64
65=item B<-rev>
66
67Reverse the order of the input.
68
e8769719 69=item B<-out> I<filename>
bbb72003 70
c4de074e 71Specifies the output filename to write to or standard output by
bbb72003
DSH
72default.
73
e8769719 74=item B<-inkey> I<file>
bbb72003 75
c4de074e 76The input key file, by default it should be an RSA private key.
bbb72003 77
e8769719 78=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
0c20802c 79
777182a0
RS
80The key format; the default is B<PEM>.
81See L<openssl(1)/Format Options> for details.
0c20802c 82
bbb72003
DSH
83=item B<-pubin>
84
c4de074e 85The input file is an RSA public key.
bbb72003
DSH
86
87=item B<-certin>
88
c4de074e 89The input is a certificate containing an RSA public key.
bbb72003
DSH
90
91=item B<-sign>
92
c4de074e 93Sign the input data and output the signed result. This requires
9f07c405 94an RSA private key.
bbb72003
DSH
95
96=item B<-verify>
97
c4de074e 98Verify the input data and output the recovered data.
bbb72003
DSH
99
100=item B<-encrypt>
101
c4de074e 102Encrypt the input data using an RSA public key.
bbb72003
DSH
103
104=item B<-decrypt>
105
c4de074e 106Decrypt the input data using an RSA private key.
bbb72003 107
65718c51 108=item B<-pkcs>, B<-oaep>, B<-x931> B<-ssl>, B<-raw>
bbb72003 109
c4de074e 110The padding to use: PKCS#1 v1.5 (the default), PKCS#1 OAEP,
65718c51 111ANSI X9.31,
2b40660e
BM
112special padding used in SSL v2 backwards compatible handshakes,
113or no padding, respectively.
114For signatures, only B<-pkcs> and B<-raw> can be used.
bbb72003
DSH
115
116=item B<-hexdump>
117
c4de074e 118Hex dump the output data.
bbb72003
DSH
119
120=item B<-asn1parse>
121
c4de074e 122Parse the ASN.1 output data, this is useful when combined with the
bbb72003
DSH
123B<-verify> option.
124
65718c51
RS
125{- $OpenSSL::safe::opt_engine_item -}
126
9fcb9702
RS
127{- $OpenSSL::safe::opt_r_item -}
128
bbb72003
DSH
129=back
130
131=head1 NOTES
132
35a810bb 133Since this command uses the RSA algorithm directly, it can only be
bbb72003
DSH
134used to sign or verify small pieces of data.
135
136=head1 EXAMPLES
137
35eb4588
P
138Examples equivalent to these can be found in the documentation for the
139non-deprecated L<openssl-pkeyutl(1)> command.
140
2b40660e 141Sign some data using a private key:
bbb72003
DSH
142
143 openssl rsautl -sign -in file -inkey key.pem -out sig
144
145Recover the signed data
146
0ea65947 147 openssl rsautl -verify -in sig -inkey key.pem
bbb72003
DSH
148
149Examine the raw signed data:
150
f70c22eb 151 openssl rsautl -verify -in sig -inkey key.pem -raw -hexdump
bbb72003
DSH
152
153 0000 - 00 01 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
154 0010 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
155 0020 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
156 0030 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
157 0040 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
158 0050 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
159 0060 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
160 0070 - ff ff ff ff 00 68 65 6c-6c 6f 20 77 6f 72 6c 64 .....hello world
161
162The PKCS#1 block formatting is evident from this. If this was done using
163encrypt and decrypt the block would have been of type 2 (the second byte)
164and random padding data visible instead of the 0xff bytes.
165
166It is possible to analyse the signature of certificates using this
35a810bb 167utility in conjunction with L<openssl-asn1parse(1)>. Consider the self signed
1948394d 168example in F<certs/pca-cert.pem>. Running L<openssl-asn1parse(1)> as follows
35a810bb 169yields:
bbb72003
DSH
170
171 openssl asn1parse -in pca-cert.pem
172
1bc74519
RS
173 0:d=0 hl=4 l= 742 cons: SEQUENCE
174 4:d=1 hl=4 l= 591 cons: SEQUENCE
175 8:d=2 hl=2 l= 3 cons: cont [ 0 ]
bbb72003
DSH
176 10:d=3 hl=2 l= 1 prim: INTEGER :02
177 13:d=2 hl=2 l= 1 prim: INTEGER :00
1bc74519 178 16:d=2 hl=2 l= 13 cons: SEQUENCE
bbb72003 179 18:d=3 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption
1bc74519
RS
180 29:d=3 hl=2 l= 0 prim: NULL
181 31:d=2 hl=2 l= 92 cons: SEQUENCE
182 33:d=3 hl=2 l= 11 cons: SET
183 35:d=4 hl=2 l= 9 cons: SEQUENCE
bbb72003
DSH
184 37:d=5 hl=2 l= 3 prim: OBJECT :countryName
185 42:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AU
186 ....
1bc74519 187 599:d=1 hl=2 l= 13 cons: SEQUENCE
bbb72003 188 601:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption
1bc74519
RS
189 612:d=2 hl=2 l= 0 prim: NULL
190 614:d=1 hl=3 l= 129 prim: BIT STRING
bbb72003
DSH
191
192
193The final BIT STRING contains the actual signature. It can be extracted with:
194
195 openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614
196
197The certificate public key can be extracted with:
1bc74519 198
a529a801 199 openssl x509 -in test/testx509.pem -pubkey -noout >pubkey.pem
bbb72003
DSH
200
201The signature can be analysed with:
202
203 openssl rsautl -in sig -verify -asn1parse -inkey pubkey.pem -pubin
204
1bc74519
RS
205 0:d=0 hl=2 l= 32 cons: SEQUENCE
206 2:d=1 hl=2 l= 12 cons: SEQUENCE
bbb72003 207 4:d=2 hl=2 l= 8 prim: OBJECT :md5
1bc74519
RS
208 14:d=2 hl=2 l= 0 prim: NULL
209 16:d=1 hl=2 l= 16 prim: OCTET STRING
bbb72003
DSH
210 0000 - f3 46 9e aa 1a 4a 73 c9-37 ea 93 00 48 25 08 b5 .F...Js.7...H%..
211
212This is the parsed version of an ASN1 DigestInfo structure. It can be seen that
213the digest used was md5. The actual part of the certificate that was signed can
214be extracted with:
215
216 openssl asn1parse -in pca-cert.pem -out tbs -noout -strparse 4
217
218and its digest computed with:
219
220 openssl md5 -c tbs
221 MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5
222
223which it can be seen agrees with the recovered value above.
224
225=head1 SEE ALSO
226
b6b66573 227L<openssl(1)>,
b9f733c2 228L<openssl-pkeyutl(1)>,
b6b66573
DMSP
229L<openssl-dgst(1)>,
230L<openssl-rsa(1)>,
231L<openssl-genrsa(1)>
99ec4fdb 232
b9f733c2
P
233=head1 HISTORY
234
235This command was deprecated in OpenSSL 3.0.
236
e2f92610
RS
237=head1 COPYRIGHT
238
b6b66573 239Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 240
449040b4 241Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
242this file except in compliance with the License. You can obtain a copy
243in the file LICENSE in the source distribution or at
244L<https://www.openssl.org/source/license.html>.
245
246=cut