diff options
author | tb <> | 2024-01-13 12:46:59 +0000 |
---|---|---|
committer | tb <> | 2024-01-13 12:46:59 +0000 |
commit | 5a5cc510924fb6e11afacaa0c864bb2a532ff715 (patch) | |
tree | 8efc5eac62bd1c130cab8c89d74ceccd1b1bf1e8 /src | |
parent | ffcbcf224e3b614df8406b4f4316bcb3494828b4 (diff) | |
download | openbsd-5a5cc510924fb6e11afacaa0c864bb2a532ff715.tar.gz openbsd-5a5cc510924fb6e11afacaa0c864bb2a532ff715.tar.bz2 openbsd-5a5cc510924fb6e11afacaa0c864bb2a532ff715.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 | } |