1.\" Automatically generated by Pod::Man version 1.15
|
2.\" Tue Jul 30 09:21:42 2002
|
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.6e" "2000-11-12" "OpenSSL"
|
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. |
|