1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
4 .\" ========================================================================
5 .de Sh \" Subsection heading
13 .de Sp \" Vertical space (when we can't use .PP)
17 .de Vb \" Begin verbatim text
22 .de Ve \" End verbatim text
26 .\" Set up some character translations and predefined strings. \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote. | will give a
29 .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30 .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
37 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD. Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
57 . tm Index:\\$1\t\\n%\t"\\$2"
63 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear. Run. Save yourself. No user-serviceable parts.
70 . \" fudge factors for nroff and troff
79 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
85 . \" simple accents for nroff and troff
95 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
102 . \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 . \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 . \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
129 .\" ========================================================================
131 .IX Title "BIO_f_cipher 3"
132 .TH BIO_f_cipher 3 "2005-02-24" "0.9.7d" "OpenSSL"
134 BIO_f_cipher, BIO_set_cipher, BIO_get_cipher_status, BIO_get_cipher_ctx \- cipher BIO filter
136 .IX Header "SYNOPSIS"
138 \& #include <openssl/bio.h>
139 \& #include <openssl/evp.h>
143 \& BIO_METHOD * BIO_f_cipher(void);
144 \& void BIO_set_cipher(BIO *b,const EVP_CIPHER *cipher,
145 \& unsigned char *key, unsigned char *iv, int enc);
146 \& int BIO_get_cipher_status(BIO *b)
147 \& int BIO_get_cipher_ctx(BIO *b, EVP_CIPHER_CTX **pctx)
150 .IX Header "DESCRIPTION"
151 \&\fIBIO_f_cipher()\fR returns the cipher \s-1BIO\s0 method. This is a filter
152 \&\s-1BIO\s0 that encrypts any data written through it, and decrypts any data
153 read from it. It is a \s-1BIO\s0 wrapper for the cipher routines
154 \&\fIEVP_CipherInit()\fR, \fIEVP_CipherUpdate()\fR and \fIEVP_CipherFinal()\fR.
156 Cipher BIOs do not support \fIBIO_gets()\fR or \fIBIO_puts()\fR.
158 \&\fIBIO_flush()\fR on an encryption \s-1BIO\s0 that is being written through is
159 used to signal that no more data is to be encrypted: this is used
160 to flush and possibly pad the final block through the \s-1BIO\s0.
162 \&\fIBIO_set_cipher()\fR sets the cipher of \s-1BIO\s0 \fBb\fR to \fBcipher\fR using key \fBkey\fR
163 and \s-1IV\s0 \fBiv\fR. \fBenc\fR should be set to 1 for encryption and zero for
166 When reading from an encryption \s-1BIO\s0 the final block is automatically
167 decrypted and checked when \s-1EOF\s0 is detected. \fIBIO_get_cipher_status()\fR
168 is a \fIBIO_ctrl()\fR macro which can be called to determine whether the
169 decryption operation was successful.
171 \&\fIBIO_get_cipher_ctx()\fR is a \fIBIO_ctrl()\fR macro which retrieves the internal
172 \&\s-1BIO\s0 cipher context. The retrieved context can be used in conjunction
173 with the standard cipher routines to set it up. This is useful when
174 \&\fIBIO_set_cipher()\fR is not flexible enough for the applications needs.
177 When encrypting \fIBIO_flush()\fR \fBmust\fR be called to flush the final block
178 through the \s-1BIO\s0. If it is not then the final block will fail a subsequent
181 When decrypting an error on the final block is signalled by a zero
182 return value from the read operation. A successful decrypt followed
183 by \s-1EOF\s0 will also return zero for the final read. \fIBIO_get_cipher_status()\fR
184 should be called to determine if the decrypt was successful.
186 As always, if \fIBIO_gets()\fR or \fIBIO_puts()\fR support is needed then it can
187 be achieved by preceding the cipher \s-1BIO\s0 with a buffering \s-1BIO\s0.
189 .IX Header "RETURN VALUES"
190 \&\fIBIO_f_cipher()\fR returns the cipher \s-1BIO\s0 method.
192 \&\fIBIO_set_cipher()\fR does not return a value.
194 \&\fIBIO_get_cipher_status()\fR returns 1 for a successful decrypt and 0
197 \&\fIBIO_get_cipher_ctx()\fR currently always returns 1.
199 .IX Header "EXAMPLES"
202 .IX Header "SEE ALSO"