BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 /**
2 * @file BHash.h
3 * @author Ambroz Bizjak <ambrop7@gmail.com>
4 *
5 * @section LICENSE
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of the author nor the
15 * names of its contributors may be used to endorse or promote products
16 * derived from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
29 * @section DESCRIPTION
30 *
31 * Cryptographic hash funtions abstraction.
32 */
33  
34 #ifndef BADVPN_SECURITY_BHASH_H
35 #define BADVPN_SECURITY_BHASH_H
36  
37 #include <stdint.h>
38  
39 #include <openssl/md5.h>
40 #include <openssl/sha.h>
41  
42 #include <misc/debug.h>
43  
44 #define BHASH_TYPE_MD5 1
45 #define BHASH_TYPE_MD5_SIZE 16
46  
47 #define BHASH_TYPE_SHA1 2
48 #define BHASH_TYPE_SHA1_SIZE 20
49  
50 #define BHASH_MAX_SIZE 20
51  
52 /**
53 * Checks if the given hash type number is valid.
54 *
55 * @param type hash type number
56 * @return 1 if valid, 0 if not
57 */
58 int BHash_type_valid (int type);
59  
60 /**
61 * Returns the size of a hash.
62 *
63 * @param cipher hash type number. Must be valid.
64 * @return hash size in bytes
65 */
66 int BHash_size (int type);
67  
68 /**
69 * Calculates a hash.
70 * {@link BSecurity_GlobalInitThreadSafe} must have been done if this is
71 * being called from a non-main thread.
72 *
73 * @param type hash type number. Must be valid.
74 * @param data data to calculate the hash of
75 * @param data_len length of data
76 * @param out the hash will be written here. Must not overlap with data.
77 */
78 void BHash_calculate (int type, uint8_t *data, int data_len, uint8_t *out);
79  
80 #endif