Current Path : /usr/opt/openssl11/share/doc/openssl/html/man3/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/opt/openssl11/share/doc/openssl/html/man3/BIO_f_cipher.html |
<?xml version="1.0" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>BIO_f_cipher</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rev="made" href="mailto:root@hsxx.drive.ne.jp" /> </head> <body style="background-color: white"> <!-- INDEX BEGIN --> <div name="index"> <p><a name="__index__"></a></p> <ul> <li><a href="#name">NAME</a></li> <li><a href="#synopsis">SYNOPSIS</a></li> <li><a href="#description">DESCRIPTION</a></li> <li><a href="#notes">NOTES</a></li> <li><a href="#return_values">RETURN VALUES</a></li> <li><a href="#copyright">COPYRIGHT</a></li> </ul> <hr name="index" /> </div> <!-- INDEX END --> <p> </p> <hr /> <h1><a name="name">NAME</a></h1> <p>BIO_f_cipher, BIO_set_cipher, BIO_get_cipher_status, BIO_get_cipher_ctx - cipher BIO filter</p> <p> </p> <hr /> <h1><a name="synopsis">SYNOPSIS</a></h1> <pre> #include <openssl/bio.h> #include <openssl/evp.h></pre> <pre> const BIO_METHOD *BIO_f_cipher(void); void BIO_set_cipher(BIO *b, const EVP_CIPHER *cipher, unsigned char *key, unsigned char *iv, int enc); int BIO_get_cipher_status(BIO *b) int BIO_get_cipher_ctx(BIO *b, EVP_CIPHER_CTX **pctx)</pre> <p> </p> <hr /> <h1><a name="description">DESCRIPTION</a></h1> <p><code>BIO_f_cipher()</code> returns the cipher BIO method. This is a filter BIO that encrypts any data written through it, and decrypts any data read from it. It is a BIO wrapper for the cipher routines <code>EVP_CipherInit()</code>, <code>EVP_CipherUpdate()</code> and <code>EVP_CipherFinal()</code>.</p> <p>Cipher BIOs do not support <code>BIO_gets()</code> or <code>BIO_puts()</code>.</p> <p><code>BIO_flush()</code> on an encryption BIO that is being written through is used to signal that no more data is to be encrypted: this is used to flush and possibly pad the final block through the BIO.</p> <p><code>BIO_set_cipher()</code> sets the cipher of BIO <strong>b</strong> to <strong>cipher</strong> using key <strong>key</strong> and IV <strong>iv</strong>. <strong>enc</strong> should be set to 1 for encryption and zero for decryption.</p> <p>When reading from an encryption BIO the final block is automatically decrypted and checked when EOF is detected. <code>BIO_get_cipher_status()</code> is a <code>BIO_ctrl()</code> macro which can be called to determine whether the decryption operation was successful.</p> <p><code>BIO_get_cipher_ctx()</code> is a <code>BIO_ctrl()</code> macro which retrieves the internal BIO cipher context. The retrieved context can be used in conjunction with the standard cipher routines to set it up. This is useful when <code>BIO_set_cipher()</code> is not flexible enough for the applications needs.</p> <p> </p> <hr /> <h1><a name="notes">NOTES</a></h1> <p>When encrypting <code>BIO_flush()</code> <strong>must</strong> be called to flush the final block through the BIO. If it is not then the final block will fail a subsequent decrypt.</p> <p>When decrypting an error on the final block is signaled by a zero return value from the read operation. A successful decrypt followed by EOF will also return zero for the final read. <code>BIO_get_cipher_status()</code> should be called to determine if the decrypt was successful.</p> <p>As always, if <code>BIO_gets()</code> or <code>BIO_puts()</code> support is needed then it can be achieved by preceding the cipher BIO with a buffering BIO.</p> <p> </p> <hr /> <h1><a name="return_values">RETURN VALUES</a></h1> <p><code>BIO_f_cipher()</code> returns the cipher BIO method.</p> <p><code>BIO_set_cipher()</code> does not return a value.</p> <p><code>BIO_get_cipher_status()</code> returns 1 for a successful decrypt and 0 for failure.</p> <p><code>BIO_get_cipher_ctx()</code> currently always returns 1.</p> <p> </p> <hr /> <h1><a name="copyright">COPYRIGHT</a></h1> <p>Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.</p> <p>Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <a href="https://www.openssl.org/source/license.html">https://www.openssl.org/source/license.html</a>.</p> </body> </html>