diff options
| author | jsing <> | 2021-06-27 19:16:59 +0000 |
|---|---|---|
| committer | jsing <> | 2021-06-27 19:16:59 +0000 |
| commit | fe2e9ea28e886fa3dae7e2d6035a86fae494be20 (patch) | |
| tree | 824ba9a04d617f76b5150c7a989186b84311ebc7 /src | |
| parent | b109677d03c0eb1062f19ab300b485b90c0c2ad7 (diff) | |
| download | openbsd-fe2e9ea28e886fa3dae7e2d6035a86fae494be20.tar.gz openbsd-fe2e9ea28e886fa3dae7e2d6035a86fae494be20.tar.bz2 openbsd-fe2e9ea28e886fa3dae7e2d6035a86fae494be20.zip | |
Have ssl3_send_client_verify() pass *pkey to called functions.
ssl3_send_client_verify() already has a pointer to the EVP_PKEY for the
certificate - pass this as an argument to the functions that it calls,
rather than duplicating code/variable declarations.
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_clnt.c | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c index fac30b26aa..261bf426cc 100644 --- a/src/lib/libssl/ssl_clnt.c +++ b/src/lib/libssl/ssl_clnt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_clnt.c,v 1.101 2021/06/27 18:15:35 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_clnt.c,v 1.102 2021/06/27 19:16:59 jsing 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 | * |
| @@ -2338,12 +2338,11 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2338 | } | 2338 | } |
| 2339 | 2339 | ||
| 2340 | static int | 2340 | static int |
| 2341 | ssl3_send_client_verify_sigalgs(SSL *s, CBB *cert_verify) | 2341 | ssl3_send_client_verify_sigalgs(SSL *s, EVP_PKEY *pkey, CBB *cert_verify) |
| 2342 | { | 2342 | { |
| 2343 | const struct ssl_sigalg *sigalg; | 2343 | const struct ssl_sigalg *sigalg; |
| 2344 | CBB cbb_signature; | 2344 | CBB cbb_signature; |
| 2345 | EVP_PKEY_CTX *pctx = NULL; | 2345 | EVP_PKEY_CTX *pctx = NULL; |
| 2346 | EVP_PKEY *pkey; | ||
| 2347 | EVP_MD_CTX mctx; | 2346 | EVP_MD_CTX mctx; |
| 2348 | const EVP_MD *md; | 2347 | const EVP_MD *md; |
| 2349 | const unsigned char *hdata; | 2348 | const unsigned char *hdata; |
| @@ -2353,7 +2352,6 @@ ssl3_send_client_verify_sigalgs(SSL *s, CBB *cert_verify) | |||
| 2353 | 2352 | ||
| 2354 | EVP_MD_CTX_init(&mctx); | 2353 | EVP_MD_CTX_init(&mctx); |
| 2355 | 2354 | ||
| 2356 | pkey = s->cert->key->privatekey; | ||
| 2357 | if ((sigalg = ssl_sigalg_select(s, pkey)) == NULL) { | 2355 | if ((sigalg = ssl_sigalg_select(s, pkey)) == NULL) { |
| 2358 | SSLerror(s, SSL_R_SIGNATURE_ALGORITHMS_ERROR); | 2356 | SSLerror(s, SSL_R_SIGNATURE_ALGORITHMS_ERROR); |
| 2359 | goto err; | 2357 | goto err; |
| @@ -2419,18 +2417,15 @@ ssl3_send_client_verify_sigalgs(SSL *s, CBB *cert_verify) | |||
| 2419 | } | 2417 | } |
| 2420 | 2418 | ||
| 2421 | static int | 2419 | static int |
| 2422 | ssl3_send_client_verify_rsa(SSL *s, CBB *cert_verify) | 2420 | ssl3_send_client_verify_rsa(SSL *s, EVP_PKEY *pkey, CBB *cert_verify) |
| 2423 | { | 2421 | { |
| 2424 | CBB cbb_signature; | 2422 | CBB cbb_signature; |
| 2425 | EVP_PKEY *pkey; | ||
| 2426 | unsigned char data[EVP_MAX_MD_SIZE]; | 2423 | unsigned char data[EVP_MAX_MD_SIZE]; |
| 2427 | unsigned char *signature = NULL; | 2424 | unsigned char *signature = NULL; |
| 2428 | unsigned int signature_len; | 2425 | unsigned int signature_len; |
| 2429 | size_t data_len; | 2426 | size_t data_len; |
| 2430 | int ret = 0; | 2427 | int ret = 0; |
| 2431 | 2428 | ||
| 2432 | pkey = s->cert->key->privatekey; | ||
| 2433 | |||
| 2434 | if (!tls1_transcript_hash_value(s, data, sizeof(data), &data_len)) | 2429 | if (!tls1_transcript_hash_value(s, data, sizeof(data), &data_len)) |
| 2435 | goto err; | 2430 | goto err; |
| 2436 | if ((signature = calloc(1, EVP_PKEY_size(pkey))) == NULL) | 2431 | if ((signature = calloc(1, EVP_PKEY_size(pkey))) == NULL) |
| @@ -2455,17 +2450,14 @@ ssl3_send_client_verify_rsa(SSL *s, CBB *cert_verify) | |||
| 2455 | } | 2450 | } |
| 2456 | 2451 | ||
| 2457 | static int | 2452 | static int |
| 2458 | ssl3_send_client_verify_ec(SSL *s, CBB *cert_verify) | 2453 | ssl3_send_client_verify_ec(SSL *s, EVP_PKEY *pkey, CBB *cert_verify) |
| 2459 | { | 2454 | { |
| 2460 | CBB cbb_signature; | 2455 | CBB cbb_signature; |
| 2461 | EVP_PKEY *pkey; | ||
| 2462 | unsigned char data[EVP_MAX_MD_SIZE]; | 2456 | unsigned char data[EVP_MAX_MD_SIZE]; |
| 2463 | unsigned char *signature = NULL; | 2457 | unsigned char *signature = NULL; |
| 2464 | unsigned int signature_len; | 2458 | unsigned int signature_len; |
| 2465 | int ret = 0; | 2459 | int ret = 0; |
| 2466 | 2460 | ||
| 2467 | pkey = s->cert->key->privatekey; | ||
| 2468 | |||
| 2469 | if (!tls1_transcript_hash_value(s, data, sizeof(data), NULL)) | 2461 | if (!tls1_transcript_hash_value(s, data, sizeof(data), NULL)) |
| 2470 | goto err; | 2462 | goto err; |
| 2471 | if ((signature = calloc(1, EVP_PKEY_size(pkey))) == NULL) | 2463 | if ((signature = calloc(1, EVP_PKEY_size(pkey))) == NULL) |
| @@ -2491,12 +2483,11 @@ ssl3_send_client_verify_ec(SSL *s, CBB *cert_verify) | |||
| 2491 | 2483 | ||
| 2492 | #ifndef OPENSSL_NO_GOST | 2484 | #ifndef OPENSSL_NO_GOST |
| 2493 | static int | 2485 | static int |
| 2494 | ssl3_send_client_verify_gost(SSL *s, CBB *cert_verify) | 2486 | ssl3_send_client_verify_gost(SSL *s, EVP_PKEY *pkey, CBB *cert_verify) |
| 2495 | { | 2487 | { |
| 2496 | CBB cbb_signature; | 2488 | CBB cbb_signature; |
| 2497 | EVP_MD_CTX mctx; | 2489 | EVP_MD_CTX mctx; |
| 2498 | EVP_PKEY_CTX *pctx; | 2490 | EVP_PKEY_CTX *pctx; |
| 2499 | EVP_PKEY *pkey; | ||
| 2500 | const EVP_MD *md; | 2491 | const EVP_MD *md; |
| 2501 | const unsigned char *hdata; | 2492 | const unsigned char *hdata; |
| 2502 | unsigned char *signature = NULL; | 2493 | unsigned char *signature = NULL; |
| @@ -2507,8 +2498,6 @@ ssl3_send_client_verify_gost(SSL *s, CBB *cert_verify) | |||
| 2507 | 2498 | ||
| 2508 | EVP_MD_CTX_init(&mctx); | 2499 | EVP_MD_CTX_init(&mctx); |
| 2509 | 2500 | ||
| 2510 | pkey = s->cert->key->privatekey; | ||
| 2511 | |||
| 2512 | if (!tls1_transcript_data(s, &hdata, &hdata_len)) { | 2501 | if (!tls1_transcript_data(s, &hdata, &hdata_len)) { |
| 2513 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 2502 | SSLerror(s, ERR_R_INTERNAL_ERROR); |
| 2514 | goto err; | 2503 | goto err; |
| @@ -2576,22 +2565,22 @@ ssl3_send_client_verify(SSL *s) | |||
| 2576 | pkey = s->cert->key->privatekey; | 2565 | pkey = s->cert->key->privatekey; |
| 2577 | 2566 | ||
| 2578 | /* | 2567 | /* |
| 2579 | * For TLS v1.2 send signature algorithm and signature | 2568 | * For TLS v1.2 send signature algorithm and signature using |
| 2580 | * using agreed digest and cached handshake records. | 2569 | * agreed digest and cached handshake records. |
| 2581 | */ | 2570 | */ |
| 2582 | if (SSL_USE_SIGALGS(s)) { | 2571 | if (SSL_USE_SIGALGS(s)) { |
| 2583 | if (!ssl3_send_client_verify_sigalgs(s, &cert_verify)) | 2572 | if (!ssl3_send_client_verify_sigalgs(s, pkey, &cert_verify)) |
| 2584 | goto err; | 2573 | goto err; |
| 2585 | } else if (pkey->type == EVP_PKEY_RSA) { | 2574 | } else if (pkey->type == EVP_PKEY_RSA) { |
| 2586 | if (!ssl3_send_client_verify_rsa(s, &cert_verify)) | 2575 | if (!ssl3_send_client_verify_rsa(s, pkey, &cert_verify)) |
| 2587 | goto err; | 2576 | goto err; |
| 2588 | } else if (pkey->type == EVP_PKEY_EC) { | 2577 | } else if (pkey->type == EVP_PKEY_EC) { |
| 2589 | if (!ssl3_send_client_verify_ec(s, &cert_verify)) | 2578 | if (!ssl3_send_client_verify_ec(s, pkey, &cert_verify)) |
| 2590 | goto err; | 2579 | goto err; |
| 2591 | #ifndef OPENSSL_NO_GOST | 2580 | #ifndef OPENSSL_NO_GOST |
| 2592 | } else if (pkey->type == NID_id_GostR3410_94 || | 2581 | } else if (pkey->type == NID_id_GostR3410_94 || |
| 2593 | pkey->type == NID_id_GostR3410_2001) { | 2582 | pkey->type == NID_id_GostR3410_2001) { |
| 2594 | if (!ssl3_send_client_verify_gost(s, &cert_verify)) | 2583 | if (!ssl3_send_client_verify_gost(s, pkey, &cert_verify)) |
| 2595 | goto err; | 2584 | goto err; |
| 2596 | #endif | 2585 | #endif |
| 2597 | } else { | 2586 | } else { |
