2
* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2010 Free
3
* Software Foundation, Inc.
5
* Author: Nikos Mavrogiannopoulos
7
* This file is part of GnuTLS.
9
* The GnuTLS is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public License
11
* as published by the Free Software Foundation; either version 2.1 of
12
* the License, or (at your option) any later version.
14
* This library is distributed in the hope that it will be useful, but
15
* WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with this library; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
26
#ifndef GNUTLS_HASH_INT_H
27
# define GNUTLS_HASH_INT_H
29
#include <gnutls_int.h>
30
#include <gnutls/crypto.h>
33
/* for message digests */
35
extern int crypto_mac_prio;
36
extern gnutls_crypto_mac_st _gnutls_mac_ops;
38
extern int crypto_digest_prio;
39
extern gnutls_crypto_digest_st _gnutls_digest_ops;
43
const gnutls_crypto_mac_st *cc;
49
int registered; /* true or false(0) */
52
void *gc; /* when not registered */
53
digest_reg_hd rh; /* when registered */
55
gnutls_mac_algorithm_t algorithm;
62
int _gnutls_hmac_init (digest_hd_st *, gnutls_mac_algorithm_t algorithm,
63
const void *key, int keylen);
64
int _gnutls_hmac_get_algo_len (gnutls_mac_algorithm_t algorithm);
65
int _gnutls_hmac (digest_hd_st * handle, const void *text, size_t textlen);
67
int _gnutls_hmac_fast (gnutls_mac_algorithm_t algorithm, const void *key,
68
int keylen, const void *text, size_t textlen,
71
void _gnutls_hmac_deinit (digest_hd_st * handle, void *digest);
72
void _gnutls_hmac_output (digest_hd_st * handle, void *digest);
74
int _gnutls_hash_init (digest_hd_st *, gnutls_digest_algorithm_t algorithm);
75
int _gnutls_hash_get_algo_len (gnutls_digest_algorithm_t algorithm);
76
int _gnutls_hash (digest_hd_st * handle, const void *text, size_t textlen);
77
void _gnutls_hash_deinit (digest_hd_st * handle, void *digest);
78
void _gnutls_hash_output (digest_hd_st * handle, void *digest);
81
_gnutls_hash_fast (gnutls_digest_algorithm_t algorithm,
82
const void *text, size_t textlen, void *digest);
85
int _gnutls_mac_init_ssl3 (digest_hd_st *, gnutls_mac_algorithm_t algorithm,
86
void *key, int keylen);
87
void _gnutls_mac_deinit_ssl3 (digest_hd_st * handle, void *digest);
89
int _gnutls_ssl3_generate_random (void *secret, int secret_len,
90
void *rnd, int random_len, int bytes,
92
int _gnutls_ssl3_hash_md5 (const void *first, int first_len,
93
const void *second, int second_len,
94
int ret_len, opaque * ret);
96
void _gnutls_mac_deinit_ssl3_handshake (digest_hd_st * handle, void *digest,
97
opaque * key, uint32_t key_size);
99
int _gnutls_hash_copy (digest_hd_st * dst_handle, digest_hd_st * src_handle);
101
#endif /* GNUTLS_HASH_INT_H */