Deleted Added
sdiff udiff text old ( 100947 ) new ( 110010 )
full compact
1.\" Automatically generated by Pod::Man version 1.15
2.\" Mon Jan 13 19:28:08 2003
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.7" "2003-01-13" "OpenSSL"
142.UC
143.SH "NAME"
144EVP_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"
160The \s-1EVP\s0 envelope routines are a high level interface to envelope
161encryption. They generate a random key and then \*(L"envelope\*(R" it by
162using public key encryption. Data can then be encrypted using this
163key.
164.PP
165\&\fIEVP_SealInit()\fR initializes a cipher context \fBctx\fR for encryption
166with cipher \fBtype\fR using a random secret key and \s-1IV\s0 supplied in
167the \fBiv\fR parameter. \fBtype\fR is normally supplied by a function such
168as \fIEVP_des_cbc()\fR. The secret key is encrypted using one or more public
169keys, this allows the same encrypted data to be decrypted using any
170of the corresponding private keys. \fBek\fR is an array of buffers where
171the public key encrypted secret key will be written, each buffer must
172contain 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
174size of each encrypted secret key is written to the array \fBekl\fR. \fBpubk\fR is
175an array of \fBnpubk\fR public keys.
176.PP
177\&\fIEVP_SealUpdate()\fR and \fIEVP_SealFinal()\fR have exactly the same properties
178as the \fIEVP_EncryptUpdate()\fR and \fIEVP_EncryptFinal()\fR routines, as
179documented on the EVP_EncryptInit(3) manual
180page.
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
186failure.
187.SH "NOTES"
188.IX Header "NOTES"
189Because a random secret key is generated the random number generator
190must be seeded before calling \fIEVP_SealInit()\fR.
191.PP
192The public key must be \s-1RSA\s0 because it is the only OpenSSL public key
193algorithm that supports key transport.
194.PP
195Envelope encryption is the usual method of using public key encryption
196on large amounts of data, this is because public key encryption is slow
197but symmetric encryption is fast. So symmetric encryption is used for
198bulk encryption and the small random symmetric key used is transferred
199using public key encryption.
200.PP
201It 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
203and (after setting any cipher parameters) it should be called again
204with \fBtype\fR set to \s-1NULL\s0.
205.SH "SEE ALSO"
206.IX Header "SEE ALSO"
207evp(3), rand(3),
208EVP_EncryptInit(3),
209EVP_OpenInit(3)
210.SH "HISTORY"
211.IX Header "HISTORY"
212\&\fIEVP_SealFinal()\fR did not return a value before OpenSSL 0.9.7.