1 .\" $NetBSD: libcrypto.pl,v 1.3 2007/11/27 22:16:03 christos Exp $
3 .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
6 .\" ========================================================================
7 .de Sh \" Subsection heading
15 .de Sp \" Vertical space (when we can't use .PP)
19 .de Vb \" Begin verbatim text
24 .de Ve \" End verbatim text
28 .\" Set up some character translations and predefined strings. \*(-- will
29 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
30 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
31 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
32 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
33 .\" nothing in troff, for use with C<>.
35 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
39 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
40 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
53 .\" Escape single quotes in literal strings from groff's Unicode transform.
57 .\" If the F register is turned on, we'll generate index entries on stderr for
58 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
59 .\" entries marked with X<> in POD. Of course, you'll have to process the
60 .\" output yourself in some meaningful fashion.
63 . tm Index:\\$1\t\\n%\t"\\$2"
73 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
74 .\" Fear. Run. Save yourself. No user-serviceable parts.
75 . \" fudge factors for nroff and troff
84 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
90 . \" simple accents for nroff and troff
100 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
101 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
102 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
103 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
104 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
105 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
107 . \" troff and (daisy-wheel) nroff accents
108 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
109 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
110 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
111 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
112 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
113 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
114 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
115 .ds ae a\h'-(\w'a'u*4/10)'e
116 .ds Ae A\h'-(\w'A'u*4/10)'E
117 . \" corrections for vroff
118 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
119 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
120 . \" for low resolution devices (crt and lpr)
121 .if \n(.H>23 .if \n(.V>19 \
134 .\" ========================================================================
136 .IX Title "CMS_encrypt 3"
137 .TH CMS_encrypt 3 "2008-04-10" "1.1.0-dev" "OpenSSL"
138 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
139 .\" way too many mistakes in technical documents.
144 \& CMS_encrypt \- create a CMS envelopedData structure
149 .IX Header "SYNOPSIS"
151 \& #include <openssl/cms.h>
153 \& CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags);
156 .IX Header "DESCRIPTION"
157 \&\fICMS_encrypt()\fR creates and returns a \s-1CMS\s0 EnvelopedData structure. \fBcerts\fR
158 is a list of recipient certificates. \fBin\fR is the content to be encrypted.
159 \&\fBcipher\fR is the symmetric cipher to use. \fBflags\fR is an optional set of flags.
162 Only certificates carrying \s-1RSA\s0 keys are supported so the recipient certificates
163 supplied to this function must all contain \s-1RSA\s0 public keys, though they do not
164 have to be signed using the \s-1RSA\s0 algorithm.
166 \&\fIEVP_des_ede3_cbc()\fR (triple \s-1DES\s0) is the algorithm of choice for S/MIME use
167 because most clients will support it.
169 The algorithm passed in the \fBcipher\fR parameter must support \s-1ASN1\s0 encoding of
172 Many browsers implement a \*(L"sign and encrypt\*(R" option which is simply an S/MIME
173 envelopedData containing an S/MIME signed message. This can be readily produced
174 by storing the S/MIME signed message in a memory \s-1BIO\s0 and passing it to
175 \&\fICMS_encrypt()\fR.
177 The following flags can be passed in the \fBflags\fR parameter.
179 If the \fB\s-1CMS_TEXT\s0\fR flag is set \s-1MIME\s0 headers for type \fBtext/plain\fR are
180 prepended to the data.
182 Normally the supplied content is translated into \s-1MIME\s0 canonical format (as
183 required by the S/MIME specifications) if \fB\s-1CMS_BINARY\s0\fR is set no translation
184 occurs. This option should be used if the supplied data is in binary format
185 otherwise the translation will corrupt it. If \fB\s-1CMS_BINARY\s0\fR is set then
186 \&\fB\s-1CMS_TEXT\s0\fR is ignored.
188 OpenSSL will by default identify recipient certificates using issuer name
189 and serial number. If \fB\s-1CMS_USE_KEYID\s0\fR is set it will use the subject key
190 identifier value instead. An error occurs if all recipient certificates do not
191 have a subject key identifier extension.
193 If the \fB\s-1CMS_STREAM\s0\fR flag is set a partial \fBCMS_ContentInfo\fR structure is
194 returned suitable for streaming I/O: no data is read from the \s-1BIO\s0 \fBin\fR.
196 If the \fB\s-1CMS_PARTIAL\s0\fR flag is set a partial \fBCMS_ContentInfo\fR structure is
197 returned to which additional recipients and attributes can be added before
200 The data being encrypted is included in the CMS_ContentInfo structure, unless
201 \&\fB\s-1CMS_DETACHED\s0\fR is set in which case it is omitted. This is rarely used in
202 practice and is not supported by \fISMIME_write_CMS()\fR.
205 If the flag \fB\s-1CMS_STREAM\s0\fR is set the returned \fBCMS_ContentInfo\fR structure is
206 \&\fBnot\fR complete and outputting its contents via a function that does not
207 properly finalize the \fBCMS_ContentInfo\fR structure will give unpredictable
210 Several functions including \fISMIME_write_CMS()\fR, \fIi2d_CMS_bio_stream()\fR,
211 \&\fIPEM_write_bio_CMS_stream()\fR finalize the structure. Alternatively finalization
212 can be performed by obtaining the streaming \s-1ASN1\s0 \fB\s-1BIO\s0\fR directly using
213 \&\fIBIO_new_CMS()\fR.
215 The recipients specified in \fBcerts\fR use a \s-1CMS\s0 KeyTransRecipientInfo info
216 structure. KEKRecipientInfo is also supported using the flag \fB\s-1CMS_PARTIAL\s0\fR
217 and \fICMS_add0_recipient_key()\fR.
219 The parameter \fBcerts\fR may be \s-1NULL\s0 if \fB\s-1CMS_PARTIAL\s0\fR is set and recipients
220 added later using \fICMS_add1_recipient_cert()\fR or \fICMS_add0_recipient_key()\fR.
222 .IX Header "RETURN VALUES"
223 \&\fICMS_encrypt()\fR returns either a CMS_ContentInfo structure or \s-1NULL\s0 if an error
224 occurred. The error can be obtained from \fIERR_get_error\fR\|(3).
226 .IX Header "SEE ALSO"
227 \&\fIERR_get_error\fR\|(3), \fICMS_decrypt\fR\|(3)
230 \&\fICMS_decrypt()\fR was added to OpenSSL 0.9.8
231 The \fB\s-1CMS_STREAM\s0\fR flag was first supported in OpenSSL 0.9.9.