Coverage Report

Created: 2023-03-26 07:33

/src/gnutls/lib/hash_int.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (C) 2000-2012 Free Software Foundation, Inc.
3
 *
4
 * Author: Nikos Mavrogiannopoulos
5
 *
6
 * This file is part of GnuTLS.
7
 *
8
 * The GnuTLS is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU Lesser General Public License
10
 * as published by the Free Software Foundation; either version 2.1 of
11
 * the License, or (at your option) any later version.
12
 *
13
 * This library is distributed in the hope that it will be useful, but
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 * Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public License
19
 * along with this program.  If not, see <https://www.gnu.org/licenses/>
20
 *
21
 */
22
23
#ifndef GNUTLS_LIB_HASH_INT_H
24
# define GNUTLS_LIB_HASH_INT_H
25
26
# include "gnutls_int.h"
27
# include <gnutls/crypto.h>
28
# include <crypto-backend.h>
29
# include <crypto.h>
30
31
/* for message digests */
32
33
extern int crypto_mac_prio;
34
extern gnutls_crypto_mac_st _gnutls_mac_ops;
35
36
extern int crypto_digest_prio;
37
extern gnutls_crypto_digest_st _gnutls_digest_ops;
38
39
typedef int (*hash_func)(void *handle, const void *text, size_t size);
40
typedef int (*nonce_func)(void *handle, const void *text, size_t size);
41
typedef int (*output_func)(void *src_ctx, void *digest, size_t digestsize);
42
typedef void (*hash_deinit_func)(void *handle);
43
typedef void *(*copy_func)(const void *handle);
44
typedef int (*setkey_func)(void *handle, const void *key, size_t keysize);
45
46
typedef struct {
47
  const mac_entry_st *e;
48
  hash_func hash;
49
  output_func output;
50
  hash_deinit_func deinit;
51
  copy_func copy;
52
53
  const void *key;  /* esoteric use by SSL3 MAC functions */
54
  int keysize;
55
56
  void *handle;
57
} digest_hd_st;
58
59
typedef struct {
60
  const mac_entry_st *e;
61
  int mac_len;
62
63
  hash_func hash;
64
  nonce_func setnonce;
65
  output_func output;
66
  hash_deinit_func deinit;
67
  copy_func copy;
68
  setkey_func setkey;
69
70
  void *handle;
71
} mac_hd_st;
72
73
/* basic functions */
74
int _gnutls_digest_exists(gnutls_digest_algorithm_t algo);
75
76
int _gnutls_mac_exists(gnutls_mac_algorithm_t algorithm);
77
int _gnutls_mac_init(mac_hd_st *, const mac_entry_st * e,
78
         const void *key, int keylen);
79
80
int _gnutls_mac_copy(const mac_hd_st * handle, mac_hd_st * dst);
81
82
int _gnutls_mac_fast(gnutls_mac_algorithm_t algorithm, const void *key,
83
         int keylen, const void *text, size_t textlen,
84
         void *digest);
85
86
inline static int
87
_gnutls_mac(mac_hd_st * handle, const void *text, size_t textlen)
88
0
{
89
0
  if (textlen > 0) {
90
0
    return handle->hash(handle->handle, text, textlen);
91
0
  }
92
0
  return 0;
93
0
}
Unexecuted instantiation: common.c:_gnutls_mac
Unexecuted instantiation: crl.c:_gnutls_mac
Unexecuted instantiation: crq.c:_gnutls_mac
Unexecuted instantiation: dn.c:_gnutls_mac
Unexecuted instantiation: extensions.c:_gnutls_mac
Unexecuted instantiation: hostname-verify.c:_gnutls_mac
Unexecuted instantiation: key_decode.c:_gnutls_mac
Unexecuted instantiation: key_encode.c:_gnutls_mac
Unexecuted instantiation: mpi.c:_gnutls_mac
Unexecuted instantiation: ocsp.c:_gnutls_mac
Unexecuted instantiation: output.c:_gnutls_mac
Unexecuted instantiation: pkcs12.c:_gnutls_mac
Unexecuted instantiation: pkcs12_bag.c:_gnutls_mac
Unexecuted instantiation: pkcs12_encr.c:_gnutls_mac
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_mac
Unexecuted instantiation: privkey_openssl.c:_gnutls_mac
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_mac
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_mac
Unexecuted instantiation: prov-seed.c:_gnutls_mac
Unexecuted instantiation: sign.c:_gnutls_mac
Unexecuted instantiation: time.c:_gnutls_mac
Unexecuted instantiation: tls_features.c:_gnutls_mac
Unexecuted instantiation: verify-high.c:_gnutls_mac
Unexecuted instantiation: verify-high2.c:_gnutls_mac
Unexecuted instantiation: verify.c:_gnutls_mac
Unexecuted instantiation: virt-san.c:_gnutls_mac
Unexecuted instantiation: x509.c:_gnutls_mac
Unexecuted instantiation: x509_dn.c:_gnutls_mac
Unexecuted instantiation: x509_ext.c:_gnutls_mac
Unexecuted instantiation: x509_write.c:_gnutls_mac
Unexecuted instantiation: attributes.c:_gnutls_mac
Unexecuted instantiation: email-verify.c:_gnutls_mac
Unexecuted instantiation: ip.c:_gnutls_mac
Unexecuted instantiation: krb5.c:_gnutls_mac
Unexecuted instantiation: name_constraints.c:_gnutls_mac
94
95
inline static void _gnutls_mac_output(mac_hd_st * handle, void *digest)
96
0
{
97
0
  if (digest != NULL) {
98
0
    handle->output(handle->handle, digest, handle->mac_len);
99
0
  }
100
0
}
Unexecuted instantiation: common.c:_gnutls_mac_output
Unexecuted instantiation: crl.c:_gnutls_mac_output
Unexecuted instantiation: crq.c:_gnutls_mac_output
Unexecuted instantiation: dn.c:_gnutls_mac_output
Unexecuted instantiation: extensions.c:_gnutls_mac_output
Unexecuted instantiation: hostname-verify.c:_gnutls_mac_output
Unexecuted instantiation: key_decode.c:_gnutls_mac_output
Unexecuted instantiation: key_encode.c:_gnutls_mac_output
Unexecuted instantiation: mpi.c:_gnutls_mac_output
Unexecuted instantiation: ocsp.c:_gnutls_mac_output
Unexecuted instantiation: output.c:_gnutls_mac_output
Unexecuted instantiation: pkcs12.c:_gnutls_mac_output
Unexecuted instantiation: pkcs12_bag.c:_gnutls_mac_output
Unexecuted instantiation: pkcs12_encr.c:_gnutls_mac_output
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_mac_output
Unexecuted instantiation: privkey_openssl.c:_gnutls_mac_output
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_mac_output
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_mac_output
Unexecuted instantiation: prov-seed.c:_gnutls_mac_output
Unexecuted instantiation: sign.c:_gnutls_mac_output
Unexecuted instantiation: time.c:_gnutls_mac_output
Unexecuted instantiation: tls_features.c:_gnutls_mac_output
Unexecuted instantiation: verify-high.c:_gnutls_mac_output
Unexecuted instantiation: verify-high2.c:_gnutls_mac_output
Unexecuted instantiation: verify.c:_gnutls_mac_output
Unexecuted instantiation: virt-san.c:_gnutls_mac_output
Unexecuted instantiation: x509.c:_gnutls_mac_output
Unexecuted instantiation: x509_dn.c:_gnutls_mac_output
Unexecuted instantiation: x509_ext.c:_gnutls_mac_output
Unexecuted instantiation: x509_write.c:_gnutls_mac_output
Unexecuted instantiation: attributes.c:_gnutls_mac_output
Unexecuted instantiation: email-verify.c:_gnutls_mac_output
Unexecuted instantiation: ip.c:_gnutls_mac_output
Unexecuted instantiation: krb5.c:_gnutls_mac_output
Unexecuted instantiation: name_constraints.c:_gnutls_mac_output
101
102
inline static int
103
_gnutls_mac_set_nonce(mac_hd_st * handle, const void *nonce, size_t n_size)
104
0
{
105
0
  if (handle->setnonce)
106
0
    return handle->setnonce(handle->handle, nonce, n_size);
107
0
  return 0;
108
0
}
Unexecuted instantiation: common.c:_gnutls_mac_set_nonce
Unexecuted instantiation: crl.c:_gnutls_mac_set_nonce
Unexecuted instantiation: crq.c:_gnutls_mac_set_nonce
Unexecuted instantiation: dn.c:_gnutls_mac_set_nonce
Unexecuted instantiation: extensions.c:_gnutls_mac_set_nonce
Unexecuted instantiation: hostname-verify.c:_gnutls_mac_set_nonce
Unexecuted instantiation: key_decode.c:_gnutls_mac_set_nonce
Unexecuted instantiation: key_encode.c:_gnutls_mac_set_nonce
Unexecuted instantiation: mpi.c:_gnutls_mac_set_nonce
Unexecuted instantiation: ocsp.c:_gnutls_mac_set_nonce
Unexecuted instantiation: output.c:_gnutls_mac_set_nonce
Unexecuted instantiation: pkcs12.c:_gnutls_mac_set_nonce
Unexecuted instantiation: pkcs12_bag.c:_gnutls_mac_set_nonce
Unexecuted instantiation: pkcs12_encr.c:_gnutls_mac_set_nonce
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_mac_set_nonce
Unexecuted instantiation: privkey_openssl.c:_gnutls_mac_set_nonce
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_mac_set_nonce
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_mac_set_nonce
Unexecuted instantiation: prov-seed.c:_gnutls_mac_set_nonce
Unexecuted instantiation: sign.c:_gnutls_mac_set_nonce
Unexecuted instantiation: time.c:_gnutls_mac_set_nonce
Unexecuted instantiation: tls_features.c:_gnutls_mac_set_nonce
Unexecuted instantiation: verify-high.c:_gnutls_mac_set_nonce
Unexecuted instantiation: verify-high2.c:_gnutls_mac_set_nonce
Unexecuted instantiation: verify.c:_gnutls_mac_set_nonce
Unexecuted instantiation: virt-san.c:_gnutls_mac_set_nonce
Unexecuted instantiation: x509.c:_gnutls_mac_set_nonce
Unexecuted instantiation: x509_dn.c:_gnutls_mac_set_nonce
Unexecuted instantiation: x509_ext.c:_gnutls_mac_set_nonce
Unexecuted instantiation: x509_write.c:_gnutls_mac_set_nonce
Unexecuted instantiation: attributes.c:_gnutls_mac_set_nonce
Unexecuted instantiation: email-verify.c:_gnutls_mac_set_nonce
Unexecuted instantiation: ip.c:_gnutls_mac_set_nonce
Unexecuted instantiation: krb5.c:_gnutls_mac_set_nonce
Unexecuted instantiation: name_constraints.c:_gnutls_mac_set_nonce
109
110
inline static int
111
_gnutls_mac_setkey(mac_hd_st * handle, const void *key, size_t key_size)
112
0
{
113
0
  return handle->setkey(handle->handle, key, key_size);
114
0
}
Unexecuted instantiation: common.c:_gnutls_mac_setkey
Unexecuted instantiation: crl.c:_gnutls_mac_setkey
Unexecuted instantiation: crq.c:_gnutls_mac_setkey
Unexecuted instantiation: dn.c:_gnutls_mac_setkey
Unexecuted instantiation: extensions.c:_gnutls_mac_setkey
Unexecuted instantiation: hostname-verify.c:_gnutls_mac_setkey
Unexecuted instantiation: key_decode.c:_gnutls_mac_setkey
Unexecuted instantiation: key_encode.c:_gnutls_mac_setkey
Unexecuted instantiation: mpi.c:_gnutls_mac_setkey
Unexecuted instantiation: ocsp.c:_gnutls_mac_setkey
Unexecuted instantiation: output.c:_gnutls_mac_setkey
Unexecuted instantiation: pkcs12.c:_gnutls_mac_setkey
Unexecuted instantiation: pkcs12_bag.c:_gnutls_mac_setkey
Unexecuted instantiation: pkcs12_encr.c:_gnutls_mac_setkey
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_mac_setkey
Unexecuted instantiation: privkey_openssl.c:_gnutls_mac_setkey
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_mac_setkey
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_mac_setkey
Unexecuted instantiation: prov-seed.c:_gnutls_mac_setkey
Unexecuted instantiation: sign.c:_gnutls_mac_setkey
Unexecuted instantiation: time.c:_gnutls_mac_setkey
Unexecuted instantiation: tls_features.c:_gnutls_mac_setkey
Unexecuted instantiation: verify-high.c:_gnutls_mac_setkey
Unexecuted instantiation: verify-high2.c:_gnutls_mac_setkey
Unexecuted instantiation: verify.c:_gnutls_mac_setkey
Unexecuted instantiation: virt-san.c:_gnutls_mac_setkey
Unexecuted instantiation: x509.c:_gnutls_mac_setkey
Unexecuted instantiation: x509_dn.c:_gnutls_mac_setkey
Unexecuted instantiation: x509_ext.c:_gnutls_mac_setkey
Unexecuted instantiation: x509_write.c:_gnutls_mac_setkey
Unexecuted instantiation: attributes.c:_gnutls_mac_setkey
Unexecuted instantiation: email-verify.c:_gnutls_mac_setkey
Unexecuted instantiation: ip.c:_gnutls_mac_setkey
Unexecuted instantiation: krb5.c:_gnutls_mac_setkey
Unexecuted instantiation: name_constraints.c:_gnutls_mac_setkey
115
116
void _gnutls_mac_deinit(mac_hd_st * handle, void *digest);
117
118
/* Hash interface */
119
int _gnutls_hash_init(digest_hd_st *, const mac_entry_st * e);
120
121
inline static int
122
_gnutls_hash(digest_hd_st * handle, const void *text, size_t textlen)
123
0
{
124
0
  if (textlen > 0) {
125
0
    return handle->hash(handle->handle, text, textlen);
126
0
  }
127
0
  return 0;
128
0
}
Unexecuted instantiation: common.c:_gnutls_hash
Unexecuted instantiation: crl.c:_gnutls_hash
Unexecuted instantiation: crq.c:_gnutls_hash
Unexecuted instantiation: dn.c:_gnutls_hash
Unexecuted instantiation: extensions.c:_gnutls_hash
Unexecuted instantiation: hostname-verify.c:_gnutls_hash
Unexecuted instantiation: key_decode.c:_gnutls_hash
Unexecuted instantiation: key_encode.c:_gnutls_hash
Unexecuted instantiation: mpi.c:_gnutls_hash
Unexecuted instantiation: ocsp.c:_gnutls_hash
Unexecuted instantiation: output.c:_gnutls_hash
Unexecuted instantiation: pkcs12.c:_gnutls_hash
Unexecuted instantiation: pkcs12_bag.c:_gnutls_hash
Unexecuted instantiation: pkcs12_encr.c:_gnutls_hash
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_hash
Unexecuted instantiation: privkey_openssl.c:_gnutls_hash
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_hash
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_hash
Unexecuted instantiation: prov-seed.c:_gnutls_hash
Unexecuted instantiation: sign.c:_gnutls_hash
Unexecuted instantiation: time.c:_gnutls_hash
Unexecuted instantiation: tls_features.c:_gnutls_hash
Unexecuted instantiation: verify-high.c:_gnutls_hash
Unexecuted instantiation: verify-high2.c:_gnutls_hash
Unexecuted instantiation: verify.c:_gnutls_hash
Unexecuted instantiation: virt-san.c:_gnutls_hash
Unexecuted instantiation: x509.c:_gnutls_hash
Unexecuted instantiation: x509_dn.c:_gnutls_hash
Unexecuted instantiation: x509_ext.c:_gnutls_hash
Unexecuted instantiation: x509_write.c:_gnutls_hash
Unexecuted instantiation: attributes.c:_gnutls_hash
Unexecuted instantiation: email-verify.c:_gnutls_hash
Unexecuted instantiation: ip.c:_gnutls_hash
Unexecuted instantiation: krb5.c:_gnutls_hash
Unexecuted instantiation: name_constraints.c:_gnutls_hash
129
130
/* when the current output is needed without calling deinit
131
 */
132
# define _gnutls_hash_output(h, d) \
133
  (h)->output((h)->handle, d, _gnutls_hash_get_algo_len((h)->e))
134
135
void _gnutls_hash_deinit(digest_hd_st * handle, void *digest);
136
137
int _gnutls_hash_copy(const digest_hd_st * handle, digest_hd_st * dst);
138
139
int
140
_gnutls_hash_fast(gnutls_digest_algorithm_t algorithm,
141
      const void *text, size_t textlen, void *digest);
142
143
# ifdef ENABLE_SSL3
144
/* helper functions */
145
int _gnutls_mac_init_ssl3(digest_hd_st *, const mac_entry_st * e,
146
        void *key, int keylen);
147
int _gnutls_mac_deinit_ssl3(digest_hd_st * handle, void *digest);
148
int _gnutls_mac_output_ssl3(digest_hd_st * handle, void *digest);
149
150
int _gnutls_ssl3_generate_random(void *secret, int secret_len,
151
         void *rnd, int random_len, int bytes,
152
         uint8_t * ret);
153
154
int _gnutls_mac_deinit_ssl3_handshake(digest_hd_st * handle, void *digest,
155
              uint8_t * key, uint32_t key_size);
156
# endif
157
158
inline static int IS_SHA(gnutls_digest_algorithm_t algo)
159
0
{
160
0
  if (algo == GNUTLS_DIG_SHA1 || algo == GNUTLS_DIG_SHA224 ||
161
0
      algo == GNUTLS_DIG_SHA256 || algo == GNUTLS_DIG_SHA384 ||
162
0
      algo == GNUTLS_DIG_SHA512)
163
0
    return 1;
164
0
  return 0;
165
0
}
Unexecuted instantiation: common.c:IS_SHA
Unexecuted instantiation: crl.c:IS_SHA
Unexecuted instantiation: crq.c:IS_SHA
Unexecuted instantiation: dn.c:IS_SHA
Unexecuted instantiation: extensions.c:IS_SHA
Unexecuted instantiation: hostname-verify.c:IS_SHA
Unexecuted instantiation: key_decode.c:IS_SHA
Unexecuted instantiation: key_encode.c:IS_SHA
Unexecuted instantiation: mpi.c:IS_SHA
Unexecuted instantiation: ocsp.c:IS_SHA
Unexecuted instantiation: output.c:IS_SHA
Unexecuted instantiation: pkcs12.c:IS_SHA
Unexecuted instantiation: pkcs12_bag.c:IS_SHA
Unexecuted instantiation: pkcs12_encr.c:IS_SHA
Unexecuted instantiation: pkcs7-crypt.c:IS_SHA
Unexecuted instantiation: privkey_openssl.c:IS_SHA
Unexecuted instantiation: privkey_pkcs8.c:IS_SHA
Unexecuted instantiation: privkey_pkcs8_pbes1.c:IS_SHA
Unexecuted instantiation: prov-seed.c:IS_SHA
Unexecuted instantiation: sign.c:IS_SHA
Unexecuted instantiation: time.c:IS_SHA
Unexecuted instantiation: tls_features.c:IS_SHA
Unexecuted instantiation: verify-high.c:IS_SHA
Unexecuted instantiation: verify-high2.c:IS_SHA
Unexecuted instantiation: verify.c:IS_SHA
Unexecuted instantiation: virt-san.c:IS_SHA
Unexecuted instantiation: x509.c:IS_SHA
Unexecuted instantiation: x509_dn.c:IS_SHA
Unexecuted instantiation: x509_ext.c:IS_SHA
Unexecuted instantiation: x509_write.c:IS_SHA
Unexecuted instantiation: attributes.c:IS_SHA
Unexecuted instantiation: email-verify.c:IS_SHA
Unexecuted instantiation: ip.c:IS_SHA
Unexecuted instantiation: krb5.c:IS_SHA
Unexecuted instantiation: name_constraints.c:IS_SHA
166
167
#endif        /* GNUTLS_LIB_HASH_INT_H */