OpenCoverage

tb_digest.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/engine/tb_digest.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: tb_digest.c,v 1.8 2017/01/29 17:49:23 beck Exp $ */-
2/* ====================================================================-
3 * Copyright (c) 2000 The OpenSSL Project. All rights reserved.-
4 *-
5 * Redistribution and use in source and binary forms, with or without-
6 * modification, are permitted provided that the following conditions-
7 * are met:-
8 *-
9 * 1. Redistributions of source code must retain the above copyright-
10 * notice, this list of conditions and the following disclaimer.-
11 *-
12 * 2. Redistributions in binary form must reproduce the above copyright-
13 * notice, this list of conditions and the following disclaimer in-
14 * the documentation and/or other materials provided with the-
15 * distribution.-
16 *-
17 * 3. All advertising materials mentioning features or use of this-
18 * software must display the following acknowledgment:-
19 * "This product includes software developed by the OpenSSL Project-
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"-
21 *-
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
23 * endorse or promote products derived from this software without-
24 * prior written permission. For written permission, please contact-
25 * licensing@OpenSSL.org.-
26 *-
27 * 5. Products derived from this software may not be called "OpenSSL"-
28 * nor may "OpenSSL" appear in their names without prior written-
29 * permission of the OpenSSL Project.-
30 *-
31 * 6. Redistributions of any form whatsoever must retain the following-
32 * acknowledgment:-
33 * "This product includes software developed by the OpenSSL Project-
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"-
35 *-
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
47 * OF THE POSSIBILITY OF SUCH DAMAGE.-
48 * ====================================================================-
49 *-
50 * This product includes cryptographic software written by Eric Young-
51 * (eay@cryptsoft.com). This product includes software written by Tim-
52 * Hudson (tjh@cryptsoft.com).-
53 *-
54 */-
55-
56#include <openssl/err.h>-
57-
58#include "eng_int.h"-
59-
60/* If this symbol is defined then ENGINE_get_digest_engine(), the function that-
61 * is used by EVP to hook in digest code and cache defaults (etc), will display-
62 * brief debugging summaries to stderr with the 'nid'. */-
63/* #define ENGINE_DIGEST_DEBUG */-
64-
65static ENGINE_TABLE *digest_table = NULL;-
66-
67void-
68ENGINE_unregister_digests(ENGINE *e)-
69{-
70 engine_table_unregister(&digest_table, e);-
71}
never executed: end of block
0
72-
73static void-
74engine_unregister_all_digests(void)-
75{-
76 engine_table_cleanup(&digest_table);-
77}
never executed: end of block
0
78-
79int-
80ENGINE_register_digests(ENGINE *e)-
81{-
82 if (e->digests) {
e->digestsDescription
TRUEnever evaluated
FALSEnever evaluated
0
83 const int *nids;-
84 int num_nids = e->digests(e, NULL, &nids, 0);-
85 if (num_nids > 0)
num_nids > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
86 return engine_table_register(&digest_table,
never executed: return engine_table_register(&digest_table, engine_unregister_all_digests, e, nids, num_nids, 0);
0
87 engine_unregister_all_digests, e, nids,
never executed: return engine_table_register(&digest_table, engine_unregister_all_digests, e, nids, num_nids, 0);
0
88 num_nids, 0);
never executed: return engine_table_register(&digest_table, engine_unregister_all_digests, e, nids, num_nids, 0);
0
89 }
never executed: end of block
0
90 return 1;
never executed: return 1;
0
91}-
92-
93void-
94ENGINE_register_all_digests(void)-
95{-
96 ENGINE *e;-
97-
98 for (e = ENGINE_get_first(); e; e = ENGINE_get_next(e))
eDescription
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • evptest
  • pbkdf2
0-2
99 ENGINE_register_digests(e);
never executed: ENGINE_register_digests(e);
0
100}
executed 2 times by 2 tests: end of block
Executed by:
  • evptest
  • pbkdf2
2
101-
102int-
103ENGINE_set_default_digests(ENGINE *e)-
104{-
105 if (e->digests) {
e->digestsDescription
TRUEnever evaluated
FALSEnever evaluated
0
106 const int *nids;-
107 int num_nids = e->digests(e, NULL, &nids, 0);-
108 if (num_nids > 0)
num_nids > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
109 return engine_table_register(&digest_table,
never executed: return engine_table_register(&digest_table, engine_unregister_all_digests, e, nids, num_nids, 1);
0
110 engine_unregister_all_digests, e, nids,
never executed: return engine_table_register(&digest_table, engine_unregister_all_digests, e, nids, num_nids, 1);
0
111 num_nids, 1);
never executed: return engine_table_register(&digest_table, engine_unregister_all_digests, e, nids, num_nids, 1);
0
112 }
never executed: end of block
0
113 return 1;
never executed: return 1;
0
114}-
115-
116/* Exposed API function to get a functional reference from the implementation-
117 * table (ie. try to get a functional reference from the tabled structural-
118 * references) for a given digest 'nid' */-
119ENGINE *-
120ENGINE_get_digest_engine(int nid)-
121{-
122 return engine_table_select(&digest_table, nid);
executed 32214 times by 21 tests: return engine_table_select(&digest_table, nid);
Executed by:
  • asn1test
  • dsatest
  • evptest
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
32214
123}-
124-
125/* Obtains a digest implementation from an ENGINE functional reference */-
126const EVP_MD *-
127ENGINE_get_digest(ENGINE *e, int nid)-
128{-
129 const EVP_MD *ret;-
130 ENGINE_DIGESTS_PTR fn = ENGINE_get_digests(e);-
131-
132 if (!fn || !fn(e, &ret, NULL, nid)) {
!fnDescription
TRUEnever evaluated
FALSEnever evaluated
!fn(e, &ret, (...id *)0) , nid)Description
TRUEnever evaluated
FALSEnever evaluated
0
133 ENGINEerror(ENGINE_R_UNIMPLEMENTED_DIGEST);-
134 return NULL;
never executed: return ((void *)0) ;
0
135 }-
136 return ret;
never executed: return ret;
0
137}-
138-
139/* Gets the digest callback from an ENGINE structure */-
140ENGINE_DIGESTS_PTR-
141ENGINE_get_digests(const ENGINE *e)-
142{-
143 return e->digests;
never executed: return e->digests;
0
144}-
145-
146/* Sets the digest callback in an ENGINE structure */-
147int-
148ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f)-
149{-
150 e->digests = f;-
151 return 1;
never executed: return 1;
0
152}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2