OpenCoverage

cm_pmeth.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/cmac/cm_pmeth.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10#include <stdio.h>-
11#include "internal/cryptlib.h"-
12#include <openssl/x509.h>-
13#include <openssl/x509v3.h>-
14#include <openssl/evp.h>-
15#include <openssl/cmac.h>-
16#include "internal/evp_int.h"-
17-
18/* The context structure and "key" is simply a CMAC_CTX */-
19-
20static int pkey_cmac_init(EVP_PKEY_CTX *ctx)-
21{-
22 ctx->data = CMAC_CTX_new();-
23 if (ctx->data == NULL)
ctx->data == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-8
24 return 0;
never executed: return 0;
0
25 ctx->keygen_info_count = 0;-
26 return 1;
executed 8 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
8
27}-
28-
29static int pkey_cmac_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src)-
30{-
31 if (!pkey_cmac_init(dst))
!pkey_cmac_init(dst)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
32 return 0;
never executed: return 0;
0
33 if (!CMAC_CTX_copy(dst->data, src->data))
!CMAC_CTX_copy...ta, src->data)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
34 return 0;
never executed: return 0;
0
35 return 1;
executed 4 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4
36}-
37-
38static void pkey_cmac_cleanup(EVP_PKEY_CTX *ctx)-
39{-
40 CMAC_CTX_free(ctx->data);-
41}
executed 8 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
8
42-
43static int pkey_cmac_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)-
44{-
45 CMAC_CTX *cmkey = CMAC_CTX_new();-
46 CMAC_CTX *cmctx = ctx->data;-
47 if (cmkey == NULL)
cmkey == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
48 return 0;
never executed: return 0;
0
49 if (!CMAC_CTX_copy(cmkey, cmctx)) {
!CMAC_CTX_copy(cmkey, cmctx)Description
TRUEnever evaluated
FALSEnever evaluated
0
50 CMAC_CTX_free(cmkey);-
51 return 0;
never executed: return 0;
0
52 }-
53 EVP_PKEY_assign(pkey, EVP_PKEY_CMAC, cmkey);-
54-
55 return 1;
never executed: return 1;
0
56}-
57-
58static int int_update(EVP_MD_CTX *ctx, const void *data, size_t count)-
59{-
60 if (!CMAC_Update(EVP_MD_CTX_pkey_ctx(ctx)->data, data, count))
!CMAC_Update(E..., data, count)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
61 return 0;
never executed: return 0;
0
62 return 1;
executed 4 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4
63}-
64-
65static int cmac_signctx_init(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)-
66{-
67 EVP_MD_CTX_set_flags(mctx, EVP_MD_CTX_FLAG_NO_INIT);-
68 EVP_MD_CTX_set_update_fn(mctx, int_update);-
69 return 1;
executed 4 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4
70}-
71-
72static int cmac_signctx(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,-
73 EVP_MD_CTX *mctx)-
74{-
75 return CMAC_Final(ctx->data, sig, siglen);
executed 8 times by 1 test: return CMAC_Final(ctx->data, sig, siglen);
Executed by:
  • libcrypto.so.1.1
8
76}-
77-
78static int pkey_cmac_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)-
79{-
80 CMAC_CTX *cmctx = ctx->data;-
81 switch (type) {-
82-
83 case EVP_PKEY_CTRL_SET_MAC_KEY:
never executed: case 6:
0
84 if (!p2 || p1 < 0)
!p2Description
TRUEnever evaluated
FALSEnever evaluated
p1 < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
85 return 0;
never executed: return 0;
0
86 if (!CMAC_Init(cmctx, p2, p1, NULL, NULL))
!CMAC_Init(cmc... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
87 return 0;
never executed: return 0;
0
88 break;
never executed: break;
0
89-
90 case EVP_PKEY_CTRL_CIPHER:
never executed: case 12:
0
91 if (!CMAC_Init(cmctx, NULL, 0, p2, ctx->engine))
!CMAC_Init(cmc..., ctx->engine)Description
TRUEnever evaluated
FALSEnever evaluated
0
92 return 0;
never executed: return 0;
0
93 break;
never executed: break;
0
94-
95 case EVP_PKEY_CTRL_MD:
executed 4 times by 1 test: case 1:
Executed by:
  • libcrypto.so.1.1
4
96 if (ctx->pkey && !CMAC_CTX_copy(ctx->data,
ctx->pkeyDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
!CMAC_CTX_copy...key->pkey.ptr)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
97 (CMAC_CTX *)ctx->pkey->pkey.ptr))
!CMAC_CTX_copy...key->pkey.ptr)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
98 return 0;
never executed: return 0;
0
99 if (!CMAC_Init(cmctx, NULL, 0, NULL, NULL))
!CMAC_Init(cmc... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
100 return 0;
never executed: return 0;
0
101 break;
executed 4 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
4
102-
103 default:
never executed: default:
0
104 return -2;
never executed: return -2;
0
105-
106 }-
107 return 1;
executed 4 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4
108}-
109-
110static int pkey_cmac_ctrl_str(EVP_PKEY_CTX *ctx,-
111 const char *type, const char *value)-
112{-
113 if (!value) {
!valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
114 return 0;
never executed: return 0;
0
115 }-
116 if (strcmp(type, "cipher") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "cipher" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
117 const EVP_CIPHER *c;-
118 c = EVP_get_cipherbyname(value);-
119 if (!c)
!cDescription
TRUEnever evaluated
FALSEnever evaluated
0
120 return 0;
never executed: return 0;
0
121 return pkey_cmac_ctrl(ctx, EVP_PKEY_CTRL_CIPHER, -1, (void *)c);
never executed: return pkey_cmac_ctrl(ctx, 12, -1, (void *)c);
0
122 }-
123 if (strcmp(type, "key") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "key" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
124 return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY, value);
never executed: return EVP_PKEY_CTX_str2ctrl(ctx, 6, value);
0
125 if (strcmp(type, "hexkey") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "hexkey" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
126 return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY, value);
never executed: return EVP_PKEY_CTX_hex2ctrl(ctx, 6, value);
0
127 return -2;
never executed: return -2;
0
128}-
129-
130const EVP_PKEY_METHOD cmac_pkey_meth = {-
131 EVP_PKEY_CMAC,-
132 EVP_PKEY_FLAG_SIGCTX_CUSTOM,-
133 pkey_cmac_init,-
134 pkey_cmac_copy,-
135 pkey_cmac_cleanup,-
136-
137 0, 0,-
138-
139 0,-
140 pkey_cmac_keygen,-
141-
142 0, 0,-
143-
144 0, 0,-
145-
146 0, 0,-
147-
148 cmac_signctx_init,-
149 cmac_signctx,-
150-
151 0, 0,-
152-
153 0, 0,-
154-
155 0, 0,-
156-
157 0, 0,-
158-
159 pkey_cmac_ctrl,-
160 pkey_cmac_ctrl_str-
161};-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2