OpenCoverage

ct_sct_ctx.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/ct/ct_sct_ctx.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4SCT_CTX *SCT_CTX_new(void)-
5{-
6 SCT_CTX *sctx = CRYPTO_zalloc(sizeof(*sctx), __FILE__, 25);-
7-
8 if (sctx ==
sctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
9 ((void *)0)
sctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
10 )-
11 ERR_put_error(50,(126),((1|64)),__FILE__,28);
never executed: ERR_put_error(50,(126),((1|64)),__FILE__,28);
0
12-
13 return
executed 9 times by 1 test: return sctx;
Executed by:
  • libcrypto.so.1.1
sctx;
executed 9 times by 1 test: return sctx;
Executed by:
  • libcrypto.so.1.1
9
14}-
15-
16void SCT_CTX_free(SCT_CTX *sctx)-
17{-
18 if (sctx ==
sctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
19 ((void *)0)
sctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
20 )-
21 return;
never executed: return;
0
22 EVP_PKEY_free(sctx->pkey);-
23 CRYPTO_free(sctx->pkeyhash, __FILE__, 38);-
24 CRYPTO_free(sctx->ihash, __FILE__, 39);-
25 CRYPTO_free(sctx->certder, __FILE__, 40);-
26 CRYPTO_free(sctx->preder, __FILE__, 41);-
27 CRYPTO_free(sctx, __FILE__, 42);-
28}
executed 9 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
9
29-
30-
31-
32-
33-
34-
35static int ct_x509_get_ext(X509 *cert, int nid, int *is_duplicated)-
36{-
37 int ret = X509_get_ext_by_NID(cert, nid, -1);-
38-
39 if (is_duplicated !=
is_duplicated != ((void *)0)Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-18
40 ((void *)0)
is_duplicated != ((void *)0)Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-18
41 )-
42 *
executed 18 times by 1 test: *is_duplicated = ret >= 0 && X509_get_ext_by_NID(cert, nid, ret) >= 0;
Executed by:
  • libcrypto.so.1.1
is_duplicated = ret >= 0
ret >= 0Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
&& X509_get_ext_by_NID(cert, nid, ret) >= 0
X509_get_ext_b...nid, ret) >= 0Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
;
executed 18 times by 1 test: *is_duplicated = ret >= 0 && X509_get_ext_by_NID(cert, nid, ret) >= 0;
Executed by:
  • libcrypto.so.1.1
0-18
43-
44 return
executed 18 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
ret;
executed 18 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
18
45}-
46-
47-
48-
49-
50-
51-
52 static int ct_x509_cert_fixup(X509 *cert, X509 *presigner)-
53{-
54 int preidx, certidx;-
55 int pre_akid_ext_is_dup, cert_akid_ext_is_dup;-
56-
57 if (presigner ==
presigner == ((void *)0)Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-9
58 ((void *)0)
presigner == ((void *)0)Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-9
59 )-
60 return
executed 9 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1;
executed 9 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
9
61-
62 preidx = ct_x509_get_ext(presigner, 90,-
63 &pre_akid_ext_is_dup);-
64 certidx = ct_x509_get_ext(cert, 90,-
65 &cert_akid_ext_is_dup);-
66-
67-
68 if (preidx < -1
preidx < -1Description
TRUEnever evaluated
FALSEnever evaluated
|| certidx < -1
certidx < -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
69 return
never executed: return 0;
0;
never executed: return 0;
0
70-
71 if (pre_akid_ext_is_dup
pre_akid_ext_is_dupDescription
TRUEnever evaluated
FALSEnever evaluated
|| cert_akid_ext_is_dup
cert_akid_ext_is_dupDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
72 return
never executed: return 0;
0;
never executed: return 0;
0
73-
74 if (preidx >= 0
preidx >= 0Description
TRUEnever evaluated
FALSEnever evaluated
&& certidx == -1
certidx == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
75 return
never executed: return 0;
0;
never executed: return 0;
0
76 if (preidx == -1
preidx == -1Description
TRUEnever evaluated
FALSEnever evaluated
&& certidx >= 0
certidx >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
77 return
never executed: return 0;
0;
never executed: return 0;
0
78-
79 if (!X509_set_issuer_name(cert, X509_get_issuer_name(presigner))
!X509_set_issu...me(presigner))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
80 return
never executed: return 0;
0;
never executed: return 0;
0
81 if (preidx != -1
preidx != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
82-
83 X509_EXTENSION *preext = X509_get_ext(presigner, preidx);-
84 X509_EXTENSION *certext = X509_get_ext(cert, certidx);-
85 ASN1_OCTET_STRING *preextdata;-
86-
87-
88 if (preext ==
preext == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
89 ((void *)0)
preext == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
90 || certext ==
certext == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
91 ((void *)0)
certext == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
92 )-
93 return
never executed: return 0;
0;
never executed: return 0;
0
94 preextdata = X509_EXTENSION_get_data(preext);-
95 if (preextdata ==
preextdata == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
96 ((void *)0)
preextdata == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
97 ||-
98 !X509_EXTENSION_set_data(certext, preextdata)
!X509_EXTENSIO...t, preextdata)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
99 return
never executed: return 0;
0;
never executed: return 0;
0
100 }
never executed: end of block
0
101 return
never executed: return 1;
1;
never executed: return 1;
0
102}-
103-
104int SCT_CTX_set1_cert(SCT_CTX *sctx, X509 *cert, X509 *presigner)-
105{-
106 unsigned char *certder = -
107 ((void *)0)-
108 , *preder = -
109 ((void *)0)-
110 ;-
111 X509 *pretmp = -
112 ((void *)0)-
113 ;-
114 int certderlen = 0, prederlen = 0;-
115 int idx = -1;-
116 int poison_ext_is_dup, sct_ext_is_dup;-
117 int poison_idx = ct_x509_get_ext(cert, 952, &poison_ext_is_dup);-
118-
119-
120 if (poison_ext_is_dup
poison_ext_is_dupDescription
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-9
121 goto
never executed: goto err;
err;
never executed: goto err;
0
122-
123-
124 if (poison_idx == -1
poison_idx == -1Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
) {
0-9
125-
126 if (presigner !=
presigner != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
127 ((void *)0)
presigner != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
128 )-
129 goto
never executed: goto err;
err;
never executed: goto err;
0
130-
131 certderlen = i2d_X509(cert, &certder);-
132 if (certderlen < 0
certderlen < 0Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-9
133 goto
never executed: goto err;
err;
never executed: goto err;
0
134 }
executed 9 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
9
135-
136-
137 idx = ct_x509_get_ext(cert, 951, &sct_ext_is_dup);-
138-
139 if (sct_ext_is_dup
sct_ext_is_dupDescription
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-9
140 goto
never executed: goto err;
err;
never executed: goto err;
0
141-
142 if (idx >= 0
idx >= 0Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
&& poison_idx >= 0
poison_idx >= 0Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-9
143-
144-
145-
146-
147 goto
never executed: goto err;
err;
never executed: goto err;
0
148 }-
149-
150 if (idx == -1
idx == -1Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-9
151 idx = poison_idx;-
152 }
never executed: end of block
0
153-
154-
155-
156-
157-
158-
159-
160 if (idx >= 0
idx >= 0Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
) {
0-9
161 X509_EXTENSION *ext;-
162-
163-
164 pretmp = X509_dup(cert);-
165 if (pretmp ==
pretmp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
166 ((void *)0)
pretmp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
167 )-
168 goto
never executed: goto err;
err;
never executed: goto err;
0
169-
170 ext = X509_delete_ext(pretmp, idx);-
171 X509_EXTENSION_free(ext);-
172-
173 if (!ct_x509_cert_fixup(pretmp, presigner)
!ct_x509_cert_...mp, presigner)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-9
174 goto
never executed: goto err;
err;
never executed: goto err;
0
175-
176 prederlen = i2d_re_X509_tbs(pretmp, &preder);-
177 if (prederlen <= 0
prederlen <= 0Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-9
178 goto
never executed: goto err;
err;
never executed: goto err;
0
179 }
executed 9 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
9
180-
181 X509_free(pretmp);-
182-
183 CRYPTO_free(sctx->certder, __FILE__, 178);-
184 sctx->certder = certder;-
185 sctx->certderlen = certderlen;-
186-
187 CRYPTO_free(sctx->preder, __FILE__, 182);-
188 sctx->preder = preder;-
189 sctx->prederlen = prederlen;-
190-
191 return
executed 9 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1;
executed 9 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
9
192err:-
193 CRYPTO_free(certder, __FILE__, 188);-
194 CRYPTO_free(preder, __FILE__, 189);-
195 X509_free(pretmp);-
196 return
never executed: return 0;
0;
never executed: return 0;
0
197}-
198-
199 static int ct_public_key_hash(X509_PUBKEY *pkey, unsigned char **hash,-
200 size_t *hash_len)-
201{-
202 int ret = 0;-
203 unsigned char *md = -
204 ((void *)0)-
205 , *der = -
206 ((void *)0)-
207 ;-
208 int der_len;-
209 unsigned int md_len;-
210-
211-
212 if (*
*hash != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
hash !=
*hash != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-18
213 ((void *)0)
*hash != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-18
214 && *
*hash_len >= 32Description
TRUEnever evaluated
FALSEnever evaluated
hash_len >= 32
*hash_len >= 32Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
215 md = *hash;-
216 }
never executed: end of block
else {
0
217 md = CRYPTO_malloc(32, __FILE__, 206);-
218 if (md ==
md == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-18
219 ((void *)0)
md == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-18
220 )-
221 goto
never executed: goto err;
err;
never executed: goto err;
0
222 }
executed 18 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
18
223-
224-
225 der_len = i2d_X509_PUBKEY(pkey, &der);-
226 if (der_len <= 0
der_len <= 0Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-18
227 goto
never executed: goto err;
err;
never executed: goto err;
0
228-
229 if (!EVP_Digest(der, der_len, md, &md_len, EVP_sha256(),
!EVP_Digest(de... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-18
230 ((void *)0)
!EVP_Digest(de... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-18
231 )
!EVP_Digest(de... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-18
232 goto
never executed: goto err;
err;
never executed: goto err;
0
233-
234 if (md != *hash
md != *hashDescription
TRUEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
) {
0-18
235 CRYPTO_free(*hash, __FILE__, 220);-
236 *hash = md;-
237 *hash_len = 32;-
238 }
executed 18 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
18
239-
240 md = -
241 ((void *)0)-
242 ;-
243 ret = 1;-
244 err:
code before this statement executed 18 times by 1 test: err:
Executed by:
  • libcrypto.so.1.1
18
245 CRYPTO_free(md, __FILE__, 228);-
246 CRYPTO_free(der, __FILE__, 229);-
247 return
executed 18 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
ret;
executed 18 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
18
248}-
249-
250int SCT_CTX_set1_issuer(SCT_CTX *sctx, const X509 *issuer)-
251{-
252 return
never executed: return SCT_CTX_set1_issuer_pubkey(sctx, X509_get_X509_PUBKEY(issuer));
SCT_CTX_set1_issuer_pubkey(sctx, X509_get_X509_PUBKEY(issuer));
never executed: return SCT_CTX_set1_issuer_pubkey(sctx, X509_get_X509_PUBKEY(issuer));
0
253}-
254-
255int SCT_CTX_set1_issuer_pubkey(SCT_CTX *sctx, X509_PUBKEY *pubkey)-
256{-
257 return
executed 9 times by 1 test: return ct_public_key_hash(pubkey, &sctx->ihash, &sctx->ihashlen);
Executed by:
  • libcrypto.so.1.1
ct_public_key_hash(pubkey, &sctx->ihash, &sctx->ihashlen);
executed 9 times by 1 test: return ct_public_key_hash(pubkey, &sctx->ihash, &sctx->ihashlen);
Executed by:
  • libcrypto.so.1.1
9
258}-
259-
260int SCT_CTX_set1_pubkey(SCT_CTX *sctx, X509_PUBKEY *pubkey)-
261{-
262 EVP_PKEY *pkey = X509_PUBKEY_get(pubkey);-
263-
264 if (pkey ==
pkey == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
265 ((void *)0)
pkey == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9
266 )-
267 return
never executed: return 0;
0;
never executed: return 0;
0
268-
269 if (!ct_public_key_hash(pubkey, &sctx->pkeyhash, &sctx->pkeyhashlen)
!ct_public_key...->pkeyhashlen)Description
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-9
270 EVP_PKEY_free(pkey);-
271 return
never executed: return 0;
0;
never executed: return 0;
0
272 }-
273-
274 EVP_PKEY_free(sctx->pkey);-
275 sctx->pkey = pkey;-
276 return
executed 9 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1;
executed 9 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
9
277}-
278-
279void SCT_CTX_set_time(SCT_CTX *sctx, uint64_t time_in_ms)-
280{-
281 sctx->epoch_time_in_ms = time_in_ms;-
282}
executed 9 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
9
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2