1 | =pod
|
---|
2 |
|
---|
3 | =head1 NAME
|
---|
4 |
|
---|
5 | BF_set_key, BF_encrypt, BF_decrypt, BF_ecb_encrypt, BF_cbc_encrypt,
|
---|
6 | BF_cfb64_encrypt, BF_ofb64_encrypt, BF_options - Blowfish encryption
|
---|
7 |
|
---|
8 | =head1 SYNOPSIS
|
---|
9 |
|
---|
10 | #include <openssl/blowfish.h>
|
---|
11 |
|
---|
12 | The following functions have been deprecated since OpenSSL 3.0, and can be
|
---|
13 | hidden entirely by defining B<OPENSSL_API_COMPAT> with a suitable version value,
|
---|
14 | see L<openssl_user_macros(7)>:
|
---|
15 |
|
---|
16 | void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
|
---|
17 |
|
---|
18 | void BF_ecb_encrypt(const unsigned char *in, unsigned char *out,
|
---|
19 | BF_KEY *key, int enc);
|
---|
20 | void BF_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
---|
21 | long length, BF_KEY *schedule,
|
---|
22 | unsigned char *ivec, int enc);
|
---|
23 | void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
---|
24 | long length, BF_KEY *schedule,
|
---|
25 | unsigned char *ivec, int *num, int enc);
|
---|
26 | void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out,
|
---|
27 | long length, BF_KEY *schedule,
|
---|
28 | unsigned char *ivec, int *num);
|
---|
29 | const char *BF_options(void);
|
---|
30 |
|
---|
31 | void BF_encrypt(BF_LONG *data, const BF_KEY *key);
|
---|
32 | void BF_decrypt(BF_LONG *data, const BF_KEY *key);
|
---|
33 |
|
---|
34 | =head1 DESCRIPTION
|
---|
35 |
|
---|
36 | All of the functions described on this page are deprecated. Applications should
|
---|
37 | instead use L<EVP_EncryptInit_ex(3)>, L<EVP_EncryptUpdate(3)> and
|
---|
38 | L<EVP_EncryptFinal_ex(3)> or the equivalently named decrypt functions.
|
---|
39 |
|
---|
40 | This library implements the Blowfish cipher, which was invented and described
|
---|
41 | by Counterpane (see http://www.counterpane.com/blowfish.html ).
|
---|
42 |
|
---|
43 | Blowfish is a block cipher that operates on 64 bit (8 byte) blocks of data.
|
---|
44 | It uses a variable size key, but typically, 128 bit (16 byte) keys are
|
---|
45 | considered good for strong encryption. Blowfish can be used in the same
|
---|
46 | modes as DES (see L<des_modes(7)>). Blowfish is currently one
|
---|
47 | of the faster block ciphers. It is quite a bit faster than DES, and much
|
---|
48 | faster than IDEA or RC2.
|
---|
49 |
|
---|
50 | Blowfish consists of a key setup phase and the actual encryption or decryption
|
---|
51 | phase.
|
---|
52 |
|
---|
53 | BF_set_key() sets up the B<BF_KEY> B<key> using the B<len> bytes long key
|
---|
54 | at B<data>.
|
---|
55 |
|
---|
56 | BF_ecb_encrypt() is the basic Blowfish encryption and decryption function.
|
---|
57 | It encrypts or decrypts the first 64 bits of B<in> using the key B<key>,
|
---|
58 | putting the result in B<out>. B<enc> decides if encryption (B<BF_ENCRYPT>)
|
---|
59 | or decryption (B<BF_DECRYPT>) shall be performed. The vector pointed at by
|
---|
60 | B<in> and B<out> must be 64 bits in length, no less. If they are larger,
|
---|
61 | everything after the first 64 bits is ignored.
|
---|
62 |
|
---|
63 | The mode functions BF_cbc_encrypt(), BF_cfb64_encrypt() and BF_ofb64_encrypt()
|
---|
64 | all operate on variable length data. They all take an initialization vector
|
---|
65 | B<ivec> which needs to be passed along into the next call of the same function
|
---|
66 | for the same message. B<ivec> may be initialized with anything, but the
|
---|
67 | recipient needs to know what it was initialized with, or it won't be able
|
---|
68 | to decrypt. Some programs and protocols simplify this, like SSH, where
|
---|
69 | B<ivec> is simply initialized to zero.
|
---|
70 | BF_cbc_encrypt() operates on data that is a multiple of 8 bytes long, while
|
---|
71 | BF_cfb64_encrypt() and BF_ofb64_encrypt() are used to encrypt a variable
|
---|
72 | number of bytes (the amount does not have to be an exact multiple of 8). The
|
---|
73 | purpose of the latter two is to simulate stream ciphers, and therefore, they
|
---|
74 | need the parameter B<num>, which is a pointer to an integer where the current
|
---|
75 | offset in B<ivec> is stored between calls. This integer must be initialized
|
---|
76 | to zero when B<ivec> is initialized.
|
---|
77 |
|
---|
78 | BF_cbc_encrypt() is the Cipher Block Chaining function for Blowfish. It
|
---|
79 | encrypts or decrypts the 64 bits chunks of B<in> using the key B<schedule>,
|
---|
80 | putting the result in B<out>. B<enc> decides if encryption (BF_ENCRYPT) or
|
---|
81 | decryption (BF_DECRYPT) shall be performed. B<ivec> must point at an 8 byte
|
---|
82 | long initialization vector.
|
---|
83 |
|
---|
84 | BF_cfb64_encrypt() is the CFB mode for Blowfish with 64 bit feedback.
|
---|
85 | It encrypts or decrypts the bytes in B<in> using the key B<schedule>,
|
---|
86 | putting the result in B<out>. B<enc> decides if encryption (B<BF_ENCRYPT>)
|
---|
87 | or decryption (B<BF_DECRYPT>) shall be performed. B<ivec> must point at an
|
---|
88 | 8 byte long initialization vector. B<num> must point at an integer which must
|
---|
89 | be initially zero.
|
---|
90 |
|
---|
91 | BF_ofb64_encrypt() is the OFB mode for Blowfish with 64 bit feedback.
|
---|
92 | It uses the same parameters as BF_cfb64_encrypt(), which must be initialized
|
---|
93 | the same way.
|
---|
94 |
|
---|
95 | BF_encrypt() and BF_decrypt() are the lowest level functions for Blowfish
|
---|
96 | encryption. They encrypt/decrypt the first 64 bits of the vector pointed by
|
---|
97 | B<data>, using the key B<key>. These functions should not be used unless you
|
---|
98 | implement 'modes' of Blowfish. The alternative is to use BF_ecb_encrypt().
|
---|
99 | If you still want to use these functions, you should be aware that they take
|
---|
100 | each 32-bit chunk in host-byte order, which is little-endian on little-endian
|
---|
101 | platforms and big-endian on big-endian ones.
|
---|
102 |
|
---|
103 | =head1 RETURN VALUES
|
---|
104 |
|
---|
105 | None of the functions presented here return any value.
|
---|
106 |
|
---|
107 | =head1 NOTE
|
---|
108 |
|
---|
109 | Applications should use the higher level functions
|
---|
110 | L<EVP_EncryptInit(3)> etc. instead of calling these
|
---|
111 | functions directly.
|
---|
112 |
|
---|
113 | =head1 SEE ALSO
|
---|
114 |
|
---|
115 | L<EVP_EncryptInit(3)>,
|
---|
116 | L<des_modes(7)>
|
---|
117 |
|
---|
118 | =head1 HISTORY
|
---|
119 |
|
---|
120 | All of these functions were deprecated in OpenSSL 3.0.
|
---|
121 |
|
---|
122 | =head1 COPYRIGHT
|
---|
123 |
|
---|
124 | Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
|
---|
125 |
|
---|
126 | Licensed under the Apache License 2.0 (the "License"). You may not use
|
---|
127 | this file except in compliance with the License. You can obtain a copy
|
---|
128 | in the file LICENSE in the source distribution or at
|
---|
129 | L<https://www.openssl.org/source/license.html>.
|
---|
130 |
|
---|
131 | =cut
|
---|