OpenCoverage

hmac.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/hmac/hmac.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: hmac.c,v 1.25 2018/02/17 14:53:58 jsing Exp $ */-
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
3 * All rights reserved.-
4 *-
5 * This package is an SSL implementation written-
6 * by Eric Young (eay@cryptsoft.com).-
7 * The implementation was written so as to conform with Netscapes SSL.-
8 *-
9 * This library is free for commercial and non-commercial use as long as-
10 * the following conditions are aheared to. The following conditions-
11 * apply to all code found in this distribution, be it the RC4, RSA,-
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation-
13 * included with this distribution is covered by the same copyright terms-
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
15 *-
16 * Copyright remains Eric Young's, and as such any Copyright notices in-
17 * the code are not to be removed.-
18 * If this package is used in a product, Eric Young should be given attribution-
19 * as the author of the parts of the library used.-
20 * This can be in the form of a textual message at program startup or-
21 * in documentation (online or textual) provided with the package.-
22 *-
23 * Redistribution and use in source and binary forms, with or without-
24 * modification, are permitted provided that the following conditions-
25 * are met:-
26 * 1. Redistributions of source code must retain the copyright-
27 * notice, this list of conditions and the following disclaimer.-
28 * 2. Redistributions in binary form must reproduce the above copyright-
29 * notice, this list of conditions and the following disclaimer in the-
30 * documentation and/or other materials provided with the distribution.-
31 * 3. All advertising materials mentioning features or use of this software-
32 * must display the following acknowledgement:-
33 * "This product includes cryptographic software written by-
34 * Eric Young (eay@cryptsoft.com)"-
35 * The word 'cryptographic' can be left out if the rouines from the library-
36 * being used are not cryptographic related :-).-
37 * 4. If you include any Windows specific code (or a derivative thereof) from-
38 * the apps directory (application code) you must include an acknowledgement:-
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
40 *-
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
51 * SUCH DAMAGE.-
52 *-
53 * The licence and distribution terms for any publically available version or-
54 * derivative of this code cannot be changed. i.e. this code cannot simply be-
55 * copied and put under another distribution licence-
56 * [including the GNU Public Licence.]-
57 */-
58-
59#include <stdio.h>-
60#include <stdlib.h>-
61#include <string.h>-
62-
63#include <openssl/err.h>-
64#include <openssl/hmac.h>-
65-
66int-
67HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md,-
68 ENGINE *impl)-
69{-
70 int i, j, reset = 0;-
71 unsigned char pad[HMAC_MAX_MD_CBLOCK];-
72-
73 /* If we are changing MD then we must have a key */-
74 if (md != NULL && md != ctx->md && (key == NULL || len < 0))
md != ((void *)0)Description
TRUEevaluated 8908 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 31 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
md != ctx->mdDescription
TRUEevaluated 1916 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 6992 times by 3 tests
Evaluated by:
  • ssltest
  • tls_prf
  • tlstest
key == ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • hmactest
FALSEevaluated 1914 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
len < 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • hmactest
FALSEevaluated 1913 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
1-8908
75 return 0;
executed 3 times by 1 test: return 0;
Executed by:
  • hmactest
3
76-
77 if (md != NULL) {
md != ((void *)0)Description
TRUEevaluated 8905 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 31 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
31-8905
78 reset = 1;-
79 ctx->md = md;-
80 } else if (ctx->md != NULL)
executed 8905 times by 6 tests: end of block
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
ctx->md != ((void *)0)Description
TRUEevaluated 29 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
FALSEevaluated 2 times by 1 test
Evaluated by:
  • hmactest
2-8905
81 md = ctx->md;
executed 29 times by 2 tests: md = ctx->md;
Executed by:
  • hkdftest
  • hmactest
29
82 else-
83 return 0;
executed 2 times by 1 test: return 0;
Executed by:
  • hmactest
2
84-
85 if (key != NULL) {
key != ((void *)0)Description
TRUEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 28 times by 1 test
Evaluated by:
  • hkdftest
28-8906
86 reset = 1;-
87 j = EVP_MD_block_size(md);-
88 if ((size_t)j > sizeof(ctx->key)) {
(size_t)j > sizeof(ctx->key)Description
TRUEnever evaluated
FALSEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-8906
89 EVPerror(EVP_R_BAD_BLOCK_LENGTH);-
90 goto err;
never executed: goto err;
0
91 }-
92 if (j < len) {
j < lenDescription
TRUEevaluated 52 times by 2 tests
Evaluated by:
  • hkdftest
  • ssltest
FALSEevaluated 8854 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
52-8854
93 if (!EVP_DigestInit_ex(&ctx->md_ctx, md, impl))
!EVP_DigestIni...ctx, md, impl)Description
TRUEnever evaluated
FALSEevaluated 52 times by 2 tests
Evaluated by:
  • hkdftest
  • ssltest
0-52
94 goto err;
never executed: goto err;
0
95 if (!EVP_DigestUpdate(&ctx->md_ctx, key, len))
!EVP_DigestUpd...ctx, key, len)Description
TRUEnever evaluated
FALSEevaluated 52 times by 2 tests
Evaluated by:
  • hkdftest
  • ssltest
0-52
96 goto err;
never executed: goto err;
0
97 if (!EVP_DigestFinal_ex(&(ctx->md_ctx), ctx->key,
!EVP_DigestFin...x->key_length)Description
TRUEnever evaluated
FALSEevaluated 52 times by 2 tests
Evaluated by:
  • hkdftest
  • ssltest
0-52
98 &ctx->key_length))
!EVP_DigestFin...x->key_length)Description
TRUEnever evaluated
FALSEevaluated 52 times by 2 tests
Evaluated by:
  • hkdftest
  • ssltest
0-52
99 goto err;
never executed: goto err;
0
100 } else {
executed 52 times by 2 tests: end of block
Executed by:
  • hkdftest
  • ssltest
52
101 if (len < 0 || (size_t)len > sizeof(ctx->key)) {
len < 0Description
TRUEnever evaluated
FALSEevaluated 8854 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
(size_t)len > sizeof(ctx->key)Description
TRUEnever evaluated
FALSEevaluated 8854 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-8854
102 EVPerror(EVP_R_BAD_KEY_LENGTH);-
103 goto err;
never executed: goto err;
0
104 }-
105 memcpy(ctx->key, key, len);-
106 ctx->key_length = len;-
107 }
executed 8854 times by 6 tests: end of block
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8854
108 if (ctx->key_length != HMAC_MAX_MD_CBLOCK)
ctx->key_length != 128Description
TRUEevaluated 8902 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 4 times by 1 test
Evaluated by:
  • ssltest
4-8902
109 memset(&ctx->key[ctx->key_length], 0,
executed 8902 times by 6 tests: memset(&ctx->key[ctx->key_length], 0, 128 - ctx->key_length);
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8902
110 HMAC_MAX_MD_CBLOCK - ctx->key_length);
executed 8902 times by 6 tests: memset(&ctx->key[ctx->key_length], 0, 128 - ctx->key_length);
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8902
111 }
executed 8906 times by 6 tests: end of block
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8906
112-
113 if (reset) {
resetDescription
TRUEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 28 times by 1 test
Evaluated by:
  • hkdftest
28-8906
114 for (i = 0; i < HMAC_MAX_MD_CBLOCK; i++)
i < 128Description
TRUEevaluated 1139968 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8906-1139968
115 pad[i] = 0x36 ^ ctx->key[i];
executed 1139968 times by 6 tests: pad[i] = 0x36 ^ ctx->key[i];
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
1139968
116 if (!EVP_DigestInit_ex(&ctx->i_ctx, md, impl))
!EVP_DigestIni...ctx, md, impl)Description
TRUEnever evaluated
FALSEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-8906
117 goto err;
never executed: goto err;
0
118 if (!EVP_DigestUpdate(&ctx->i_ctx, pad, EVP_MD_block_size(md)))
!EVP_DigestUpd...lock_size(md))Description
TRUEnever evaluated
FALSEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-8906
119 goto err;
never executed: goto err;
0
120-
121 for (i = 0; i < HMAC_MAX_MD_CBLOCK; i++)
i < 128Description
TRUEevaluated 1139968 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8906-1139968
122 pad[i] = 0x5c ^ ctx->key[i];
executed 1139968 times by 6 tests: pad[i] = 0x5c ^ ctx->key[i];
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
1139968
123 if (!EVP_DigestInit_ex(&ctx->o_ctx, md, impl))
!EVP_DigestIni...ctx, md, impl)Description
TRUEnever evaluated
FALSEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-8906
124 goto err;
never executed: goto err;
0
125 if (!EVP_DigestUpdate(&ctx->o_ctx, pad, EVP_MD_block_size(md)))
!EVP_DigestUpd...lock_size(md))Description
TRUEnever evaluated
FALSEevaluated 8906 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-8906
126 goto err;
never executed: goto err;
0
127 }
executed 8906 times by 6 tests: end of block
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8906
128 if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->i_ctx))
!EVP_MD_CTX_co..., &ctx->i_ctx)Description
TRUEnever evaluated
FALSEevaluated 8934 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-8934
129 goto err;
never executed: goto err;
0
130 return 1;
executed 8934 times by 6 tests: return 1;
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
8934
131err:-
132 return 0;
never executed: return 0;
0
133}-
134-
135int-
136HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md)-
137{-
138 if (key && md)
keyDescription
TRUEevaluated 18 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
FALSEnever evaluated
mdDescription
TRUEevaluated 18 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
FALSEnever evaluated
0-18
139 HMAC_CTX_init(ctx);
executed 18 times by 2 tests: HMAC_CTX_init(ctx);
Executed by:
  • hkdftest
  • hmactest
18
140 return HMAC_Init_ex(ctx, key, len, md, NULL);
executed 18 times by 2 tests: return HMAC_Init_ex(ctx, key, len, md, ((void *)0) );
Executed by:
  • hkdftest
  • hmactest
18
141}-
142-
143int-
144HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len)-
145{-
146 if (ctx->md == NULL)
ctx->md == ((void *)0)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • hmactest
FALSEevaluated 75871 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
3-75871
147 return 0;
executed 3 times by 1 test: return 0;
Executed by:
  • hmactest
3
148-
149 return EVP_DigestUpdate(&ctx->md_ctx, data, len);
executed 75871 times by 6 tests: return EVP_DigestUpdate(&ctx->md_ctx, data, len);
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
75871
150}-
151-
152int-
153HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)-
154{-
155 unsigned int i;-
156 unsigned char buf[EVP_MAX_MD_SIZE];-
157-
158 if (ctx->md == NULL)
ctx->md == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 54112 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54112
159 goto err;
never executed: goto err;
0
160-
161 if (!EVP_DigestFinal_ex(&ctx->md_ctx, buf, &i))
!EVP_DigestFin..._ctx, buf, &i)Description
TRUEnever evaluated
FALSEevaluated 54112 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54112
162 goto err;
never executed: goto err;
0
163 if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->o_ctx))
!EVP_MD_CTX_co..., &ctx->o_ctx)Description
TRUEnever evaluated
FALSEevaluated 54112 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54112
164 goto err;
never executed: goto err;
0
165 if (!EVP_DigestUpdate(&ctx->md_ctx, buf, i))
!EVP_DigestUpd...d_ctx, buf, i)Description
TRUEnever evaluated
FALSEevaluated 54112 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54112
166 goto err;
never executed: goto err;
0
167 if (!EVP_DigestFinal_ex(&ctx->md_ctx, md, len))
!EVP_DigestFin..._ctx, md, len)Description
TRUEnever evaluated
FALSEevaluated 54112 times by 6 tests
Evaluated by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54112
168 goto err;
never executed: goto err;
0
169 return 1;
executed 54112 times by 6 tests: return 1;
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
54112
170err:-
171 return 0;
never executed: return 0;
0
172}-
173-
174HMAC_CTX *-
175HMAC_CTX_new(void)-
176{-
177 HMAC_CTX *ctx;-
178-
179 if ((ctx = calloc(1, sizeof(*ctx))) == NULL)
(ctx = calloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
180 return NULL;
never executed: return ((void *)0) ;
0
181-
182 HMAC_CTX_init(ctx);-
183-
184 return ctx;
never executed: return ctx;
0
185}-
186-
187void-
188HMAC_CTX_free(HMAC_CTX *ctx)-
189{-
190 if (ctx == NULL)
ctx == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEnever evaluated
0-1
191 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
192-
193 HMAC_CTX_cleanup(ctx);-
194-
195 free(ctx);-
196}
never executed: end of block
0
197-
198int-
199HMAC_CTX_reset(HMAC_CTX *ctx)-
200{-
201 HMAC_CTX_cleanup(ctx);-
202 HMAC_CTX_init(ctx);-
203 return 1;
never executed: return 1;
0
204}-
205-
206void-
207HMAC_CTX_init(HMAC_CTX *ctx)-
208{-
209 EVP_MD_CTX_init(&ctx->i_ctx);-
210 EVP_MD_CTX_init(&ctx->o_ctx);-
211 EVP_MD_CTX_init(&ctx->md_ctx);-
212 ctx->md = NULL;-
213}
executed 22527 times by 6 tests: end of block
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
22527
214-
215int-
216HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx)-
217{-
218 if (!EVP_MD_CTX_copy(&dctx->i_ctx, &sctx->i_ctx))
!EVP_MD_CTX_co... &sctx->i_ctx)Description
TRUEnever evaluated
FALSEevaluated 54462 times by 5 tests
Evaluated by:
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54462
219 goto err;
never executed: goto err;
0
220 if (!EVP_MD_CTX_copy(&dctx->o_ctx, &sctx->o_ctx))
!EVP_MD_CTX_co... &sctx->o_ctx)Description
TRUEnever evaluated
FALSEevaluated 54462 times by 5 tests
Evaluated by:
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54462
221 goto err;
never executed: goto err;
0
222 if (!EVP_MD_CTX_copy(&dctx->md_ctx, &sctx->md_ctx))
!EVP_MD_CTX_co...&sctx->md_ctx)Description
TRUEnever evaluated
FALSEevaluated 54462 times by 5 tests
Evaluated by:
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
0-54462
223 goto err;
never executed: goto err;
0
224 memcpy(dctx->key, sctx->key, HMAC_MAX_MD_CBLOCK);-
225 dctx->key_length = sctx->key_length;-
226 dctx->md = sctx->md;-
227 return 1;
executed 54462 times by 5 tests: return 1;
Executed by:
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
54462
228err:-
229 return 0;
never executed: return 0;
0
230}-
231-
232void-
233HMAC_CTX_cleanup(HMAC_CTX *ctx)-
234{-
235 EVP_MD_CTX_cleanup(&ctx->i_ctx);-
236 EVP_MD_CTX_cleanup(&ctx->o_ctx);-
237 EVP_MD_CTX_cleanup(&ctx->md_ctx);-
238 explicit_bzero(ctx, sizeof(*ctx));-
239}
executed 58178 times by 6 tests: end of block
Executed by:
  • hkdftest
  • hmactest
  • pbkdf2
  • ssltest
  • tls_prf
  • tlstest
58178
240-
241void-
242HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)-
243{-
244 EVP_MD_CTX_set_flags(&ctx->i_ctx, flags);-
245 EVP_MD_CTX_set_flags(&ctx->o_ctx, flags);-
246 EVP_MD_CTX_set_flags(&ctx->md_ctx, flags);-
247}
executed 8796 times by 3 tests: end of block
Executed by:
  • ssltest
  • tls_prf
  • tlstest
8796
248-
249const EVP_MD *-
250HMAC_CTX_get_md(const HMAC_CTX *ctx)-
251{-
252 return ctx->md;
never executed: return ctx->md;
0
253}-
254-
255unsigned char *-
256HMAC(const EVP_MD *evp_md, const void *key, int key_len, const unsigned char *d,-
257 size_t n, unsigned char *md, unsigned int *md_len)-
258{-
259 HMAC_CTX c;-
260 static unsigned char m[EVP_MAX_MD_SIZE];-
261-
262 if (md == NULL)
md == ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • hmactest
FALSEevaluated 14 times by 1 test
Evaluated by:
  • hkdftest
4-14
263 md = m;
executed 4 times by 1 test: md = m;
Executed by:
  • hmactest
4
264 HMAC_CTX_init(&c);-
265 if (!HMAC_Init(&c, key, key_len, evp_md))
!HMAC_Init(&c,...y_len, evp_md)Description
TRUEnever evaluated
FALSEevaluated 18 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
0-18
266 goto err;
never executed: goto err;
0
267 if (!HMAC_Update(&c, d, n))
!HMAC_Update(&c, d, n)Description
TRUEnever evaluated
FALSEevaluated 18 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
0-18
268 goto err;
never executed: goto err;
0
269 if (!HMAC_Final(&c, md, md_len))
!HMAC_Final(&c, md, md_len)Description
TRUEnever evaluated
FALSEevaluated 18 times by 2 tests
Evaluated by:
  • hkdftest
  • hmactest
0-18
270 goto err;
never executed: goto err;
0
271 HMAC_CTX_cleanup(&c);-
272 return md;
executed 18 times by 2 tests: return md;
Executed by:
  • hkdftest
  • hmactest
18
273err:-
274 HMAC_CTX_cleanup(&c);-
275 return NULL;
never executed: return ((void *)0) ;
0
276}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2