]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/EVP_SealInit.3
This commit was generated by cvs2svn to compensate for changes in r109357,
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / EVP_SealInit.3
1 .\" Automatically generated by Pod::Man version 1.15
2 .\" Tue Jul 30 09:21:42 2002
3 .\"
4 .\" Standard preamble:
5 .\" ======================================================================
6 .de Sh \" Subsection heading
7 .br
8 .if t .Sp
9 .ne 5
10 .PP
11 \fB\\$1\fR
12 .PP
13 ..
14 .de Sp \" Vertical space (when we can't use .PP)
15 .if t .sp .5v
16 .if n .sp
17 ..
18 .de Ip \" List item
19 .br
20 .ie \\n(.$>=3 .ne \\$3
21 .el .ne 3
22 .IP "\\$1" \\$2
23 ..
24 .de Vb \" Begin verbatim text
25 .ft CW
26 .nf
27 .ne \\$1
28 ..
29 .de Ve \" End verbatim text
30 .ft R
31
32 .fi
33 ..
34 .\" Set up some character translations and predefined strings.  \*(-- will
35 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
36 .\" double quote, and \*(R" will give a right double quote.  | will give a
37 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used
38 .\" to do unbreakable dashes and therefore won't be available.  \*(C` and
39 .\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
40 .tr \(*W-|\(bv\*(Tr
41 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
42 .ie n \{\
43 .    ds -- \(*W-
44 .    ds PI pi
45 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
46 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
47 .    ds L" ""
48 .    ds R" ""
49 .    ds C` ""
50 .    ds C' ""
51 'br\}
52 .el\{\
53 .    ds -- \|\(em\|
54 .    ds PI \(*p
55 .    ds L" ``
56 .    ds R" ''
57 'br\}
58 .\"
59 .\" If the F register is turned on, we'll generate index entries on stderr
60 .\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
61 .\" index entries marked with X<> in POD.  Of course, you'll have to process
62 .\" the output yourself in some meaningful fashion.
63 .if \nF \{\
64 .    de IX
65 .    tm Index:\\$1\t\\n%\t"\\$2"
66 ..
67 .    nr % 0
68 .    rr F
69 .\}
70 .\"
71 .\" For nroff, turn off justification.  Always turn off hyphenation; it
72 .\" makes way too many mistakes in technical documents.
73 .hy 0
74 .if n .na
75 .\"
76 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
77 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
78 .bd B 3
79 .    \" fudge factors for nroff and troff
80 .if n \{\
81 .    ds #H 0
82 .    ds #V .8m
83 .    ds #F .3m
84 .    ds #[ \f1
85 .    ds #] \fP
86 .\}
87 .if t \{\
88 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
89 .    ds #V .6m
90 .    ds #F 0
91 .    ds #[ \&
92 .    ds #] \&
93 .\}
94 .    \" simple accents for nroff and troff
95 .if n \{\
96 .    ds ' \&
97 .    ds ` \&
98 .    ds ^ \&
99 .    ds , \&
100 .    ds ~ ~
101 .    ds /
102 .\}
103 .if t \{\
104 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
105 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
106 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
107 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
108 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
109 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
110 .\}
111 .    \" troff and (daisy-wheel) nroff accents
112 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
113 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
114 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
115 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
116 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
117 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
118 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
119 .ds ae a\h'-(\w'a'u*4/10)'e
120 .ds Ae A\h'-(\w'A'u*4/10)'E
121 .    \" corrections for vroff
122 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
123 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
124 .    \" for low resolution devices (crt and lpr)
125 .if \n(.H>23 .if \n(.V>19 \
126 \{\
127 .    ds : e
128 .    ds 8 ss
129 .    ds o a
130 .    ds d- d\h'-1'\(ga
131 .    ds D- D\h'-1'\(hy
132 .    ds th \o'bp'
133 .    ds Th \o'LP'
134 .    ds ae ae
135 .    ds Ae AE
136 .\}
137 .rm #[ #] #H #V #F C
138 .\" ======================================================================
139 .\"
140 .IX Title "EVP_SealInit 3"
141 .TH EVP_SealInit 3 "0.9.6e" "2000-11-12" "OpenSSL"
142 .UC
143 .SH "NAME"
144 EVP_SealInit, EVP_SealUpdate, EVP_SealFinal \- \s-1EVP\s0 envelope encryption
145 .SH "SYNOPSIS"
146 .IX Header "SYNOPSIS"
147 .Vb 1
148 \& #include <openssl/evp.h>
149 .Ve
150 .Vb 6
151 \& int EVP_SealInit(EVP_CIPHER_CTX *ctx, EVP_CIPHER *type, unsigned char **ek,
152 \&                int *ekl, unsigned char *iv,EVP_PKEY **pubk, int npubk);
153 \& int EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
154 \&         int *outl, unsigned char *in, int inl);
155 \& int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out,
156 \&         int *outl);
157 .Ve
158 .SH "DESCRIPTION"
159 .IX Header "DESCRIPTION"
160 The \s-1EVP\s0 envelope routines are a high level interface to envelope
161 encryption. They generate a random key and then \*(L"envelope\*(R" it by
162 using public key encryption. Data can then be encrypted using this
163 key.
164 .PP
165 \&\fIEVP_SealInit()\fR initializes a cipher context \fBctx\fR for encryption
166 with cipher \fBtype\fR using a random secret key and \s-1IV\s0 supplied in
167 the \fBiv\fR parameter. \fBtype\fR is normally supplied by a function such
168 as \fIEVP_des_cbc()\fR. The secret key is encrypted using one or more public
169 keys, this allows the same encrypted data to be decrypted using any
170 of the corresponding private keys. \fBek\fR is an array of buffers where
171 the public key encrypted secret key will be written, each buffer must
172 contain enough room for the corresponding encrypted key: that is
173 \&\fBek[i]\fR must have room for \fBEVP_PKEY_size(pubk[i])\fR bytes. The actual
174 size of each encrypted secret key is written to the array \fBekl\fR. \fBpubk\fR is
175 an array of \fBnpubk\fR public keys.
176 .PP
177 \&\fIEVP_SealUpdate()\fR and \fIEVP_SealFinal()\fR have exactly the same properties
178 as the \fIEVP_EncryptUpdate()\fR and \fIEVP_EncryptFinal()\fR routines, as 
179 documented on the EVP_EncryptInit(3) manual
180 page. 
181 .SH "RETURN VALUES"
182 .IX Header "RETURN VALUES"
183 \&\fIEVP_SealInit()\fR returns 0 on error or \fBnpubk\fR if successful.
184 .PP
185 \&\fIEVP_SealUpdate()\fR and \fIEVP_SealFinal()\fR return 1 for success and 0 for
186 failure.
187 .SH "NOTES"
188 .IX Header "NOTES"
189 Because a random secret key is generated the random number generator
190 must be seeded before calling \fIEVP_SealInit()\fR.
191 .PP
192 The public key must be \s-1RSA\s0 because it is the only OpenSSL public key
193 algorithm that supports key transport.
194 .PP
195 Envelope encryption is the usual method of using public key encryption
196 on large amounts of data, this is because public key encryption is slow
197 but symmetric encryption is fast. So symmetric encryption is used for
198 bulk encryption and the small random symmetric key used is transferred
199 using public key encryption.
200 .PP
201 It is possible to call \fIEVP_SealInit()\fR twice in the same way as
202 \&\fIEVP_EncryptInit()\fR. The first call should have \fBnpubk\fR set to 0
203 and (after setting any cipher parameters) it should be called again
204 with \fBtype\fR set to \s-1NULL\s0.
205 .SH "SEE ALSO"
206 .IX Header "SEE ALSO"
207 evp(3), rand(3),
208 EVP_EncryptInit(3),
209 EVP_OpenInit(3)
210 .SH "HISTORY"
211 .IX Header "HISTORY"