=pod

=head1 NAME

storeutl - STORE utility

=head1 SYNOPSIS

B<openssl> B<storeutl>
[B<-help>]
[B<-out file>]
[B<-noout>]
[B<-passin arg>]
[B<-text arg>]
[B<-engine id>]
B<uri> ...

=head1 DESCRIPTION

The B<storeutl> command can be used to display the contents (after decryption
as the case may be) fetched from the given URIs.

=head1 OPTIONS

=over 4

=item B<-help>

Print out a usage message.

=item B<-out filename>

specifies the output filename to write to or standard output by
default.

=item B<-noout>

this option prevents output of the PEM data.

=item B<-passin arg>

the key password source. For more information about the format of B<arg>
see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.

=item B<-text>

Prints out the objects in text form, similarly to the B<-text> output from
B<openssl x509>, B<openssl pkey>, etc.

=item B<-engine id>

specifying an engine (by its unique B<id> string) will cause B<storeutl>
to attempt to obtain a functional reference to the specified engine,
thus initialising it if needed.
The engine will then be set as the default for all available algorithms.

=back

=head1 SEE ALSO

L<openssl(1)>

=head1 HISTORY

B<openssl> B<storeutl> was added to OpenSSL 1.1.1.

=head1 COPYRIGHT

Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut
