| Index: openssl/doc/apps/smime.pod
|
| ===================================================================
|
| --- openssl/doc/apps/smime.pod (revision 105093)
|
| +++ openssl/doc/apps/smime.pod (working copy)
|
| @@ -10,19 +10,10 @@
|
| [B<-encrypt>]
|
| [B<-decrypt>]
|
| [B<-sign>]
|
| +[B<-resign>]
|
| [B<-verify>]
|
| [B<-pk7out>]
|
| -[B<-des>]
|
| -[B<-des3>]
|
| -[B<-rc2-40>]
|
| -[B<-rc2-64>]
|
| -[B<-rc2-128>]
|
| -[B<-aes128>]
|
| -[B<-aes192>]
|
| -[B<-aes256>]
|
| -[B<-camellia128>]
|
| -[B<-camellia192>]
|
| -[B<-camellia256>]
|
| +[B<-[cipher]>]
|
| [B<-in file>]
|
| [B<-certfile file>]
|
| [B<-signer file>]
|
| @@ -37,7 +28,11 @@
|
| [B<-from ad>]
|
| [B<-subject s>]
|
| [B<-text>]
|
| +[B<-indef>]
|
| +[B<-noindef>]
|
| +[B<-stream>]
|
| [B<-rand file(s)>]
|
| +[B<-md digest>]
|
| [cert.pem]...
|
|
|
| =head1 DESCRIPTION
|
| @@ -47,7 +42,7 @@
|
|
|
| =head1 COMMAND OPTIONS
|
|
|
| -There are five operation options that set the type of operation to be performed.
|
| +There are six operation options that set the type of operation to be performed.
|
| The meaning of the other options varies according to the operation type.
|
|
|
| =over 4
|
| @@ -78,6 +73,10 @@
|
|
|
| takes an input message and writes out a PEM encoded PKCS#7 structure.
|
|
|
| +=item B<-resign>
|
| +
|
| +resign a message: take an existing message and one or more new signers.
|
| +
|
| =item B<-in filename>
|
|
|
| the input message to be encrypted or signed or the MIME message to
|
| @@ -106,6 +105,21 @@
|
| structure, if no PKCS#7 structure is being output (for example with
|
| B<-verify> or B<-decrypt>) this option has no effect.
|
|
|
| +=item B<-stream -indef -noindef>
|
| +
|
| +the B<-stream> and B<-indef> options are equivalent and enable streaming I/O
|
| +for encoding operations. This permits single pass processing of data without
|
| +the need to hold the entire contents in memory, potentially supporting very
|
| +large files. Streaming is automatically set for S/MIME signing with detached
|
| +data if the output format is B<SMIME> it is currently off by default for all
|
| +other operations.
|
| +
|
| +=item B<-noindef>
|
| +
|
| +disable streaming I/O where it would produce and indefinite length constructed
|
| +encoding. This option currently has no effect. In future streaming will be
|
| +enabled by default on all relevant operations and this option will disable it.
|
| +
|
| =item B<-content filename>
|
|
|
| This specifies a file containing the detached content, this is only
|
| @@ -132,12 +146,21 @@
|
| is a hash of each subject name (using B<x509 -hash>) should be linked
|
| to each certificate.
|
|
|
| -=item B<-des -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -camellia128 -camellia192 -camellia256>
|
| +=item B<-md digest>
|
|
|
| -the encryption algorithm to use. DES (56 bits), triple DES (168 bits),
|
| -40, 64 or 128 bit RC2, 128, 192 or 256 bit AES, or 128, 192 or 256 bit Camellia respectively. If not
|
| -specified 40 bit RC2 is used. Only used with B<-encrypt>.
|
| +digest algorithm to use when signing or resigning. If not present then the
|
| +default digest algorithm for the signing key will be used (usually SHA1).
|
|
|
| +=item B<-[cipher]>
|
| +
|
| +the encryption algorithm to use. For example DES (56 bits) - B<-des>,
|
| +triple DES (168 bits) - B<-des3>,
|
| +EVP_get_cipherbyname() function) can also be used preceded by a dash, for
|
| +example B<-aes_128_cbc>. See L<B<enc>|enc(1)> for list of ciphers
|
| +supported by your version of OpenSSL.
|
| +
|
| +If not specified 40 bit RC2 is used. Only used with B<-encrypt>.
|
| +
|
| =item B<-nointern>
|
|
|
| when verifying a message normally certificates (if any) included in
|
| @@ -193,9 +216,10 @@
|
|
|
| =item B<-signer file>
|
|
|
| -the signers certificate when signing a message. If a message is
|
| -being verified then the signers certificates will be written to this
|
| -file if the verification was successful.
|
| +a signing certificate when signing or resigning a message, this option can be
|
| +used multiple times if more than one signer is required. If a message is being
|
| +verified then the signers certificates will be written to this file if the
|
| +verification was successful.
|
|
|
| =item B<-recip file>
|
|
|
| @@ -207,7 +231,8 @@
|
| the private key to use when signing or decrypting. This must match the
|
| corresponding certificate. If this option is not specified then the
|
| private key must be included in the certificate file specified with
|
| -the B<-recip> or B<-signer> file.
|
| +the B<-recip> or B<-signer> file. When signing this option can be used
|
| +multiple times to specify successive keys.
|
|
|
| =item B<-passin arg>
|
|
|
| @@ -234,6 +259,11 @@
|
| then many S/MIME mail clients check the signers certificate's email
|
| address matches that specified in the From: address.
|
|
|
| +=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig>
|
| +
|
| +Set various options of certificate chain verification. See
|
| +L<B<verify>|verify(1)> manual page for details.
|
| +
|
| =back
|
|
|
| =head1 NOTES
|
| @@ -261,6 +291,19 @@
|
| clients. Strictly speaking these process PKCS#7 enveloped data: PKCS#7
|
| encrypted data is used for other purposes.
|
|
|
| +The B<-resign> option uses an existing message digest when adding a new
|
| +signer. This means that attributes must be present in at least one existing
|
| +signer using the same message digest or this operation will fail.
|
| +
|
| +The B<-stream> and B<-indef> options enable experimental streaming I/O support.
|
| +As a result the encoding is BER using indefinite length constructed encoding
|
| +and no longer DER. Streaming is supported for the B<-encrypt> operation and the
|
| +B<-sign> operation if the content is not detached.
|
| +
|
| +Streaming is always used for the B<-sign> operation with detached data but
|
| +since the content is no longer part of the PKCS#7 structure the encoding
|
| +remains DER.
|
| +
|
| =head1 EXIT CODES
|
|
|
| =over 4
|
| @@ -300,7 +343,7 @@
|
| openssl smime -sign -in message.txt -text -out mail.msg \
|
| -signer mycert.pem
|
|
|
| -Create and opaque signed message
|
| +Create an opaque signed message:
|
|
|
| openssl smime -sign -in message.txt -text -out mail.msg -nodetach \
|
| -signer mycert.pem
|
| @@ -311,6 +354,11 @@
|
| openssl smime -sign -in in.txt -text -out mail.msg \
|
| -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem
|
|
|
| +Create a signed message with two signers:
|
| +
|
| + openssl smime -sign -in message.txt -text -out mail.msg \
|
| + -signer mycert.pem -signer othercert.pem
|
| +
|
| Send a signed message under Unix directly to sendmail, including headers:
|
|
|
| openssl smime -sign -in in.txt -text -signer mycert.pem \
|
| @@ -334,8 +382,8 @@
|
| -from steve@openssl.org -to someone@somewhere \
|
| -subject "Signed and Encrypted message" -des3 user.pem
|
|
|
| -Note: the encryption command does not include the B<-text> option because the message
|
| -being encrypted already has MIME headers.
|
| +Note: the encryption command does not include the B<-text> option because the
|
| +message being encrypted already has MIME headers.
|
|
|
| Decrypt mail:
|
|
|
| @@ -349,11 +397,11 @@
|
| -----BEGIN PKCS7-----
|
| -----END PKCS7-----
|
|
|
| -and using the command,
|
| +and using the command:
|
|
|
| openssl smime -verify -inform PEM -in signature.pem -content content.txt
|
|
|
| -alternatively you can base64 decode the signature and use
|
| +Alternatively you can base64 decode the signature and use:
|
|
|
| openssl smime -verify -inform DER -in signature.der -content content.txt
|
|
|
| @@ -361,19 +409,25 @@
|
|
|
| openssl smime -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem
|
|
|
| +Add a signer to an existing message:
|
| +
|
| + openssl smime -resign -in mail.msg -signer newsign.pem -out mail2.msg
|
| +
|
| =head1 BUGS
|
|
|
| -The MIME parser isn't very clever: it seems to handle most messages that I've thrown
|
| -at it but it may choke on others.
|
| +The MIME parser isn't very clever: it seems to handle most messages that I've
|
| +thrown at it but it may choke on others.
|
|
|
| -The code currently will only write out the signer's certificate to a file: if the
|
| -signer has a separate encryption certificate this must be manually extracted. There
|
| -should be some heuristic that determines the correct encryption certificate.
|
| +The code currently will only write out the signer's certificate to a file: if
|
| +the signer has a separate encryption certificate this must be manually
|
| +extracted. There should be some heuristic that determines the correct
|
| +encryption certificate.
|
|
|
| -Ideally a database should be maintained of a certificates for each email address.
|
| +Ideally a database should be maintained of a certificates for each email
|
| +address.
|
|
|
| The code doesn't currently take note of the permitted symmetric encryption
|
| -algorithms as supplied in the SMIMECapabilities signed attribute. this means the
|
| +algorithms as supplied in the SMIMECapabilities signed attribute. This means the
|
| user has to manually include the correct encryption algorithm. It should store
|
| the list of permitted ciphers in a database and only use those.
|
|
|
| @@ -382,4 +436,10 @@
|
| The current code can only handle S/MIME v2 messages, the more complex S/MIME v3
|
| structures may cause parsing errors.
|
|
|
| +=head1 HISTORY
|
| +
|
| +The use of multiple B<-signer> options and the B<-resign> command were first
|
| +added in OpenSSL 1.0.0
|
| +
|
| +
|
| =cut
|
|
|