OpenCoverage

pmeth_lib.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/evp/pmeth_lib.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: pmeth_lib.c,v 1.14 2018/04/14 07:09:21 tb Exp $ */-
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL-
3 * project 2006.-
4 */-
5/* ====================================================================-
6 * Copyright (c) 2006 The OpenSSL Project. All rights reserved.-
7 *-
8 * Redistribution and use in source and binary forms, with or without-
9 * modification, are permitted provided that the following conditions-
10 * are met:-
11 *-
12 * 1. Redistributions of source code must retain the above copyright-
13 * notice, this list of conditions and the following disclaimer.-
14 *-
15 * 2. Redistributions in binary form must reproduce the above copyright-
16 * notice, this list of conditions and the following disclaimer in-
17 * the documentation and/or other materials provided with the-
18 * distribution.-
19 *-
20 * 3. All advertising materials mentioning features or use of this-
21 * software must display the following acknowledgment:-
22 * "This product includes software developed by the OpenSSL Project-
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"-
24 *-
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
26 * endorse or promote products derived from this software without-
27 * prior written permission. For written permission, please contact-
28 * licensing@OpenSSL.org.-
29 *-
30 * 5. Products derived from this software may not be called "OpenSSL"-
31 * nor may "OpenSSL" appear in their names without prior written-
32 * permission of the OpenSSL Project.-
33 *-
34 * 6. Redistributions of any form whatsoever must retain the following-
35 * acknowledgment:-
36 * "This product includes software developed by the OpenSSL Project-
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"-
38 *-
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
50 * OF THE POSSIBILITY OF SUCH DAMAGE.-
51 * ====================================================================-
52 *-
53 * This product includes cryptographic software written by Eric Young-
54 * (eay@cryptsoft.com). This product includes software written by Tim-
55 * Hudson (tjh@cryptsoft.com).-
56 *-
57 */-
58-
59#include <stdio.h>-
60#include <stdlib.h>-
61#include <string.h>-
62-
63#include <openssl/opensslconf.h>-
64-
65#include <openssl/err.h>-
66#include <openssl/evp.h>-
67#include <openssl/objects.h>-
68-
69#ifndef OPENSSL_NO_ENGINE-
70#include <openssl/engine.h>-
71#endif-
72-
73#include "asn1_locl.h"-
74#include "evp_locl.h"-
75-
76typedef int sk_cmp_fn_type(const char * const *a, const char * const *b);-
77-
78DECLARE_STACK_OF(EVP_PKEY_METHOD)-
79STACK_OF(EVP_PKEY_METHOD) *app_pkey_methods = NULL;-
80-
81extern const EVP_PKEY_METHOD rsa_pkey_meth, dh_pkey_meth, dsa_pkey_meth;-
82extern const EVP_PKEY_METHOD ec_pkey_meth, hmac_pkey_meth, cmac_pkey_meth;-
83extern const EVP_PKEY_METHOD gostimit_pkey_meth, gostr01_pkey_meth;-
84-
85static const EVP_PKEY_METHOD *standard_methods[] = {-
86#ifndef OPENSSL_NO_RSA-
87 &rsa_pkey_meth,-
88#endif-
89#ifndef OPENSSL_NO_DH-
90 &dh_pkey_meth,-
91#endif-
92#ifndef OPENSSL_NO_DSA-
93 &dsa_pkey_meth,-
94#endif-
95#ifndef OPENSSL_NO_EC-
96 &ec_pkey_meth,-
97#endif-
98#ifndef OPENSSL_NO_GOST-
99 &gostr01_pkey_meth,-
100 &gostimit_pkey_meth,-
101#endif-
102 &hmac_pkey_meth,-
103 &cmac_pkey_meth,-
104};-
105-
106static int pmeth_cmp_BSEARCH_CMP_FN(const void *, const void *);-
107static int pmeth_cmp(const EVP_PKEY_METHOD * const *, const EVP_PKEY_METHOD * const *);-
108static const EVP_PKEY_METHOD * *OBJ_bsearch_pmeth(const EVP_PKEY_METHOD * *key, const EVP_PKEY_METHOD * const *base, int num);-
109-
110static int-
111pmeth_cmp(const EVP_PKEY_METHOD * const *a, const EVP_PKEY_METHOD * const *b)-
112{-
113 return ((*a)->pkey_id - (*b)->pkey_id);
executed 8162 times by 15 tests: return ((*a)->pkey_id - (*b)->pkey_id);
Executed by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
8162
114}-
115-
116-
117static int-
118pmeth_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_)-
119{-
120 const EVP_PKEY_METHOD * const *a = a_;-
121 const EVP_PKEY_METHOD * const *b = b_;-
122 return pmeth_cmp(a, b);
executed 8162 times by 15 tests: return pmeth_cmp(a, b);
Executed by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
8162
123}-
124-
125static const EVP_PKEY_METHOD * *-
126OBJ_bsearch_pmeth(const EVP_PKEY_METHOD * *key, const EVP_PKEY_METHOD * const *base, int num)-
127{-
128 return (const EVP_PKEY_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const EVP_PKEY_METHOD *),
executed 4067 times by 15 tests: return (const EVP_PKEY_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const EVP_PKEY_METHOD *), pmeth_cmp_BSEARCH_CMP_FN);
Executed by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
4067
129 pmeth_cmp_BSEARCH_CMP_FN);
executed 4067 times by 15 tests: return (const EVP_PKEY_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const EVP_PKEY_METHOD *), pmeth_cmp_BSEARCH_CMP_FN);
Executed by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
4067
130}-
131-
132const EVP_PKEY_METHOD *-
133EVP_PKEY_meth_find(int type)-
134{-
135 EVP_PKEY_METHOD tmp;-
136 const EVP_PKEY_METHOD *t = &tmp, **ret;-
137-
138 tmp.pkey_id = type;-
139 if (app_pkey_methods) {
app_pkey_methodsDescription
TRUEnever evaluated
FALSEevaluated 4067 times by 15 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
0-4067
140 int idx;-
141 idx = sk_EVP_PKEY_METHOD_find(app_pkey_methods, &tmp);-
142 if (idx >= 0)
idx >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
143 return sk_EVP_PKEY_METHOD_value(app_pkey_methods, idx);
never executed: return ((EVP_PKEY_METHOD *)sk_value(((_STACK*) (1 ? (app_pkey_methods) : (struct stack_st_EVP_PKEY_METHOD*)0)), (idx)));
0
144 }
never executed: end of block
0
145 ret = OBJ_bsearch_pmeth(&t, standard_methods,-
146 sizeof(standard_methods)/sizeof(EVP_PKEY_METHOD *));-
147 if (!ret || !*ret)
!retDescription
TRUEnever evaluated
FALSEevaluated 4067 times by 15 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
!*retDescription
TRUEnever evaluated
FALSEevaluated 4067 times by 15 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
0-4067
148 return NULL;
never executed: return ((void *)0) ;
0
149 return *ret;
executed 4067 times by 15 tests: return *ret;
Executed by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
4067
150}-
151-
152static EVP_PKEY_CTX *-
153int_ctx_new(EVP_PKEY *pkey, ENGINE *e, int id)-
154{-
155 EVP_PKEY_CTX *ret;-
156 const EVP_PKEY_METHOD *pmeth;-
157-
158 if (id == -1) {
id == -1Description
TRUEevaluated 1965 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 1812 times by 4 tests
Evaluated by:
  • gost2814789t
  • ssltest
  • tls_prf
  • tlstest
1812-1965
159 if (!pkey || !pkey->ameth)
!pkeyDescription
TRUEnever evaluated
FALSEevaluated 1965 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
!pkey->amethDescription
TRUEnever evaluated
FALSEevaluated 1965 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-1965
160 return NULL;
never executed: return ((void *)0) ;
0
161 id = pkey->ameth->pkey_id;-
162 }
executed 1965 times by 7 tests: end of block
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
1965
163#ifndef OPENSSL_NO_ENGINE-
164 if (pkey && pkey->engine)
pkeyDescription
TRUEevaluated 1965 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 1812 times by 4 tests
Evaluated by:
  • gost2814789t
  • ssltest
  • tls_prf
  • tlstest
pkey->engineDescription
TRUEnever evaluated
FALSEevaluated 1965 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-1965
165 e = pkey->engine;
never executed: e = pkey->engine;
0
166 /* Try to find an ENGINE which implements this method */-
167 if (e) {
eDescription
TRUEnever evaluated
FALSEevaluated 3777 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-3777
168 if (!ENGINE_init(e)) {
!ENGINE_init(e)Description
TRUEnever evaluated
FALSEnever evaluated
0
169 EVPerror(ERR_R_ENGINE_LIB);-
170 return NULL;
never executed: return ((void *)0) ;
0
171 }-
172 } else
never executed: end of block
0
173 e = ENGINE_get_pkey_meth_engine(id);
executed 3777 times by 7 tests: e = ENGINE_get_pkey_meth_engine(id);
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
3777
174-
175 /* If an ENGINE handled this method look it up. Othewise-
176 * use internal tables.-
177 */-
178-
179 if (e)
eDescription
TRUEnever evaluated
FALSEevaluated 3777 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-3777
180 pmeth = ENGINE_get_pkey_meth(e, id);
never executed: pmeth = ENGINE_get_pkey_meth(e, id);
0
181 else-
182#endif-
183 pmeth = EVP_PKEY_meth_find(id);
executed 3777 times by 7 tests: pmeth = EVP_PKEY_meth_find(id);
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
3777
184-
185 if (pmeth == NULL) {
pmeth == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3777 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-3777
186 EVPerror(EVP_R_UNSUPPORTED_ALGORITHM);-
187 return NULL;
never executed: return ((void *)0) ;
0
188 }-
189-
190 ret = malloc(sizeof(EVP_PKEY_CTX));-
191 if (ret == NULL) {
ret == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3777 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-3777
192#ifndef OPENSSL_NO_ENGINE-
193 ENGINE_finish(e);-
194#endif-
195 EVPerror(ERR_R_MALLOC_FAILURE);-
196 return NULL;
never executed: return ((void *)0) ;
0
197 }-
198 ret->engine = e;-
199 ret->pmeth = pmeth;-
200 ret->operation = EVP_PKEY_OP_UNDEFINED;-
201 ret->pkey = pkey;-
202 ret->peerkey = NULL;-
203 ret->pkey_gencb = 0;-
204 if (pkey)
pkeyDescription
TRUEevaluated 1965 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 1812 times by 4 tests
Evaluated by:
  • gost2814789t
  • ssltest
  • tls_prf
  • tlstest
1812-1965
205 CRYPTO_add(&pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);
executed 1965 times by 7 tests: CRYPTO_add_lock(&pkey->references,1,10,__FILE__,205);
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
1965
206 ret->data = NULL;-
207-
208 if (pmeth->init) {
pmeth->initDescription
TRUEevaluated 3777 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
FALSEnever evaluated
0-3777
209 if (pmeth->init(ret) <= 0) {
pmeth->init(ret) <= 0Description
TRUEnever evaluated
FALSEevaluated 3777 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-3777
210 EVP_PKEY_CTX_free(ret);-
211 return NULL;
never executed: return ((void *)0) ;
0
212 }-
213 }
executed 3777 times by 7 tests: end of block
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
3777
214-
215 return ret;
executed 3777 times by 7 tests: return ret;
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
3777
216}-
217-
218EVP_PKEY_METHOD*-
219EVP_PKEY_meth_new(int id, int flags)-
220{-
221 EVP_PKEY_METHOD *pmeth;-
222-
223 pmeth = calloc(1, sizeof(EVP_PKEY_METHOD));-
224 if (!pmeth)
!pmethDescription
TRUEnever evaluated
FALSEnever evaluated
0
225 return NULL;
never executed: return ((void *)0) ;
0
226-
227 pmeth->pkey_id = id;-
228 pmeth->flags = flags | EVP_PKEY_FLAG_DYNAMIC;-
229-
230 pmeth->init = 0;-
231 pmeth->copy = 0;-
232 pmeth->cleanup = 0;-
233 pmeth->paramgen_init = 0;-
234 pmeth->paramgen = 0;-
235 pmeth->keygen_init = 0;-
236 pmeth->keygen = 0;-
237 pmeth->sign_init = 0;-
238 pmeth->sign = 0;-
239 pmeth->verify_init = 0;-
240 pmeth->verify = 0;-
241 pmeth->verify_recover_init = 0;-
242 pmeth->verify_recover = 0;-
243 pmeth->signctx_init = 0;-
244 pmeth->signctx = 0;-
245 pmeth->verifyctx_init = 0;-
246 pmeth->verifyctx = 0;-
247 pmeth->encrypt_init = 0;-
248 pmeth->encrypt = 0;-
249 pmeth->decrypt_init = 0;-
250 pmeth->decrypt = 0;-
251 pmeth->derive_init = 0;-
252 pmeth->derive = 0;-
253 pmeth->ctrl = 0;-
254 pmeth->ctrl_str = 0;-
255-
256 return pmeth;
never executed: return pmeth;
0
257}-
258-
259void-
260EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, const EVP_PKEY_METHOD *meth)-
261{-
262 if (ppkey_id)
ppkey_idDescription
TRUEnever evaluated
FALSEnever evaluated
0
263 *ppkey_id = meth->pkey_id;
never executed: *ppkey_id = meth->pkey_id;
0
264 if (pflags)
pflagsDescription
TRUEnever evaluated
FALSEnever evaluated
0
265 *pflags = meth->flags;
never executed: *pflags = meth->flags;
0
266}
never executed: end of block
0
267-
268void-
269EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src)-
270{-
271 dst->init = src->init;-
272 dst->copy = src->copy;-
273 dst->cleanup = src->cleanup;-
274-
275 dst->paramgen_init = src->paramgen_init;-
276 dst->paramgen = src->paramgen;-
277-
278 dst->keygen_init = src->keygen_init;-
279 dst->keygen = src->keygen;-
280-
281 dst->sign_init = src->sign_init;-
282 dst->sign = src->sign;-
283-
284 dst->verify_init = src->verify_init;-
285 dst->verify = src->verify;-
286-
287 dst->verify_recover_init = src->verify_recover_init;-
288 dst->verify_recover = src->verify_recover;-
289-
290 dst->signctx_init = src->signctx_init;-
291 dst->signctx = src->signctx;-
292-
293 dst->verifyctx_init = src->verifyctx_init;-
294 dst->verifyctx = src->verifyctx;-
295-
296 dst->encrypt_init = src->encrypt_init;-
297 dst->encrypt = src->encrypt;-
298-
299 dst->decrypt_init = src->decrypt_init;-
300 dst->decrypt = src->decrypt;-
301-
302 dst->derive_init = src->derive_init;-
303 dst->derive = src->derive;-
304-
305 dst->ctrl = src->ctrl;-
306 dst->ctrl_str = src->ctrl_str;-
307}
never executed: end of block
0
308-
309void-
310EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth)-
311{-
312 if (pmeth && (pmeth->flags & EVP_PKEY_FLAG_DYNAMIC))
pmethDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • freenull
(pmeth->flags & 1)Description
TRUEnever evaluated
FALSEnever evaluated
0-1
313 free(pmeth);
never executed: free(pmeth);
0
314}
executed 1 time by 1 test: end of block
Executed by:
  • freenull
1
315-
316EVP_PKEY_CTX *-
317EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e)-
318{-
319 return int_ctx_new(pkey, e, -1);
executed 1965 times by 7 tests: return int_ctx_new(pkey, e, -1);
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
1965
320}-
321-
322EVP_PKEY_CTX *-
323EVP_PKEY_CTX_new_id(int id, ENGINE *e)-
324{-
325 return int_ctx_new(NULL, e, id);
executed 1812 times by 4 tests: return int_ctx_new( ((void *)0) , e, id);
Executed by:
  • gost2814789t
  • ssltest
  • tls_prf
  • tlstest
1812
326}-
327-
328EVP_PKEY_CTX *-
329EVP_PKEY_CTX_dup(EVP_PKEY_CTX *pctx)-
330{-
331 EVP_PKEY_CTX *rctx;-
332-
333 if (!pctx->pmeth || !pctx->pmeth->copy)
!pctx->pmethDescription
TRUEnever evaluated
FALSEevaluated 9480 times by 6 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
!pctx->pmeth->copyDescription
TRUEnever evaluated
FALSEevaluated 9480 times by 6 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-9480
334 return NULL;
never executed: return ((void *)0) ;
0
335#ifndef OPENSSL_NO_ENGINE-
336 /* Make sure it's safe to copy a pkey context using an ENGINE */-
337 if (pctx->engine && !ENGINE_init(pctx->engine)) {
pctx->engineDescription
TRUEnever evaluated
FALSEevaluated 9480 times by 6 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
!ENGINE_init(pctx->engine)Description
TRUEnever evaluated
FALSEnever evaluated
0-9480
338 EVPerror(ERR_R_ENGINE_LIB);-
339 return 0;
never executed: return 0;
0
340 }-
341#endif-
342 rctx = malloc(sizeof(EVP_PKEY_CTX));-
343 if (!rctx)
!rctxDescription
TRUEnever evaluated
FALSEevaluated 9480 times by 6 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-9480
344 return NULL;
never executed: return ((void *)0) ;
0
345-
346 rctx->pmeth = pctx->pmeth;-
347#ifndef OPENSSL_NO_ENGINE-
348 rctx->engine = pctx->engine;-
349#endif-
350-
351 if (pctx->pkey)
pctx->pkeyDescription
TRUEevaluated 9480 times by 6 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
FALSEnever evaluated
0-9480
352 CRYPTO_add(&pctx->pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);
executed 9480 times by 6 tests: CRYPTO_add_lock(&pctx->pkey->references,1,10,__FILE__,352);
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
9480
353-
354 rctx->pkey = pctx->pkey;-
355-
356 if (pctx->peerkey)
pctx->peerkeyDescription
TRUEnever evaluated
FALSEevaluated 9480 times by 6 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-9480
357 CRYPTO_add(&pctx->peerkey->references, 1, CRYPTO_LOCK_EVP_PKEY);
never executed: CRYPTO_add_lock(&pctx->peerkey->references,1,10,__FILE__,357);
0
358-
359 rctx->peerkey = pctx->peerkey;-
360-
361 rctx->data = NULL;-
362 rctx->app_data = NULL;-
363 rctx->operation = pctx->operation;-
364-
365 if (pctx->pmeth->copy(rctx, pctx) > 0)
pctx->pmeth->c...ctx, pctx) > 0Description
TRUEevaluated 9480 times by 6 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
FALSEnever evaluated
0-9480
366 return rctx;
executed 9480 times by 6 tests: return rctx;
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
9480
367-
368 EVP_PKEY_CTX_free(rctx);-
369 return NULL;
never executed: return ((void *)0) ;
0
370}-
371-
372int-
373EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth)-
374{-
375 if (app_pkey_methods == NULL) {
app_pkey_metho...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
376 app_pkey_methods = sk_EVP_PKEY_METHOD_new(pmeth_cmp);-
377 if (!app_pkey_methods)
!app_pkey_methodsDescription
TRUEnever evaluated
FALSEnever evaluated
0
378 return 0;
never executed: return 0;
0
379 }
never executed: end of block
0
380 if (!sk_EVP_PKEY_METHOD_push(app_pkey_methods, pmeth))
!sk_push(((_ST...Y_METHOD*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
381 return 0;
never executed: return 0;
0
382 sk_EVP_PKEY_METHOD_sort(app_pkey_methods);-
383 return 1;
never executed: return 1;
0
384}-
385-
386void-
387EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx)-
388{-
389 if (ctx == NULL)
ctx == ((void *)0)Description
TRUEevaluated 415338 times by 22 tests
Evaluated by:
  • asn1test
  • dsatest
  • evptest
  • freenull
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 13257 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
13257-415338
390 return;
executed 415338 times by 22 tests: return;
Executed by:
  • asn1test
  • dsatest
  • evptest
  • freenull
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
415338
391 if (ctx->pmeth && ctx->pmeth->cleanup)
ctx->pmethDescription
TRUEevaluated 13257 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
FALSEnever evaluated
ctx->pmeth->cleanupDescription
TRUEevaluated 13257 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
FALSEnever evaluated
0-13257
392 ctx->pmeth->cleanup(ctx);
executed 13257 times by 7 tests: ctx->pmeth->cleanup(ctx);
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
13257
393 EVP_PKEY_free(ctx->pkey);-
394 EVP_PKEY_free(ctx->peerkey);-
395#ifndef OPENSSL_NO_ENGINE-
396 ENGINE_finish(ctx->engine);-
397#endif-
398 free(ctx);-
399}
executed 13257 times by 7 tests: end of block
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
13257
400-
401int-
402EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, int cmd,-
403 int p1, void *p2)-
404{-
405 int ret;-
406-
407 if (!ctx || !ctx->pmeth || !ctx->pmeth->ctrl) {
!ctxDescription
TRUEnever evaluated
FALSEevaluated 19653 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
!ctx->pmethDescription
TRUEnever evaluated
FALSEevaluated 19653 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
!ctx->pmeth->ctrlDescription
TRUEnever evaluated
FALSEevaluated 19653 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-19653
408 EVPerror(EVP_R_COMMAND_NOT_SUPPORTED);-
409 return -2;
never executed: return -2;
0
410 }-
411 if ((keytype != -1) && (ctx->pmeth->pkey_id != keytype))
(keytype != -1)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 19652 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
(ctx->pmeth->p...id != keytype)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-19652
412 return -1;
never executed: return -1;
0
413-
414 if (ctx->operation == EVP_PKEY_OP_UNDEFINED) {
ctx->operation == 0Description
TRUEnever evaluated
FALSEevaluated 19653 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-19653
415 EVPerror(EVP_R_NO_OPERATION_SET);-
416 return -1;
never executed: return -1;
0
417 }-
418-
419 if ((optype != -1) && !(ctx->operation & optype)) {
(optype != -1)Description
TRUEevaluated 19652 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
!(ctx->operation & optype)Description
TRUEnever evaluated
FALSEevaluated 19652 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-19652
420 EVPerror(EVP_R_INVALID_OPERATION);-
421 return -1;
never executed: return -1;
0
422 }-
423-
424 ret = ctx->pmeth->ctrl(ctx, cmd, p1, p2);-
425-
426 if (ret == -2)
ret == -2Description
TRUEnever evaluated
FALSEevaluated 19653 times by 7 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
0-19653
427 EVPerror(EVP_R_COMMAND_NOT_SUPPORTED);
never executed: ERR_put_error(6,(0xfff),(147),__FILE__,427);
0
428-
429 return ret;
executed 19653 times by 7 tests: return ret;
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
19653
430-
431}-
432-
433int-
434EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *name, const char *value)-
435{-
436 if (!ctx || !ctx->pmeth || !ctx->pmeth->ctrl_str) {
!ctxDescription
TRUEnever evaluated
FALSEnever evaluated
!ctx->pmethDescription
TRUEnever evaluated
FALSEnever evaluated
!ctx->pmeth->ctrl_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
437 EVPerror(EVP_R_COMMAND_NOT_SUPPORTED);-
438 return -2;
never executed: return -2;
0
439 }-
440 if (!strcmp(name, "digest")) {
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "digest" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...gest" )))); })Description
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
441 const EVP_MD *md;-
442 if (!value || !(md = EVP_get_digestbyname(value))) {
!valueDescription
TRUEnever evaluated
FALSEnever evaluated
!(md = EVP_get...byname(value))Description
TRUEnever evaluated
FALSEnever evaluated
0
443 EVPerror(EVP_R_INVALID_DIGEST);-
444 return 0;
never executed: return 0;
0
445 }-
446 return EVP_PKEY_CTX_set_signature_md(ctx, md);
never executed: return EVP_PKEY_CTX_ctrl(ctx, -1, ((1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7)), 1, 0, (void *)md);
0
447 }-
448 return ctx->pmeth->ctrl_str(ctx, name, value);
never executed: return ctx->pmeth->ctrl_str(ctx, name, value);
0
449}-
450-
451int-
452EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx)-
453{-
454 return ctx->operation;
never executed: return ctx->operation;
0
455}-
456-
457void-
458EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen)-
459{-
460 ctx->keygen_info = dat;-
461 ctx->keygen_info_count = datlen;-
462}
never executed: end of block
0
463-
464void-
465EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data)-
466{-
467 ctx->data = data;-
468}
executed 24 times by 1 test: end of block
Executed by:
  • gost2814789t
24
469-
470void *-
471EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx)-
472{-
473 return ctx->data;
executed 72 times by 1 test: return ctx->data;
Executed by:
  • gost2814789t
72
474}-
475-
476EVP_PKEY *-
477EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx)-
478{-
479 return ctx->pkey;
executed 10 times by 2 tests: return ctx->pkey;
Executed by:
  • gost2814789t
  • libcrypto.so.44.0.1
10
480}-
481-
482EVP_PKEY *-
483EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx)-
484{-
485 return ctx->peerkey;
never executed: return ctx->peerkey;
0
486}-
487-
488void-
489EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data)-
490{-
491 ctx->app_data = data;-
492}
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
1
493-
494void *-
495EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx)-
496{-
497 return ctx->app_data;
never executed: return ctx->app_data;
0
498}-
499-
500void-
501EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,-
502 int (*init)(EVP_PKEY_CTX *ctx))-
503{-
504 pmeth->init = init;-
505}
never executed: end of block
0
506-
507void-
508EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth,-
509 int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src))-
510{-
511 pmeth->copy = copy;-
512}
never executed: end of block
0
513-
514void-
515EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,-
516 void (*cleanup)(EVP_PKEY_CTX *ctx))-
517{-
518 pmeth->cleanup = cleanup;-
519}
never executed: end of block
0
520-
521void-
522EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth,-
523 int (*paramgen_init)(EVP_PKEY_CTX *ctx),-
524 int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey))-
525{-
526 pmeth->paramgen_init = paramgen_init;-
527 pmeth->paramgen = paramgen;-
528}
never executed: end of block
0
529-
530void-
531EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth,-
532 int (*keygen_init)(EVP_PKEY_CTX *ctx),-
533 int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey))-
534{-
535 pmeth->keygen_init = keygen_init;-
536 pmeth->keygen = keygen;-
537}
never executed: end of block
0
538-
539void-
540EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth,-
541 int (*sign_init)(EVP_PKEY_CTX *ctx),-
542 int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,-
543 const unsigned char *tbs, size_t tbslen))-
544{-
545 pmeth->sign_init = sign_init;-
546 pmeth->sign = sign;-
547}
never executed: end of block
0
548-
549void-
550EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth,-
551 int (*verify_init)(EVP_PKEY_CTX *ctx),-
552 int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen,-
553 const unsigned char *tbs, size_t tbslen))-
554{-
555 pmeth->verify_init = verify_init;-
556 pmeth->verify = verify;-
557}
never executed: end of block
0
558-
559void-
560EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth,-
561 int (*verify_recover_init)(EVP_PKEY_CTX *ctx),-
562 int (*verify_recover)(EVP_PKEY_CTX *ctx,-
563 unsigned char *sig, size_t *siglen,-
564 const unsigned char *tbs, size_t tbslen))-
565{-
566 pmeth->verify_recover_init = verify_recover_init;-
567 pmeth->verify_recover = verify_recover;-
568}
never executed: end of block
0
569-
570void-
571EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,-
572 int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),-
573 int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,-
574 EVP_MD_CTX *mctx))-
575{-
576 pmeth->signctx_init = signctx_init;-
577 pmeth->signctx = signctx;-
578}
never executed: end of block
0
579-
580void-
581EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,-
582 int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),-
583 int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen,-
584 EVP_MD_CTX *mctx))-
585{-
586 pmeth->verifyctx_init = verifyctx_init;-
587 pmeth->verifyctx = verifyctx;-
588}
never executed: end of block
0
589-
590void-
591EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth,-
592 int (*encrypt_init)(EVP_PKEY_CTX *ctx),-
593 int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,-
594 const unsigned char *in, size_t inlen))-
595{-
596 pmeth->encrypt_init = encrypt_init;-
597 pmeth->encrypt = encryptfn;-
598}
never executed: end of block
0
599-
600void-
601EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth,-
602 int (*decrypt_init)(EVP_PKEY_CTX *ctx),-
603 int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,-
604 const unsigned char *in, size_t inlen))-
605{-
606 pmeth->decrypt_init = decrypt_init;-
607 pmeth->decrypt = decrypt;-
608}
never executed: end of block
0
609-
610void-
611EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth,-
612 int (*derive_init)(EVP_PKEY_CTX *ctx),-
613 int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen))-
614{-
615 pmeth->derive_init = derive_init;-
616 pmeth->derive = derive;-
617}
never executed: end of block
0
618-
619void-
620EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,-
621 int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2),-
622 int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value))-
623{-
624 pmeth->ctrl = ctrl;-
625 pmeth->ctrl_str = ctrl_str;-
626}
never executed: end of block
0
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2