diff options
| author | tb <> | 2024-01-13 12:46:59 +0000 |
|---|---|---|
| committer | tb <> | 2024-01-13 12:46:59 +0000 |
| commit | 45322465d9f9a94e93086cbda16289d99c712c56 (patch) | |
| tree | 8efc5eac62bd1c130cab8c89d74ceccd1b1bf1e8 /src | |
| parent | 24cedf0f15ad1593149319e538270eb81d6b0b6c (diff) | |
| download | openbsd-45322465d9f9a94e93086cbda16289d99c712c56.tar.gz openbsd-45322465d9f9a94e93086cbda16289d99c712c56.tar.bz2 openbsd-45322465d9f9a94e93086cbda16289d99c712c56.zip | |
Prepare to remove the EVP_PKEY_meth_* API
After removing the last caller of EVP_PKEY_meth_find() from libssl, none
of these is used. And with EVP_PKEY_meth_new() gone, there will no longer
be a way to get your hands onto an EVP_PKEY_METHOD that is writable, so
none of the silent failures (because they're void functions) should matter
in the few weeks until we bump.
ok jsing
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/evp/pmeth_lib.c | 139 |
1 files changed, 50 insertions, 89 deletions
diff --git a/src/lib/libcrypto/evp/pmeth_lib.c b/src/lib/libcrypto/evp/pmeth_lib.c index 604181d311..67ab72eff3 100644 --- a/src/lib/libcrypto/evp/pmeth_lib.c +++ b/src/lib/libcrypto/evp/pmeth_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pmeth_lib.c,v 1.36 2024/01/04 20:15:01 tb Exp $ */ | 1 | /* $OpenBSD: pmeth_lib.c,v 1.37 2024/01/13 12:46:59 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 | */ |
| @@ -101,14 +101,14 @@ static const EVP_PKEY_METHOD *pkey_methods[] = { | |||
| 101 | 101 | ||
| 102 | #define N_PKEY_METHODS (sizeof(pkey_methods) / sizeof(pkey_methods[0])) | 102 | #define N_PKEY_METHODS (sizeof(pkey_methods) / sizeof(pkey_methods[0])) |
| 103 | 103 | ||
| 104 | const EVP_PKEY_METHOD * | 104 | static const EVP_PKEY_METHOD * |
| 105 | EVP_PKEY_meth_find(int type) | 105 | evp_pkey_method_find(int nid) |
| 106 | { | 106 | { |
| 107 | size_t i; | 107 | size_t i; |
| 108 | 108 | ||
| 109 | for (i = 0; i < N_PKEY_METHODS; i++) { | 109 | for (i = 0; i < N_PKEY_METHODS; i++) { |
| 110 | const EVP_PKEY_METHOD *pmeth = pkey_methods[i]; | 110 | const EVP_PKEY_METHOD *pmeth = pkey_methods[i]; |
| 111 | if (pmeth->pkey_id == type) | 111 | if (pmeth->pkey_id == nid) |
| 112 | return pmeth; | 112 | return pmeth; |
| 113 | } | 113 | } |
| 114 | 114 | ||
| @@ -116,18 +116,18 @@ EVP_PKEY_meth_find(int type) | |||
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | static EVP_PKEY_CTX * | 118 | static EVP_PKEY_CTX * |
| 119 | evp_pkey_ctx_new(EVP_PKEY *pkey, int id) | 119 | evp_pkey_ctx_new(EVP_PKEY *pkey, int nid) |
| 120 | { | 120 | { |
| 121 | EVP_PKEY_CTX *pkey_ctx = NULL; | 121 | EVP_PKEY_CTX *pkey_ctx = NULL; |
| 122 | const EVP_PKEY_METHOD *pmeth; | 122 | const EVP_PKEY_METHOD *pmeth; |
| 123 | 123 | ||
| 124 | if (id == -1) { | 124 | if (nid == -1) { |
| 125 | if (pkey == NULL || pkey->ameth == NULL) | 125 | if (pkey == NULL || pkey->ameth == NULL) |
| 126 | return NULL; | 126 | return NULL; |
| 127 | id = pkey->ameth->pkey_id; | 127 | nid = pkey->ameth->pkey_id; |
| 128 | } | 128 | } |
| 129 | 129 | ||
| 130 | if ((pmeth = EVP_PKEY_meth_find(id)) == NULL) { | 130 | if ((pmeth = evp_pkey_method_find(nid)) == NULL) { |
| 131 | EVPerror(EVP_R_UNSUPPORTED_ALGORITHM); | 131 | EVPerror(EVP_R_UNSUPPORTED_ALGORITHM); |
| 132 | goto err; | 132 | goto err; |
| 133 | } | 133 | } |
| @@ -154,50 +154,6 @@ evp_pkey_ctx_new(EVP_PKEY *pkey, int id) | |||
| 154 | return NULL; | 154 | return NULL; |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | EVP_PKEY_METHOD* | ||
| 158 | EVP_PKEY_meth_new(int id, int flags) | ||
| 159 | { | ||
| 160 | EVP_PKEY_METHOD *pmeth; | ||
| 161 | |||
| 162 | if ((pmeth = calloc(1, sizeof(EVP_PKEY_METHOD))) == NULL) | ||
| 163 | return NULL; | ||
| 164 | |||
| 165 | pmeth->pkey_id = id; | ||
| 166 | pmeth->flags = flags | EVP_PKEY_FLAG_DYNAMIC; | ||
| 167 | |||
| 168 | return pmeth; | ||
| 169 | } | ||
| 170 | |||
| 171 | void | ||
| 172 | EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, const EVP_PKEY_METHOD *meth) | ||
| 173 | { | ||
| 174 | if (ppkey_id) | ||
| 175 | *ppkey_id = meth->pkey_id; | ||
| 176 | if (pflags) | ||
| 177 | *pflags = meth->flags; | ||
| 178 | } | ||
| 179 | |||
| 180 | void | ||
| 181 | EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src) | ||
| 182 | { | ||
| 183 | EVP_PKEY_METHOD preserve; | ||
| 184 | |||
| 185 | preserve.pkey_id = dst->pkey_id; | ||
| 186 | preserve.flags = dst->flags; | ||
| 187 | |||
| 188 | *dst = *src; | ||
| 189 | |||
| 190 | dst->pkey_id = preserve.pkey_id; | ||
| 191 | dst->flags = preserve.flags; | ||
| 192 | } | ||
| 193 | |||
| 194 | void | ||
| 195 | EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth) | ||
| 196 | { | ||
| 197 | if (pmeth && (pmeth->flags & EVP_PKEY_FLAG_DYNAMIC)) | ||
| 198 | free(pmeth); | ||
| 199 | } | ||
| 200 | |||
| 201 | EVP_PKEY_CTX * | 157 | EVP_PKEY_CTX * |
| 202 | EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *engine) | 158 | EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *engine) |
| 203 | { | 159 | { |
| @@ -205,9 +161,9 @@ EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *engine) | |||
| 205 | } | 161 | } |
| 206 | 162 | ||
| 207 | EVP_PKEY_CTX * | 163 | EVP_PKEY_CTX * |
| 208 | EVP_PKEY_CTX_new_id(int id, ENGINE *engine) | 164 | EVP_PKEY_CTX_new_id(int nid, ENGINE *engine) |
| 209 | { | 165 | { |
| 210 | return evp_pkey_ctx_new(NULL, id); | 166 | return evp_pkey_ctx_new(NULL, nid); |
| 211 | } | 167 | } |
| 212 | 168 | ||
| 213 | EVP_PKEY_CTX * | 169 | EVP_PKEY_CTX * |
| @@ -241,13 +197,6 @@ EVP_PKEY_CTX_dup(EVP_PKEY_CTX *pctx) | |||
| 241 | return NULL; | 197 | return NULL; |
| 242 | } | 198 | } |
| 243 | 199 | ||
| 244 | int | ||
| 245 | EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth) | ||
| 246 | { | ||
| 247 | EVPerror(ERR_R_DISABLED); | ||
| 248 | return 0; | ||
| 249 | } | ||
| 250 | |||
| 251 | void | 200 | void |
| 252 | EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx) | 201 | EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx) |
| 253 | { | 202 | { |
| @@ -399,25 +348,62 @@ EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx) | |||
| 399 | return ctx->app_data; | 348 | return ctx->app_data; |
| 400 | } | 349 | } |
| 401 | 350 | ||
| 351 | /* | ||
| 352 | * Remove all the functions below in the next major bump | ||
| 353 | */ | ||
| 354 | |||
| 355 | const EVP_PKEY_METHOD * | ||
| 356 | EVP_PKEY_meth_find(int type) | ||
| 357 | { | ||
| 358 | EVPerror(ERR_R_DISABLED); | ||
| 359 | return NULL; | ||
| 360 | } | ||
| 361 | |||
| 362 | EVP_PKEY_METHOD* | ||
| 363 | EVP_PKEY_meth_new(int id, int flags) | ||
| 364 | { | ||
| 365 | EVPerror(ERR_R_DISABLED); | ||
| 366 | return NULL; | ||
| 367 | } | ||
| 368 | |||
| 369 | void | ||
| 370 | EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, const EVP_PKEY_METHOD *meth) | ||
| 371 | { | ||
| 372 | } | ||
| 373 | |||
| 374 | void | ||
| 375 | EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src) | ||
| 376 | { | ||
| 377 | } | ||
| 378 | |||
| 379 | void | ||
| 380 | EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth) | ||
| 381 | { | ||
| 382 | } | ||
| 383 | |||
| 384 | int | ||
| 385 | EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth) | ||
| 386 | { | ||
| 387 | EVPerror(ERR_R_DISABLED); | ||
| 388 | return 0; | ||
| 389 | } | ||
| 390 | |||
| 402 | void | 391 | void |
| 403 | EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, | 392 | EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, |
| 404 | int (*init)(EVP_PKEY_CTX *ctx)) | 393 | int (*init)(EVP_PKEY_CTX *ctx)) |
| 405 | { | 394 | { |
| 406 | pmeth->init = init; | ||
| 407 | } | 395 | } |
| 408 | 396 | ||
| 409 | void | 397 | void |
| 410 | EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, | 398 | EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, |
| 411 | int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src)) | 399 | int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src)) |
| 412 | { | 400 | { |
| 413 | pmeth->copy = copy; | ||
| 414 | } | 401 | } |
| 415 | 402 | ||
| 416 | void | 403 | void |
| 417 | EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, | 404 | EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, |
| 418 | void (*cleanup)(EVP_PKEY_CTX *ctx)) | 405 | void (*cleanup)(EVP_PKEY_CTX *ctx)) |
| 419 | { | 406 | { |
| 420 | pmeth->cleanup = cleanup; | ||
| 421 | } | 407 | } |
| 422 | 408 | ||
| 423 | void | 409 | void |
| @@ -425,8 +411,6 @@ EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, | |||
| 425 | int (*paramgen_init)(EVP_PKEY_CTX *ctx), | 411 | int (*paramgen_init)(EVP_PKEY_CTX *ctx), |
| 426 | int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)) | 412 | int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)) |
| 427 | { | 413 | { |
| 428 | pmeth->paramgen_init = paramgen_init; | ||
| 429 | pmeth->paramgen = paramgen; | ||
| 430 | } | 414 | } |
| 431 | 415 | ||
| 432 | void | 416 | void |
| @@ -434,8 +418,6 @@ EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, | |||
| 434 | int (*keygen_init)(EVP_PKEY_CTX *ctx), | 418 | int (*keygen_init)(EVP_PKEY_CTX *ctx), |
| 435 | int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)) | 419 | int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)) |
| 436 | { | 420 | { |
| 437 | pmeth->keygen_init = keygen_init; | ||
| 438 | pmeth->keygen = keygen; | ||
| 439 | } | 421 | } |
| 440 | 422 | ||
| 441 | void | 423 | void |
| @@ -444,8 +426,6 @@ EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, | |||
| 444 | int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | 426 | int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, |
| 445 | const unsigned char *tbs, size_t tbslen)) | 427 | const unsigned char *tbs, size_t tbslen)) |
| 446 | { | 428 | { |
| 447 | pmeth->sign_init = sign_init; | ||
| 448 | pmeth->sign = sign; | ||
| 449 | } | 429 | } |
| 450 | 430 | ||
| 451 | void | 431 | void |
| @@ -454,8 +434,6 @@ EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, | |||
| 454 | int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, | 434 | int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, |
| 455 | const unsigned char *tbs, size_t tbslen)) | 435 | const unsigned char *tbs, size_t tbslen)) |
| 456 | { | 436 | { |
| 457 | pmeth->verify_init = verify_init; | ||
| 458 | pmeth->verify = verify; | ||
| 459 | } | 437 | } |
| 460 | 438 | ||
| 461 | void | 439 | void |
| @@ -465,8 +443,6 @@ EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, | |||
| 465 | unsigned char *sig, size_t *siglen, | 443 | unsigned char *sig, size_t *siglen, |
| 466 | const unsigned char *tbs, size_t tbslen)) | 444 | const unsigned char *tbs, size_t tbslen)) |
| 467 | { | 445 | { |
| 468 | pmeth->verify_recover_init = verify_recover_init; | ||
| 469 | pmeth->verify_recover = verify_recover; | ||
| 470 | } | 446 | } |
| 471 | 447 | ||
| 472 | void | 448 | void |
| @@ -475,8 +451,6 @@ EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, | |||
| 475 | int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | 451 | int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, |
| 476 | EVP_MD_CTX *mctx)) | 452 | EVP_MD_CTX *mctx)) |
| 477 | { | 453 | { |
| 478 | pmeth->signctx_init = signctx_init; | ||
| 479 | pmeth->signctx = signctx; | ||
| 480 | } | 454 | } |
| 481 | 455 | ||
| 482 | void | 456 | void |
| @@ -485,8 +459,6 @@ EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, | |||
| 485 | int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, | 459 | int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, |
| 486 | EVP_MD_CTX *mctx)) | 460 | EVP_MD_CTX *mctx)) |
| 487 | { | 461 | { |
| 488 | pmeth->verifyctx_init = verifyctx_init; | ||
| 489 | pmeth->verifyctx = verifyctx; | ||
| 490 | } | 462 | } |
| 491 | 463 | ||
| 492 | void | 464 | void |
| @@ -495,8 +467,6 @@ EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, | |||
| 495 | int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, | 467 | int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, |
| 496 | const unsigned char *in, size_t inlen)) | 468 | const unsigned char *in, size_t inlen)) |
| 497 | { | 469 | { |
| 498 | pmeth->encrypt_init = encrypt_init; | ||
| 499 | pmeth->encrypt = encryptfn; | ||
| 500 | } | 470 | } |
| 501 | 471 | ||
| 502 | void | 472 | void |
| @@ -505,8 +475,6 @@ EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, | |||
| 505 | int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, | 475 | int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, |
| 506 | const unsigned char *in, size_t inlen)) | 476 | const unsigned char *in, size_t inlen)) |
| 507 | { | 477 | { |
| 508 | pmeth->decrypt_init = decrypt_init; | ||
| 509 | pmeth->decrypt = decrypt; | ||
| 510 | } | 478 | } |
| 511 | 479 | ||
| 512 | void | 480 | void |
| @@ -514,8 +482,6 @@ EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, | |||
| 514 | int (*derive_init)(EVP_PKEY_CTX *ctx), | 482 | int (*derive_init)(EVP_PKEY_CTX *ctx), |
| 515 | int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)) | 483 | int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)) |
| 516 | { | 484 | { |
| 517 | pmeth->derive_init = derive_init; | ||
| 518 | pmeth->derive = derive; | ||
| 519 | } | 485 | } |
| 520 | 486 | ||
| 521 | void | 487 | void |
| @@ -523,26 +489,21 @@ EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, | |||
| 523 | int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), | 489 | int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), |
| 524 | int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value)) | 490 | int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value)) |
| 525 | { | 491 | { |
| 526 | pmeth->ctrl = ctrl; | ||
| 527 | pmeth->ctrl_str = ctrl_str; | ||
| 528 | } | 492 | } |
| 529 | 493 | ||
| 530 | void | 494 | void |
| 531 | EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)) | 495 | EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)) |
| 532 | { | 496 | { |
| 533 | pmeth->check = check; | ||
| 534 | } | 497 | } |
| 535 | 498 | ||
| 536 | void | 499 | void |
| 537 | EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, | 500 | EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, |
| 538 | int (*public_check)(EVP_PKEY *pkey)) | 501 | int (*public_check)(EVP_PKEY *pkey)) |
| 539 | { | 502 | { |
| 540 | pmeth->public_check = public_check; | ||
| 541 | } | 503 | } |
| 542 | 504 | ||
| 543 | void | 505 | void |
| 544 | EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, | 506 | EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, |
| 545 | int (*param_check)(EVP_PKEY *pkey)) | 507 | int (*param_check)(EVP_PKEY *pkey)) |
| 546 | { | 508 | { |
| 547 | pmeth->param_check = param_check; | ||
| 548 | } | 509 | } |
