summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2024-08-31 09:14:21 +0000
committertb <>2024-08-31 09:14:21 +0000
commit9bcd94a09cac618808e1f47aff1c670fbdb6828d (patch)
tree797124b4a826431ab1cb43dcdf84f0684f586817
parentf58c6219618056507686c5f66a57ece7246ae5fe (diff)
downloadopenbsd-9bcd94a09cac618808e1f47aff1c670fbdb6828d.tar.gz
openbsd-9bcd94a09cac618808e1f47aff1c670fbdb6828d.tar.bz2
openbsd-9bcd94a09cac618808e1f47aff1c670fbdb6828d.zip
Remove EVP_PKEY_*check again
This API turned out to be a really bad idea. OpenSSL 3 extended it, with the result that basically every key type had its own DoS issues fixed in a recent security release. We eschewed these by having some upper bounds that kick in when keys get insanely large. Initially added on tobhe's request who fortunately never used it in iked, this was picked up only by ruby/openssl (one of the rare projects doing proper configure checks rather than branching on VERSION defines) and of course xca, since it uses everything it can. So it was easy to get rid of this again. ok beck jsing
-rw-r--r--src/lib/libcrypto/Symbols.list3
-rw-r--r--src/lib/libcrypto/evp/evp.h5
-rw-r--r--src/lib/libcrypto/evp/pmeth_gn.c30
-rw-r--r--src/lib/libcrypto/hidden/openssl/evp.h5
4 files changed, 3 insertions, 40 deletions
diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list
index dfe7ce4923..05c39eddbb 100644
--- a/src/lib/libcrypto/Symbols.list
+++ b/src/lib/libcrypto/Symbols.list
@@ -1245,7 +1245,6 @@ EVP_PKEY_asn1_get_count
1245EVP_PKEY_assign 1245EVP_PKEY_assign
1246EVP_PKEY_base_id 1246EVP_PKEY_base_id
1247EVP_PKEY_bits 1247EVP_PKEY_bits
1248EVP_PKEY_check
1249EVP_PKEY_cmp 1248EVP_PKEY_cmp
1250EVP_PKEY_cmp_parameters 1249EVP_PKEY_cmp_parameters
1251EVP_PKEY_copy_parameters 1250EVP_PKEY_copy_parameters
@@ -1287,13 +1286,11 @@ EVP_PKEY_new_CMAC_key
1287EVP_PKEY_new_mac_key 1286EVP_PKEY_new_mac_key
1288EVP_PKEY_new_raw_private_key 1287EVP_PKEY_new_raw_private_key
1289EVP_PKEY_new_raw_public_key 1288EVP_PKEY_new_raw_public_key
1290EVP_PKEY_param_check
1291EVP_PKEY_paramgen 1289EVP_PKEY_paramgen
1292EVP_PKEY_paramgen_init 1290EVP_PKEY_paramgen_init
1293EVP_PKEY_print_params 1291EVP_PKEY_print_params
1294EVP_PKEY_print_private 1292EVP_PKEY_print_private
1295EVP_PKEY_print_public 1293EVP_PKEY_print_public
1296EVP_PKEY_public_check
1297EVP_PKEY_save_parameters 1294EVP_PKEY_save_parameters
1298EVP_PKEY_security_bits 1295EVP_PKEY_security_bits
1299EVP_PKEY_set1_DH 1296EVP_PKEY_set1_DH
diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h
index 2db8acfa01..7c767758da 100644
--- a/src/lib/libcrypto/evp/evp.h
+++ b/src/lib/libcrypto/evp/evp.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: evp.h,v 1.135 2024/07/09 16:15:37 tb Exp $ */ 1/* $OpenBSD: evp.h,v 1.136 2024/08/31 09:14:21 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -985,9 +985,6 @@ int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
985int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 985int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
986int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); 986int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
987int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 987int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
988int EVP_PKEY_check(EVP_PKEY_CTX *ctx);
989int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx);
990int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
991 988
992void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); 989void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
993EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); 990EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
diff --git a/src/lib/libcrypto/evp/pmeth_gn.c b/src/lib/libcrypto/evp/pmeth_gn.c
index 415690cd0e..bc1c5bd7d2 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.20 2024/08/29 16:58:19 tb Exp $ */ 1/* $OpenBSD: pmeth_gn.c,v 1.21 2024/08/31 09:14:21 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 */
@@ -225,31 +225,3 @@ merr:
225 return mac_key; 225 return mac_key;
226} 226}
227LCRYPTO_ALIAS(EVP_PKEY_new_mac_key); 227LCRYPTO_ALIAS(EVP_PKEY_new_mac_key);
228
229/*
230 * XXX - remove the API below in the next bump.
231 */
232
233int
234EVP_PKEY_check(EVP_PKEY_CTX *ctx)
235{
236 EVPerror(ERR_R_DISABLED);
237 return -2;
238}
239LCRYPTO_ALIAS(EVP_PKEY_check);
240
241int
242EVP_PKEY_public_check(EVP_PKEY_CTX *ctx)
243{
244 EVPerror(ERR_R_DISABLED);
245 return -2;
246}
247LCRYPTO_ALIAS(EVP_PKEY_public_check);
248
249int
250EVP_PKEY_param_check(EVP_PKEY_CTX *ctx)
251{
252 EVPerror(ERR_R_DISABLED);
253 return -2;
254}
255LCRYPTO_ALIAS(EVP_PKEY_param_check);
diff --git a/src/lib/libcrypto/hidden/openssl/evp.h b/src/lib/libcrypto/hidden/openssl/evp.h
index 7721a2f412..fea609933e 100644
--- a/src/lib/libcrypto/hidden/openssl/evp.h
+++ b/src/lib/libcrypto/hidden/openssl/evp.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: evp.h,v 1.4 2024/04/10 15:00:38 beck Exp $ */ 1/* $OpenBSD: evp.h,v 1.5 2024/08/31 09:14:21 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2024 Bob Beck <beck@openbsd.org>
4 * 4 *
@@ -353,9 +353,6 @@ LCRYPTO_USED(EVP_PKEY_paramgen_init);
353LCRYPTO_USED(EVP_PKEY_paramgen); 353LCRYPTO_USED(EVP_PKEY_paramgen);
354LCRYPTO_USED(EVP_PKEY_keygen_init); 354LCRYPTO_USED(EVP_PKEY_keygen_init);
355LCRYPTO_USED(EVP_PKEY_keygen); 355LCRYPTO_USED(EVP_PKEY_keygen);
356LCRYPTO_USED(EVP_PKEY_check);
357LCRYPTO_USED(EVP_PKEY_public_check);
358LCRYPTO_USED(EVP_PKEY_param_check);
359LCRYPTO_USED(EVP_PKEY_CTX_set_cb); 356LCRYPTO_USED(EVP_PKEY_CTX_set_cb);
360LCRYPTO_USED(EVP_PKEY_CTX_get_cb); 357LCRYPTO_USED(EVP_PKEY_CTX_get_cb);
361LCRYPTO_USED(EVP_PKEY_CTX_get_keygen_info); 358LCRYPTO_USED(EVP_PKEY_CTX_get_keygen_info);