OpenCoverage

eng_pkey.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/engine/eng_pkey.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: eng_pkey.c,v 1.7 2017/01/29 17:49:23 beck Exp $ */-
2/* ====================================================================-
3 * Copyright (c) 1999-2001 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/* Basic get/set stuff */-
61-
62int-
63ENGINE_set_load_privkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpriv_f)-
64{-
65 e->load_privkey = loadpriv_f;-
66 return 1;
never executed: return 1;
0
67}-
68-
69int-
70ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f)-
71{-
72 e->load_pubkey = loadpub_f;-
73 return 1;
never executed: return 1;
0
74}-
75-
76int-
77ENGINE_set_load_ssl_client_cert_function(ENGINE *e,-
78 ENGINE_SSL_CLIENT_CERT_PTR loadssl_f)-
79{-
80 e->load_ssl_client_cert = loadssl_f;-
81 return 1;
never executed: return 1;
0
82}-
83-
84ENGINE_LOAD_KEY_PTR-
85ENGINE_get_load_privkey_function(const ENGINE *e)-
86{-
87 return e->load_privkey;
never executed: return e->load_privkey;
0
88}-
89-
90ENGINE_LOAD_KEY_PTR-
91ENGINE_get_load_pubkey_function(const ENGINE *e)-
92{-
93 return e->load_pubkey;
never executed: return e->load_pubkey;
0
94}-
95-
96ENGINE_SSL_CLIENT_CERT_PTR-
97ENGINE_get_ssl_client_cert_function(const ENGINE *e)-
98{-
99 return e->load_ssl_client_cert;
never executed: return e->load_ssl_client_cert;
0
100}-
101-
102/* API functions to load public/private keys */-
103-
104EVP_PKEY *-
105ENGINE_load_private_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method,-
106 void *callback_data)-
107{-
108 EVP_PKEY *pkey;-
109-
110 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
111 ENGINEerror(ERR_R_PASSED_NULL_PARAMETER);-
112 return 0;
never executed: return 0;
0
113 }-
114 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);-
115 if (e->funct_ref == 0) {
e->funct_ref == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
116 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);-
117 ENGINEerror(ENGINE_R_NOT_INITIALISED);-
118 return 0;
never executed: return 0;
0
119 }-
120 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);-
121 if (!e->load_privkey) {
!e->load_privkeyDescription
TRUEnever evaluated
FALSEnever evaluated
0
122 ENGINEerror(ENGINE_R_NO_LOAD_FUNCTION);-
123 return 0;
never executed: return 0;
0
124 }-
125 pkey = e->load_privkey(e, key_id, ui_method, callback_data);-
126 if (!pkey) {
!pkeyDescription
TRUEnever evaluated
FALSEnever evaluated
0
127 ENGINEerror(ENGINE_R_FAILED_LOADING_PRIVATE_KEY);-
128 return 0;
never executed: return 0;
0
129 }-
130 return pkey;
never executed: return pkey;
0
131}-
132-
133EVP_PKEY *-
134ENGINE_load_public_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method,-
135 void *callback_data)-
136{-
137 EVP_PKEY *pkey;-
138-
139 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
140 ENGINEerror(ERR_R_PASSED_NULL_PARAMETER);-
141 return 0;
never executed: return 0;
0
142 }-
143 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);-
144 if (e->funct_ref == 0) {
e->funct_ref == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
145 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);-
146 ENGINEerror(ENGINE_R_NOT_INITIALISED);-
147 return 0;
never executed: return 0;
0
148 }-
149 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);-
150 if (!e->load_pubkey) {
!e->load_pubkeyDescription
TRUEnever evaluated
FALSEnever evaluated
0
151 ENGINEerror(ENGINE_R_NO_LOAD_FUNCTION);-
152 return 0;
never executed: return 0;
0
153 }-
154 pkey = e->load_pubkey(e, key_id, ui_method, callback_data);-
155 if (!pkey) {
!pkeyDescription
TRUEnever evaluated
FALSEnever evaluated
0
156 ENGINEerror(ENGINE_R_FAILED_LOADING_PUBLIC_KEY);-
157 return 0;
never executed: return 0;
0
158 }-
159 return pkey;
never executed: return pkey;
0
160}-
161-
162int-
163ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s, STACK_OF(X509_NAME) *ca_dn,-
164 X509 **pcert, EVP_PKEY **ppkey, STACK_OF(X509) **pother,-
165 UI_METHOD *ui_method, void *callback_data)-
166{-
167 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
168 ENGINEerror(ERR_R_PASSED_NULL_PARAMETER);-
169 return 0;
never executed: return 0;
0
170 }-
171 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);-
172 if (e->funct_ref == 0) {
e->funct_ref == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
173 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);-
174 ENGINEerror(ENGINE_R_NOT_INITIALISED);-
175 return 0;
never executed: return 0;
0
176 }-
177 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);-
178 if (!e->load_ssl_client_cert) {
!e->load_ssl_client_certDescription
TRUEnever evaluated
FALSEnever evaluated
0
179 ENGINEerror(ENGINE_R_NO_LOAD_FUNCTION);-
180 return 0;
never executed: return 0;
0
181 }-
182 return e->load_ssl_client_cert(e, s, ca_dn, pcert, ppkey, pother,
never executed: return e->load_ssl_client_cert(e, s, ca_dn, pcert, ppkey, pother, ui_method, callback_data);
0
183 ui_method, callback_data);
never executed: return e->load_ssl_client_cert(e, s, ca_dn, pcert, ppkey, pother, ui_method, callback_data);
0
184}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2