~ubuntu-branches/ubuntu/hardy/openssl/hardy-security

« back to all changes in this revision

Viewing changes to doc/crypto/BIO_f_cipher.pod

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Martin
  • Date: 2004-05-24 17:02:29 UTC
  • Revision ID: james.westby@ubuntu.com-20040524170229-ixlo08bbbly0xied
Tags: upstream-0.9.7d
ImportĀ upstreamĀ versionĀ 0.9.7d

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
=pod
 
2
 
 
3
=head1 NAME
 
4
 
 
5
BIO_f_cipher, BIO_set_cipher, BIO_get_cipher_status, BIO_get_cipher_ctx - cipher BIO filter
 
6
 
 
7
=head1 SYNOPSIS
 
8
 
 
9
 #include <openssl/bio.h>
 
10
 #include <openssl/evp.h>
 
11
 
 
12
 BIO_METHOD *   BIO_f_cipher(void);
 
13
 void BIO_set_cipher(BIO *b,const EVP_CIPHER *cipher,
 
14
                unsigned char *key, unsigned char *iv, int enc);
 
15
 int BIO_get_cipher_status(BIO *b)
 
16
 int BIO_get_cipher_ctx(BIO *b, EVP_CIPHER_CTX **pctx)
 
17
 
 
18
=head1 DESCRIPTION
 
19
 
 
20
BIO_f_cipher() returns the cipher BIO method. This is a filter
 
21
BIO that encrypts any data written through it, and decrypts any data
 
22
read from it. It is a BIO wrapper for the cipher routines
 
23
EVP_CipherInit(), EVP_CipherUpdate() and EVP_CipherFinal().
 
24
 
 
25
Cipher BIOs do not support BIO_gets() or BIO_puts(). 
 
26
 
 
27
BIO_flush() on an encryption BIO that is being written through is
 
28
used to signal that no more data is to be encrypted: this is used
 
29
to flush and possibly pad the final block through the BIO.
 
30
 
 
31
BIO_set_cipher() sets the cipher of BIO B<b> to B<cipher> using key B<key>
 
32
and IV B<iv>. B<enc> should be set to 1 for encryption and zero for
 
33
decryption.
 
34
 
 
35
When reading from an encryption BIO the final block is automatically
 
36
decrypted and checked when EOF is detected. BIO_get_cipher_status()
 
37
is a BIO_ctrl() macro which can be called to determine whether the
 
38
decryption operation was successful.
 
39
 
 
40
BIO_get_cipher_ctx() is a BIO_ctrl() macro which retrieves the internal
 
41
BIO cipher context. The retrieved context can be used in conjunction
 
42
with the standard cipher routines to set it up. This is useful when
 
43
BIO_set_cipher() is not flexible enough for the applications needs.
 
44
 
 
45
=head1 NOTES
 
46
 
 
47
When encrypting BIO_flush() B<must> be called to flush the final block
 
48
through the BIO. If it is not then the final block will fail a subsequent
 
49
decrypt.
 
50
 
 
51
When decrypting an error on the final block is signalled by a zero
 
52
return value from the read operation. A successful decrypt followed
 
53
by EOF will also return zero for the final read. BIO_get_cipher_status()
 
54
should be called to determine if the decrypt was successful.
 
55
 
 
56
As always, if BIO_gets() or BIO_puts() support is needed then it can
 
57
be achieved by preceding the cipher BIO with a buffering BIO.
 
58
 
 
59
=head1 RETURN VALUES
 
60
 
 
61
BIO_f_cipher() returns the cipher BIO method.
 
62
 
 
63
BIO_set_cipher() does not return a value.
 
64
 
 
65
BIO_get_cipher_status() returns 1 for a successful decrypt and 0
 
66
for failure.
 
67
 
 
68
BIO_get_cipher_ctx() currently always returns 1.
 
69
 
 
70
=head1 EXAMPLES
 
71
 
 
72
TBA
 
73
 
 
74
=head1 SEE ALSO
 
75
 
 
76
TBA