Index: openssl/doc/apps/pkeyutl.pod |
=================================================================== |
--- openssl/doc/apps/pkeyutl.pod (revision 0) |
+++ openssl/doc/apps/pkeyutl.pod (revision 0) |
@@ -0,0 +1,222 @@ |
+=pod |
+ |
+=head1 NAME |
+ |
+pkeyutl - public key algorithm utility |
+ |
+=head1 SYNOPSIS |
+ |
+B<openssl> B<pkeyutl> |
+[B<-in file>] |
+[B<-out file>] |
+[B<-sigfile file>] |
+[B<-inkey file>] |
+[B<-keyform PEM|DER>] |
+[B<-passin arg>] |
+[B<-peerkey file>] |
+[B<-peerform PEM|DER>] |
+[B<-pubin>] |
+[B<-certin>] |
+[B<-rev>] |
+[B<-sign>] |
+[B<-verify>] |
+[B<-verifyrecover>] |
+[B<-encrypt>] |
+[B<-decrypt>] |
+[B<-derive>] |
+[B<-pkeyopt opt:value>] |
+[B<-hexdump>] |
+[B<-asn1parse>] |
+[B<-engine id>] |
+ |
+=head1 DESCRIPTION |
+ |
+The B<pkeyutl> command can be used to perform public key operations using |
+any supported algorithm. |
+ |
+=head1 COMMAND OPTIONS |
+ |
+=over 4 |
+ |
+=item B<-in filename> |
+ |
+This specifies the input filename to read data from or standard input |
+if this option is not specified. |
+ |
+=item B<-out filename> |
+ |
+specifies the output filename to write to or standard output by |
+default. |
+ |
+=item B<-inkey file> |
+ |
+the input key file, by default it should be a private key. |
+ |
+=item B<-keyform PEM|DER> |
+ |
+the key format PEM, DER or ENGINE. |
+ |
+=item B<-passin arg> |
+ |
+the input key password source. For more information about the format of B<arg> |
+see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)|openssl(1)>. |
+ |
+ |
+=item B<-peerkey file> |
+ |
+the peer key file, used by key derivation (agreement) operations. |
+ |
+=item B<-peerform PEM|DER> |
+ |
+the peer key format PEM, DER or ENGINE. |
+ |
+=item B<-engine id> |
+ |
+specifying an engine (by its unique B<id> string) will cause B<pkeyutl> |
+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. |
+ |
+ |
+=item B<-pubin> |
+ |
+the input file is a public key. |
+ |
+=item B<-certin> |
+ |
+the input is a certificate containing a public key. |
+ |
+=item B<-rev> |
+ |
+reverse the order of the input buffer. This is useful for some libraries |
+(such as CryptoAPI) which represent the buffer in little endian format. |
+ |
+=item B<-sign> |
+ |
+sign the input data and output the signed result. This requires |
+a private key. |
+ |
+=item B<-verify> |
+ |
+verify the input data against the signature file and indicate if the |
+verification succeeded or failed. |
+ |
+=item B<-verifyrecover> |
+ |
+verify the input data and output the recovered data. |
+ |
+=item B<-encrypt> |
+ |
+encrypt the input data using a public key. |
+ |
+=item B<-decrypt> |
+ |
+decrypt the input data using a private key. |
+ |
+=item B<-derive> |
+ |
+derive a shared secret using the peer key. |
+ |
+=item B<-hexdump> |
+ |
+hex dump the output data. |
+ |
+=item B<-asn1parse> |
+ |
+asn1parse the output data, this is useful when combined with the |
+B<-verifyrecover> option when an ASN1 structure is signed. |
+ |
+=back |
+ |
+=head1 NOTES |
+ |
+The operations and options supported vary according to the key algorithm |
+and its implementation. The OpenSSL operations and options are indicated below. |
+ |
+Unless otherwise mentioned all algorithms support the B<digest:alg> option |
+which specifies the digest in use for sign, verify and verifyrecover operations. |
+The value B<alg> should represent a digest name as used in the |
+EVP_get_digestbyname() function for example B<sha1>. |
+ |
+=head1 RSA ALGORITHM |
+ |
+The RSA algorithm supports encrypt, decrypt, sign, verify and verifyrecover |
+operations in general. Some padding modes only support some of these |
+operations however. |
+ |
+=over 4 |
+ |
+=item -B<rsa_padding_mode:mode> |
+ |
+This sets the RSA padding mode. Acceptable values for B<mode> are B<pkcs1> for |
+PKCS#1 padding, B<sslv23> for SSLv23 padding, B<none> for no padding, B<oaep> |
+for B<OAEP> mode, B<x931> for X9.31 mode and B<pss> for PSS. |
+ |
+In PKCS#1 padding if the message digest is not set then the supplied data is |
+signed or verified directly instead of using a B<DigestInfo> structure. If a |
+digest is set then the a B<DigestInfo> structure is used and its the length |
+must correspond to the digest type. |
+ |
+For B<oeap> mode only encryption and decryption is supported. |
+ |
+For B<x931> if the digest type is set it is used to format the block data |
+otherwise the first byte is used to specify the X9.31 digest ID. Sign, |
+verify and verifyrecover are can be performed in this mode. |
+ |
+For B<pss> mode only sign and verify are supported and the digest type must be |
+specified. |
+ |
+=item B<rsa_pss_saltlen:len> |
+ |
+For B<pss> mode only this option specifies the salt length. Two special values |
+are supported: -1 sets the salt length to the digest length. When signing -2 |
+sets the salt length to the maximum permissible value. When verifying -2 causes |
+the salt length to be automatically determined based on the B<PSS> block |
+structure. |
+ |
+=back |
+ |
+=head1 DSA ALGORITHM |
+ |
+The DSA algorithm supports signing and verification operations only. Currently |
+there are no additional options other than B<digest>. Only the SHA1 |
+digest can be used and this digest is assumed by default. |
+ |
+=head1 DH ALGORITHM |
+ |
+The DH algorithm only supports the derivation operation and no additional |
+options. |
+ |
+=head1 EC ALGORITHM |
+ |
+The EC algorithm supports sign, verify and derive operations. The sign and |
+verify operations use ECDSA and derive uses ECDH. Currently there are no |
+additional options other than B<digest>. Only the SHA1 digest can be used and |
+this digest is assumed by default. |
+ |
+=head1 EXAMPLES |
+ |
+Sign some data using a private key: |
+ |
+ openssl pkeyutl -sign -in file -inkey key.pem -out sig |
+ |
+Recover the signed data (e.g. if an RSA key is used): |
+ |
+ openssl pkeyutl -verifyrecover -in sig -inkey key.pem |
+ |
+Verify the signature (e.g. a DSA key): |
+ |
+ openssl pkeyutl -verify -in file -sigfile sig -inkey key.pem |
+ |
+Sign data using a message digest value (this is currently only valid for RSA): |
+ |
+ openssl pkeyutl -sign -in file -inkey key.pem -out sig -pkeyopt digest:sha256 |
+ |
+Derive a shared secret value: |
+ |
+ openssl pkeyutl -derive -inkey key.pem -peerkey pubkey.pem -out secret |
+ |
+=head1 SEE ALSO |
+ |
+L<genpkey(1)|genpkey(1)>, L<pkey(1)|pkey(1)>, L<rsautl(1)|rsautl(1)> |
+L<dgst(1)|dgst(1)>, L<rsa(1)|rsa(1)>, L<genrsa(1)|genrsa(1)> |