diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/dh/dh_ameth.c | 32 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_ameth.c | 41 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp_local.h | 10 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/pmeth_gn.c | 60 | ||||
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_ameth.c | 12 |
5 files changed, 15 insertions, 140 deletions
diff --git a/src/lib/libcrypto/dh/dh_ameth.c b/src/lib/libcrypto/dh/dh_ameth.c index d51a5bea4c..13141761d4 100644 --- a/src/lib/libcrypto/dh/dh_ameth.c +++ b/src/lib/libcrypto/dh/dh_ameth.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: dh_ameth.c,v 1.40 2024/01/04 17:01:26 tb Exp $ */ | 1 | /* $OpenBSD: dh_ameth.c,v 1.41 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 | */ |
| @@ -496,32 +496,6 @@ DHparams_print_fp(FILE *fp, const DH *x) | |||
| 496 | } | 496 | } |
| 497 | LCRYPTO_ALIAS(DHparams_print_fp); | 497 | LCRYPTO_ALIAS(DHparams_print_fp); |
| 498 | 498 | ||
| 499 | static int | ||
| 500 | dh_pkey_public_check(const EVP_PKEY *pkey) | ||
| 501 | { | ||
| 502 | DH *dh = pkey->pkey.dh; | ||
| 503 | |||
| 504 | if (dh->pub_key == NULL) { | ||
| 505 | DHerror(DH_R_MISSING_PUBKEY); | ||
| 506 | return 0; | ||
| 507 | } | ||
| 508 | |||
| 509 | return DH_check_pub_key_ex(dh, dh->pub_key); | ||
| 510 | } | ||
| 511 | |||
| 512 | static int | ||
| 513 | dh_pkey_param_check(const EVP_PKEY *pkey) | ||
| 514 | { | ||
| 515 | DH *dh = pkey->pkey.dh; | ||
| 516 | |||
| 517 | /* | ||
| 518 | * It would have made more sense to support EVP_PKEY_check() for DH | ||
| 519 | * keys and call DH_check_ex() there and keeping this as a wrapper | ||
| 520 | * for DH_param_check_ex(). We follow OpenSSL's choice. | ||
| 521 | */ | ||
| 522 | return DH_check_ex(dh); | ||
| 523 | } | ||
| 524 | |||
| 525 | const EVP_PKEY_ASN1_METHOD dh_asn1_meth = { | 499 | const EVP_PKEY_ASN1_METHOD dh_asn1_meth = { |
| 526 | .base_method = &dh_asn1_meth, | 500 | .base_method = &dh_asn1_meth, |
| 527 | .pkey_id = EVP_PKEY_DH, | 501 | .pkey_id = EVP_PKEY_DH, |
| @@ -550,8 +524,4 @@ const EVP_PKEY_ASN1_METHOD dh_asn1_meth = { | |||
| 550 | .param_print = dh_param_print, | 524 | .param_print = dh_param_print, |
| 551 | 525 | ||
| 552 | .pkey_free = dh_free, | 526 | .pkey_free = dh_free, |
| 553 | |||
| 554 | .pkey_check = NULL, | ||
| 555 | .pkey_public_check = dh_pkey_public_check, | ||
| 556 | .pkey_param_check = dh_pkey_param_check, | ||
| 557 | }; | 527 | }; |
diff --git a/src/lib/libcrypto/ec/ec_ameth.c b/src/lib/libcrypto/ec/ec_ameth.c index 378261b946..f42093c3db 100644 --- a/src/lib/libcrypto/ec/ec_ameth.c +++ b/src/lib/libcrypto/ec/ec_ameth.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_ameth.c,v 1.68 2024/05/10 05:12:03 tb Exp $ */ | 1 | /* $OpenBSD: ec_ameth.c,v 1.69 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 | */ |
| @@ -689,41 +689,6 @@ ec_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) | |||
| 689 | 689 | ||
| 690 | } | 690 | } |
| 691 | 691 | ||
| 692 | static int | ||
| 693 | ec_pkey_check(const EVP_PKEY *pkey) | ||
| 694 | { | ||
| 695 | EC_KEY *eckey = pkey->pkey.ec; | ||
| 696 | |||
| 697 | if (eckey->priv_key == NULL) { | ||
| 698 | ECerror(EC_R_MISSING_PRIVATE_KEY); | ||
| 699 | return 0; | ||
| 700 | } | ||
| 701 | |||
| 702 | return EC_KEY_check_key(eckey); | ||
| 703 | } | ||
| 704 | |||
| 705 | static int | ||
| 706 | ec_pkey_public_check(const EVP_PKEY *pkey) | ||
| 707 | { | ||
| 708 | EC_KEY *eckey = pkey->pkey.ec; | ||
| 709 | |||
| 710 | /* This also checks the private key, but oh, well... */ | ||
| 711 | return EC_KEY_check_key(eckey); | ||
| 712 | } | ||
| 713 | |||
| 714 | static int | ||
| 715 | ec_pkey_param_check(const EVP_PKEY *pkey) | ||
| 716 | { | ||
| 717 | EC_KEY *eckey = pkey->pkey.ec; | ||
| 718 | |||
| 719 | if (eckey->group == NULL) { | ||
| 720 | ECerror(EC_R_MISSING_PARAMETERS); | ||
| 721 | return 0; | ||
| 722 | } | ||
| 723 | |||
| 724 | return EC_GROUP_check(eckey->group, NULL); | ||
| 725 | } | ||
| 726 | |||
| 727 | #ifndef OPENSSL_NO_CMS | 692 | #ifndef OPENSSL_NO_CMS |
| 728 | 693 | ||
| 729 | static int | 694 | static int |
| @@ -1092,8 +1057,4 @@ const EVP_PKEY_ASN1_METHOD eckey_asn1_meth = { | |||
| 1092 | .pkey_ctrl = ec_pkey_ctrl, | 1057 | .pkey_ctrl = ec_pkey_ctrl, |
| 1093 | .old_priv_decode = old_ec_priv_decode, | 1058 | .old_priv_decode = old_ec_priv_decode, |
| 1094 | .old_priv_encode = old_ec_priv_encode, | 1059 | .old_priv_encode = old_ec_priv_encode, |
| 1095 | |||
| 1096 | .pkey_check = ec_pkey_check, | ||
| 1097 | .pkey_public_check = ec_pkey_public_check, | ||
| 1098 | .pkey_param_check = ec_pkey_param_check, | ||
| 1099 | }; | 1060 | }; |
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 | ||
| 331 | void evp_pkey_set_cb_translate(BN_GENCB *cb, EVP_PKEY_CTX *ctx); | 323 | void 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 | } |
| 227 | LCRYPTO_ALIAS(EVP_PKEY_new_mac_key); | 227 | LCRYPTO_ALIAS(EVP_PKEY_new_mac_key); |
| 228 | 228 | ||
| 229 | /* | ||
| 230 | * XXX - remove the API below in the next bump. | ||
| 231 | */ | ||
| 232 | |||
| 229 | int | 233 | int |
| 230 | EVP_PKEY_check(EVP_PKEY_CTX *ctx) | 234 | EVP_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 | } |
| 249 | LCRYPTO_ALIAS(EVP_PKEY_check); | 239 | LCRYPTO_ALIAS(EVP_PKEY_check); |
| 250 | 240 | ||
| 251 | int | 241 | int |
| 252 | EVP_PKEY_public_check(EVP_PKEY_CTX *ctx) | 242 | EVP_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 | } |
| 271 | LCRYPTO_ALIAS(EVP_PKEY_public_check); | 247 | LCRYPTO_ALIAS(EVP_PKEY_public_check); |
| 272 | 248 | ||
| 273 | int | 249 | int |
| 274 | EVP_PKEY_param_check(EVP_PKEY_CTX *ctx) | 250 | EVP_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 | } |
| 293 | LCRYPTO_ALIAS(EVP_PKEY_param_check); | 255 | LCRYPTO_ALIAS(EVP_PKEY_param_check); |
diff --git a/src/lib/libcrypto/rsa/rsa_ameth.c b/src/lib/libcrypto/rsa/rsa_ameth.c index d7ce931733..eb5d599bf0 100644 --- a/src/lib/libcrypto/rsa/rsa_ameth.c +++ b/src/lib/libcrypto/rsa/rsa_ameth.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: rsa_ameth.c,v 1.59 2024/08/28 07:15:04 tb Exp $ */ | 1 | /* $OpenBSD: rsa_ameth.c,v 1.60 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 | */ |
| @@ -1082,12 +1082,6 @@ rsa_item_sign(EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn, | |||
| 1082 | return 2; | 1082 | return 2; |
| 1083 | } | 1083 | } |
| 1084 | 1084 | ||
| 1085 | static int | ||
| 1086 | rsa_pkey_check(const EVP_PKEY *pkey) | ||
| 1087 | { | ||
| 1088 | return RSA_check_key(pkey->pkey.rsa); | ||
| 1089 | } | ||
| 1090 | |||
| 1091 | #ifndef OPENSSL_NO_CMS | 1085 | #ifndef OPENSSL_NO_CMS |
| 1092 | static RSA_OAEP_PARAMS * | 1086 | static RSA_OAEP_PARAMS * |
| 1093 | rsa_oaep_decode(const X509_ALGOR *alg) | 1087 | rsa_oaep_decode(const X509_ALGOR *alg) |
| @@ -1235,16 +1229,12 @@ const EVP_PKEY_ASN1_METHOD rsa_asn1_meth = { | |||
| 1235 | .old_priv_encode = old_rsa_priv_encode, | 1229 | .old_priv_encode = old_rsa_priv_encode, |
| 1236 | .item_verify = rsa_item_verify, | 1230 | .item_verify = rsa_item_verify, |
| 1237 | .item_sign = rsa_item_sign, | 1231 | .item_sign = rsa_item_sign, |
| 1238 | |||
| 1239 | .pkey_check = rsa_pkey_check, | ||
| 1240 | }; | 1232 | }; |
| 1241 | 1233 | ||
| 1242 | const EVP_PKEY_ASN1_METHOD rsa2_asn1_meth = { | 1234 | const EVP_PKEY_ASN1_METHOD rsa2_asn1_meth = { |
| 1243 | .base_method = &rsa_asn1_meth, | 1235 | .base_method = &rsa_asn1_meth, |
| 1244 | .pkey_id = EVP_PKEY_RSA2, | 1236 | .pkey_id = EVP_PKEY_RSA2, |
| 1245 | .pkey_flags = ASN1_PKEY_ALIAS, | 1237 | .pkey_flags = ASN1_PKEY_ALIAS, |
| 1246 | |||
| 1247 | .pkey_check = rsa_pkey_check, | ||
| 1248 | }; | 1238 | }; |
| 1249 | 1239 | ||
| 1250 | const EVP_PKEY_ASN1_METHOD rsa_pss_asn1_meth = { | 1240 | const EVP_PKEY_ASN1_METHOD rsa_pss_asn1_meth = { |
