OpenCoverage

eng_openssl.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/engine/eng_openssl.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8static int openssl_destroy(ENGINE *e);-
9-
10-
11static int openssl_ciphers(ENGINE *e, const EVP_CIPHER **cipher,-
12 const int **nids, int nid);-
13-
14-
15static int openssl_digests(ENGINE *e, const EVP_MD **digest,-
16 const int **nids, int nid);-
17-
18-
19-
20static EVP_PKEY *openssl_load_privkey(ENGINE *eng, const char *key_id,-
21 UI_METHOD *ui_method,-
22 void *callback_data);-
23static const char *engine_openssl_id = "openssl";-
24static const char *engine_openssl_name = "Software engine support";-
25-
26-
27-
28-
29-
30static int bind_helper(ENGINE *e)-
31{-
32 if (!ENGINE_set_id(e, engine_openssl_id)
!ENGINE_set_id...ne_openssl_id)Description
TRUEnever evaluated
FALSEnever evaluated
0
33 || !ENGINE_set_name(e, engine_openssl_name)
!ENGINE_set_na..._openssl_name)Description
TRUEnever evaluated
FALSEnever evaluated
0
34 || !ENGINE_set_destroy_function(e, openssl_destroy)
!ENGINE_set_de...enssl_destroy)Description
TRUEnever evaluated
FALSEnever evaluated
0
35-
36-
37 || !ENGINE_set_RSA(e, RSA_get_default_method())
!ENGINE_set_RS...ault_method())Description
TRUEnever evaluated
FALSEnever evaluated
0
38-
39-
40 || !ENGINE_set_DSA(e, DSA_get_default_method())
!ENGINE_set_DS...ault_method())Description
TRUEnever evaluated
FALSEnever evaluated
0
41-
42-
43 || !ENGINE_set_EC(e, EC_KEY_OpenSSL())
!ENGINE_set_EC...KEY_OpenSSL())Description
TRUEnever evaluated
FALSEnever evaluated
0
44-
45-
46 || !ENGINE_set_DH(e, DH_get_default_method())
!ENGINE_set_DH...ault_method())Description
TRUEnever evaluated
FALSEnever evaluated
0
47-
48 || !ENGINE_set_RAND(e, RAND_OpenSSL())
!ENGINE_set_RA...AND_OpenSSL())Description
TRUEnever evaluated
FALSEnever evaluated
0
49-
50 || !ENGINE_set_ciphers(e, openssl_ciphers)
!ENGINE_set_ci...enssl_ciphers)Description
TRUEnever evaluated
FALSEnever evaluated
0
51-
52-
53 || !ENGINE_set_digests(e, openssl_digests)
!ENGINE_set_di...enssl_digests)Description
TRUEnever evaluated
FALSEnever evaluated
0
54-
55-
56-
57 || !ENGINE_set_load_privkey_function(e, openssl_load_privkey)
!ENGINE_set_lo..._load_privkey)Description
TRUEnever evaluated
FALSEnever evaluated
0
58-
59-
60-
61-
62-
63 )-
64 return
never executed: return 0;
0;
never executed: return 0;
0
65-
66-
67-
68-
69-
70 return
never executed: return 1;
1;
never executed: return 1;
0
71}-
72-
73static ENGINE *engine_openssl(void)-
74{-
75 ENGINE *ret = ENGINE_new();-
76 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
77 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
78 )-
79 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
80 ((void *)0)
never executed: return ((void *)0) ;
0
81 ;
never executed: return ((void *)0) ;
0
82 if (!bind_helper(ret)
!bind_helper(ret)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
83 ENGINE_free(ret);-
84 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
85 ((void *)0)
never executed: return ((void *)0) ;
0
86 ;
never executed: return ((void *)0) ;
0
87 }-
88 return
never executed: return ret;
ret;
never executed: return ret;
0
89}-
90-
91void engine_load_openssl_int(void)-
92{-
93 ENGINE *toadd = engine_openssl();-
94 if (!toadd
!toaddDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
95 return;
never executed: return;
0
96 ENGINE_add(toadd);-
97-
98-
99-
100-
101 ENGINE_free(toadd);-
102 ERR_clear_error();-
103}
never executed: end of block
0
104-
105typedef struct {-
106 unsigned char key[16];-
107 RC4_KEY ks;-
108} TEST_RC4_KEY;-
109-
110static int test_rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,-
111 const unsigned char *iv, int enc)-
112{-
113-
114 fprintf(-
115 stderr-
116 , "(TEST_ENG_OPENSSL_RC4) test_init_key() called\n");-
117-
118 memcpy(&((TEST_RC4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))->key[0], key, EVP_CIPHER_CTX_key_length(ctx));-
119 RC4_set_key(&((TEST_RC4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))->ks, EVP_CIPHER_CTX_key_length(ctx),-
120 ((TEST_RC4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))->key);-
121 return
never executed: return 1;
1;
never executed: return 1;
0
122}-
123-
124static int test_rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,-
125 const unsigned char *in, size_t inl)-
126{-
127-
128-
129-
130 RC4(&((TEST_RC4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))->ks, inl, in, out);-
131 return
never executed: return 1;
1;
never executed: return 1;
0
132}-
133-
134static EVP_CIPHER *r4_cipher = -
135 ((void *)0)-
136 ;-
137static const EVP_CIPHER *test_r4_cipher(void)-
138{-
139 if (r4_cipher ==
r4_cipher == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
140 ((void *)0)
r4_cipher == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
141 ) {-
142 EVP_CIPHER *cipher;-
143-
144 if ((
(cipher = EVP_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
cipher = EVP_CIPHER_meth_new(5, 1, 16)) ==
(cipher = EVP_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
145 ((void *)0)
(cipher = EVP_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
146 -
147 || !EVP_CIPHER_meth_set_iv_length(cipher, 0)
!EVP_CIPHER_me...gth(cipher, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
148 || !EVP_CIPHER_meth_set_flags(cipher, 0x8)
!EVP_CIPHER_me...s(cipher, 0x8)Description
TRUEnever evaluated
FALSEnever evaluated
0
149 || !EVP_CIPHER_meth_set_init(cipher, test_rc4_init_key)
!EVP_CIPHER_me..._rc4_init_key)Description
TRUEnever evaluated
FALSEnever evaluated
0
150 || !EVP_CIPHER_meth_set_do_cipher(cipher, test_rc4_cipher)
!EVP_CIPHER_me...st_rc4_cipher)Description
TRUEnever evaluated
FALSEnever evaluated
0
151 || !EVP_CIPHER_meth_set_impl_ctx_size(cipher, sizeof(TEST_RC4_KEY))
!EVP_CIPHER_me...TEST_RC4_KEY))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
152 EVP_CIPHER_meth_free(cipher);-
153 cipher = -
154 ((void *)0)-
155 ;-
156 }
never executed: end of block
0
157 r4_cipher = cipher;-
158 }
never executed: end of block
0
159 return
never executed: return r4_cipher;
r4_cipher;
never executed: return r4_cipher;
0
160}-
161static void test_r4_cipher_destroy(void)-
162{-
163 EVP_CIPHER_meth_free(r4_cipher);-
164 r4_cipher = -
165 ((void *)0)-
166 ;-
167}
never executed: end of block
0
168-
169static EVP_CIPHER *r4_40_cipher = -
170 ((void *)0)-
171 ;-
172static const EVP_CIPHER *test_r4_40_cipher(void)-
173{-
174 if (r4_40_cipher ==
r4_40_cipher == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
175 ((void *)0)
r4_40_cipher == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
176 ) {-
177 EVP_CIPHER *cipher;-
178-
179 if ((
(cipher = EVP_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
cipher = EVP_CIPHER_meth_new(5, 1, 5 )) ==
(cipher = EVP_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
180 ((void *)0)
(cipher = EVP_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
181 -
182 || !EVP_CIPHER_meth_set_iv_length(cipher, 0)
!EVP_CIPHER_me...gth(cipher, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
183 || !EVP_CIPHER_meth_set_flags(cipher, 0x8)
!EVP_CIPHER_me...s(cipher, 0x8)Description
TRUEnever evaluated
FALSEnever evaluated
0
184 || !EVP_CIPHER_meth_set_init(cipher, test_rc4_init_key)
!EVP_CIPHER_me..._rc4_init_key)Description
TRUEnever evaluated
FALSEnever evaluated
0
185 || !EVP_CIPHER_meth_set_do_cipher(cipher, test_rc4_cipher)
!EVP_CIPHER_me...st_rc4_cipher)Description
TRUEnever evaluated
FALSEnever evaluated
0
186 || !EVP_CIPHER_meth_set_impl_ctx_size(cipher, sizeof(TEST_RC4_KEY))
!EVP_CIPHER_me...TEST_RC4_KEY))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
187 EVP_CIPHER_meth_free(cipher);-
188 cipher = -
189 ((void *)0)-
190 ;-
191 }
never executed: end of block
0
192 r4_40_cipher = cipher;-
193 }
never executed: end of block
0
194 return
never executed: return r4_40_cipher;
r4_40_cipher;
never executed: return r4_40_cipher;
0
195}-
196static void test_r4_40_cipher_destroy(void)-
197{-
198 EVP_CIPHER_meth_free(r4_40_cipher);-
199 r4_40_cipher = -
200 ((void *)0)-
201 ;-
202}
never executed: end of block
0
203static int test_cipher_nids(const int **nids)-
204{-
205 static int cipher_nids[4] = { 0, 0, 0, 0 };-
206 static int pos = 0;-
207 static int init = 0;-
208-
209 if (!init
!initDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
210 const EVP_CIPHER *cipher;-
211 if ((
(cipher = test...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
cipher = test_r4_cipher()) !=
(cipher = test...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
212 ((void *)0)
(cipher = test...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
213 )-
214 cipher_nids[pos++] = EVP_CIPHER_nid(cipher);
never executed: cipher_nids[pos++] = EVP_CIPHER_nid(cipher);
0
215 if ((
(cipher = test...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
cipher = test_r4_40_cipher()) !=
(cipher = test...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
216 ((void *)0)
(cipher = test...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
217 )-
218 cipher_nids[pos++] = EVP_CIPHER_nid(cipher);
never executed: cipher_nids[pos++] = EVP_CIPHER_nid(cipher);
0
219 cipher_nids[pos] = 0;-
220 init = 1;-
221 }
never executed: end of block
0
222 *nids = cipher_nids;-
223 return
never executed: return pos;
pos;
never executed: return pos;
0
224}-
225-
226static int openssl_ciphers(ENGINE *e, const EVP_CIPHER **cipher,-
227 const int **nids, int nid)-
228{-
229 if (!cipher
!cipherDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
230-
231 return
never executed: return test_cipher_nids(nids);
test_cipher_nids(nids);
never executed: return test_cipher_nids(nids);
0
232 }-
233-
234 if (nid == 5
nid == 5Description
TRUEnever evaluated
FALSEnever evaluated
)
0
235 *
never executed: *cipher = test_r4_cipher();
cipher = test_r4_cipher();
never executed: *cipher = test_r4_cipher();
0
236 else if (nid == 97
nid == 97Description
TRUEnever evaluated
FALSEnever evaluated
)
0
237 *
never executed: *cipher = test_r4_40_cipher();
cipher = test_r4_40_cipher();
never executed: *cipher = test_r4_40_cipher();
0
238 else {-
239-
240-
241-
242-
243 *cipher = -
244 ((void *)0)-
245 ;-
246 return
never executed: return 0;
0;
never executed: return 0;
0
247 }-
248 return
never executed: return 1;
1;
never executed: return 1;
0
249}-
250-
251-
252-
253-
254-
255-
256static int test_sha1_init(EVP_MD_CTX *ctx)-
257{-
258-
259-
260-
261 return
never executed: return SHA1_Init(EVP_MD_CTX_md_data(ctx));
SHA1_Init(EVP_MD_CTX_md_data(ctx));
never executed: return SHA1_Init(EVP_MD_CTX_md_data(ctx));
0
262}-
263-
264static int test_sha1_update(EVP_MD_CTX *ctx, const void *data, size_t count)-
265{-
266-
267-
268-
269 return
never executed: return SHA1_Update(EVP_MD_CTX_md_data(ctx), data, count);
SHA1_Update(EVP_MD_CTX_md_data(ctx), data, count);
never executed: return SHA1_Update(EVP_MD_CTX_md_data(ctx), data, count);
0
270}-
271-
272static int test_sha1_final(EVP_MD_CTX *ctx, unsigned char *md)-
273{-
274-
275-
276-
277 return
never executed: return SHA1_Final(md, EVP_MD_CTX_md_data(ctx));
SHA1_Final(md, EVP_MD_CTX_md_data(ctx));
never executed: return SHA1_Final(md, EVP_MD_CTX_md_data(ctx));
0
278}-
279-
280static EVP_MD *sha1_md = -
281 ((void *)0)-
282 ;-
283static const EVP_MD *test_sha_md(void)-
284{-
285 if (sha1_md ==
sha1_md == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
286 ((void *)0)
sha1_md == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
287 ) {-
288 EVP_MD *md;-
289-
290 if ((
(md = EVP_MD_m...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
md = EVP_MD_meth_new(64, 65)) ==
(md = EVP_MD_m...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
291 ((void *)0)
(md = EVP_MD_m...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
292 -
293 || !EVP_MD_meth_set_result_size(md, 20)
!EVP_MD_meth_s...t_size(md, 20)Description
TRUEnever evaluated
FALSEnever evaluated
0
294 || !EVP_MD_meth_set_input_blocksize(md, (16*4))
!EVP_MD_meth_s...ze(md, (16*4))Description
TRUEnever evaluated
FALSEnever evaluated
0
295 || !EVP_MD_meth_set_app_datasize(md,
!EVP_MD_meth_s...zeof(SHA_CTX))Description
TRUEnever evaluated
FALSEnever evaluated
0
296 sizeof(EVP_MD *) + sizeof(SHA_CTX))
!EVP_MD_meth_s...zeof(SHA_CTX))Description
TRUEnever evaluated
FALSEnever evaluated
0
297 || !EVP_MD_meth_set_flags(md, 0)
!EVP_MD_meth_set_flags(md, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
298 || !EVP_MD_meth_set_init(md, test_sha1_init)
!EVP_MD_meth_s...est_sha1_init)Description
TRUEnever evaluated
FALSEnever evaluated
0
299 || !EVP_MD_meth_set_update(md, test_sha1_update)
!EVP_MD_meth_s...t_sha1_update)Description
TRUEnever evaluated
FALSEnever evaluated
0
300 || !EVP_MD_meth_set_final(md, test_sha1_final)
!EVP_MD_meth_s...st_sha1_final)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
301 EVP_MD_meth_free(md);-
302 md = -
303 ((void *)0)-
304 ;-
305 }
never executed: end of block
0
306 sha1_md = md;-
307 }
never executed: end of block
0
308 return
never executed: return sha1_md;
sha1_md;
never executed: return sha1_md;
0
309}-
310static void test_sha_md_destroy(void)-
311{-
312 EVP_MD_meth_free(sha1_md);-
313 sha1_md = -
314 ((void *)0)-
315 ;-
316}
never executed: end of block
0
317static int test_digest_nids(const int **nids)-
318{-
319 static int digest_nids[2] = { 0, 0 };-
320 static int pos = 0;-
321 static int init = 0;-
322-
323 if (!init
!initDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
324 const EVP_MD *md;-
325 if ((
(md = test_sha...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
md = test_sha_md()) !=
(md = test_sha...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
326 ((void *)0)
(md = test_sha...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
327 )-
328 digest_nids[pos++] = EVP_MD_type(md);
never executed: digest_nids[pos++] = EVP_MD_type(md);
0
329 digest_nids[pos] = 0;-
330 init = 1;-
331 }
never executed: end of block
0
332 *nids = digest_nids;-
333 return
never executed: return pos;
pos;
never executed: return pos;
0
334}-
335-
336static int openssl_digests(ENGINE *e, const EVP_MD **digest,-
337 const int **nids, int nid)-
338{-
339 if (!digest
!digestDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
340-
341 return
never executed: return test_digest_nids(nids);
test_digest_nids(nids);
never executed: return test_digest_nids(nids);
0
342 }-
343-
344 if (nid == 64
nid == 64Description
TRUEnever evaluated
FALSEnever evaluated
)
0
345 *
never executed: *digest = test_sha_md();
digest = test_sha_md();
never executed: *digest = test_sha_md();
0
346 else {-
347-
348-
349-
350-
351 *digest = -
352 ((void *)0)-
353 ;-
354 return
never executed: return 0;
0;
never executed: return 0;
0
355 }-
356 return
never executed: return 1;
1;
never executed: return 1;
0
357}-
358-
359-
360-
361static EVP_PKEY *openssl_load_privkey(ENGINE *eng, const char *key_id,-
362 UI_METHOD *ui_method,-
363 void *callback_data)-
364{-
365 BIO *in;-
366 EVP_PKEY *key;-
367 fprintf(-
368 stderr-
369 , "(TEST_ENG_OPENSSL_PKEY)Loading Private key %s\n",-
370 key_id);-
371 in = BIO_new_file(key_id, "r");-
372 if (!in
!inDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
373 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
374 ((void *)0)
never executed: return ((void *)0) ;
0
375 ;
never executed: return ((void *)0) ;
0
376 key = PEM_read_bio_PrivateKey(in, -
377 ((void *)0)-
378 , 0, -
379 ((void *)0)-
380 );-
381 BIO_free(in);-
382 return
never executed: return key;
key;
never executed: return key;
0
383}-
384int openssl_destroy(ENGINE *e)-
385{-
386 test_sha_md_destroy();-
387-
388 test_r4_cipher_destroy();-
389 test_r4_40_cipher_destroy();-
390-
391 return
never executed: return 1;
1;
never executed: return 1;
0
392}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2