summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp
diff options
context:
space:
mode:
authortb <>2024-08-29 16:58:19 +0000
committertb <>2024-08-29 16:58:19 +0000
commitde7d0ab1c83083dedcf2e492963189bc2ba71ef0 (patch)
treeac80a4e15f4c62b0c198aacafcfe36bca5b92794 /src/lib/libcrypto/evp
parentdabf625eeca30be23d1bdf73a58eb6f7fd1bed35 (diff)
downloadopenbsd-de7d0ab1c83083dedcf2e492963189bc2ba71ef0.tar.gz
openbsd-de7d0ab1c83083dedcf2e492963189bc2ba71ef0.tar.bz2
openbsd-de7d0ab1c83083dedcf2e492963189bc2ba71ef0.zip
Remove the pkey_{,public_,param_}check() handlers
This disables the EVP_PKEY_*check() API and makes it fail (more precisely indicate lack of support) on all key types. This is an intermediate step to full removal. Removal is ok beck jsing
Diffstat (limited to 'src/lib/libcrypto/evp')
-rw-r--r--src/lib/libcrypto/evp/evp_local.h10
-rw-r--r--src/lib/libcrypto/evp/pmeth_gn.c60
2 files changed, 12 insertions, 58 deletions
diff --git a/src/lib/libcrypto/evp/evp_local.h b/src/lib/libcrypto/evp/evp_local.h
index 5d541ffec4..54cd65d0af 100644
--- a/src/lib/libcrypto/evp/evp_local.h
+++ b/src/lib/libcrypto/evp/evp_local.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: evp_local.h,v 1.24 2024/08/28 07:15:04 tb Exp $ */ 1/* $OpenBSD: evp_local.h,v 1.25 2024/08/29 16:58:19 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -140,10 +140,6 @@ struct evp_pkey_asn1_method_st {
140 int (*item_sign)(EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn, 140 int (*item_sign)(EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn,
141 X509_ALGOR *alg1, X509_ALGOR *alg2, ASN1_BIT_STRING *sig); 141 X509_ALGOR *alg1, X509_ALGOR *alg2, ASN1_BIT_STRING *sig);
142 142
143 int (*pkey_check)(const EVP_PKEY *pk);
144 int (*pkey_public_check)(const EVP_PKEY *pk);
145 int (*pkey_param_check)(const EVP_PKEY *pk);
146
147 int (*set_priv_key)(EVP_PKEY *pk, const unsigned char *private_key, 143 int (*set_priv_key)(EVP_PKEY *pk, const unsigned char *private_key,
148 size_t len); 144 size_t len);
149 int (*set_pub_key)(EVP_PKEY *pk, const unsigned char *public_key, 145 int (*set_pub_key)(EVP_PKEY *pk, const unsigned char *public_key,
@@ -322,10 +318,6 @@ struct evp_pkey_method_st {
322 const unsigned char *tbs, size_t tbslen); 318 const unsigned char *tbs, size_t tbslen);
323 int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, 319 int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig,
324 size_t siglen, const unsigned char *tbs, size_t tbslen); 320 size_t siglen, const unsigned char *tbs, size_t tbslen);
325
326 int (*check)(EVP_PKEY *pkey);
327 int (*public_check)(EVP_PKEY *pkey);
328 int (*param_check)(EVP_PKEY *pkey);
329} /* EVP_PKEY_METHOD */; 321} /* EVP_PKEY_METHOD */;
330 322
331void evp_pkey_set_cb_translate(BN_GENCB *cb, EVP_PKEY_CTX *ctx); 323void evp_pkey_set_cb_translate(BN_GENCB *cb, EVP_PKEY_CTX *ctx);
diff --git a/src/lib/libcrypto/evp/pmeth_gn.c b/src/lib/libcrypto/evp/pmeth_gn.c
index 1c355e594a..415690cd0e 100644
--- a/src/lib/libcrypto/evp/pmeth_gn.c
+++ b/src/lib/libcrypto/evp/pmeth_gn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pmeth_gn.c,v 1.19 2024/04/17 08:24:11 tb Exp $ */ 1/* $OpenBSD: pmeth_gn.c,v 1.20 2024/08/29 16:58:19 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2006. 3 * project 2006.
4 */ 4 */
@@ -226,68 +226,30 @@ merr:
226} 226}
227LCRYPTO_ALIAS(EVP_PKEY_new_mac_key); 227LCRYPTO_ALIAS(EVP_PKEY_new_mac_key);
228 228
229/*
230 * XXX - remove the API below in the next bump.
231 */
232
229int 233int
230EVP_PKEY_check(EVP_PKEY_CTX *ctx) 234EVP_PKEY_check(EVP_PKEY_CTX *ctx)
231{ 235{
232 EVP_PKEY *pkey; 236 EVPerror(ERR_R_DISABLED);
233 237 return -2;
234 if ((pkey = ctx->pkey) == NULL) {
235 EVPerror(EVP_R_NO_KEY_SET);
236 return 0;
237 }
238
239 if (ctx->pmeth->check != NULL)
240 return ctx->pmeth->check(pkey);
241
242 if (pkey->ameth == NULL || pkey->ameth->pkey_check == NULL) {
243 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
244 return -2;
245 }
246
247 return pkey->ameth->pkey_check(pkey);
248} 238}
249LCRYPTO_ALIAS(EVP_PKEY_check); 239LCRYPTO_ALIAS(EVP_PKEY_check);
250 240
251int 241int
252EVP_PKEY_public_check(EVP_PKEY_CTX *ctx) 242EVP_PKEY_public_check(EVP_PKEY_CTX *ctx)
253{ 243{
254 EVP_PKEY *pkey; 244 EVPerror(ERR_R_DISABLED);
255 245 return -2;
256 if ((pkey = ctx->pkey) == NULL) {
257 EVPerror(EVP_R_NO_KEY_SET);
258 return 0;
259 }
260
261 if (ctx->pmeth->public_check != NULL)
262 return ctx->pmeth->public_check(pkey);
263
264 if (pkey->ameth == NULL || pkey->ameth->pkey_public_check == NULL) {
265 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
266 return -2;
267 }
268
269 return pkey->ameth->pkey_public_check(pkey);
270} 246}
271LCRYPTO_ALIAS(EVP_PKEY_public_check); 247LCRYPTO_ALIAS(EVP_PKEY_public_check);
272 248
273int 249int
274EVP_PKEY_param_check(EVP_PKEY_CTX *ctx) 250EVP_PKEY_param_check(EVP_PKEY_CTX *ctx)
275{ 251{
276 EVP_PKEY *pkey; 252 EVPerror(ERR_R_DISABLED);
277 253 return -2;
278 if ((pkey = ctx->pkey) == NULL) {
279 EVPerror(EVP_R_NO_KEY_SET);
280 return 0;
281 }
282
283 if (ctx->pmeth->param_check != NULL)
284 return ctx->pmeth->param_check(pkey);
285
286 if (pkey->ameth == NULL || pkey->ameth->pkey_param_check == NULL) {
287 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
288 return -2;
289 }
290
291 return pkey->ameth->pkey_param_check(pkey);
292} 254}
293LCRYPTO_ALIAS(EVP_PKEY_param_check); 255LCRYPTO_ALIAS(EVP_PKEY_param_check);