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