diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib/libssl/ssl_cert.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c index 102ad66bbb..b5db579489 100644 --- a/src/lib/libssl/ssl_cert.c +++ b/src/lib/libssl/ssl_cert.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_cert.c,v 1.100 2022/06/29 21:17:22 tb Exp $ */ | 1 | /* $OpenBSD: ssl_cert.c,v 1.101 2022/06/29 21:18:04 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 | * |
@@ -358,25 +358,37 @@ ssl_cert_set1_chain(SSL_CTX *ctx, SSL *ssl, STACK_OF(X509) *chain) | |||
358 | } | 358 | } |
359 | 359 | ||
360 | int | 360 | int |
361 | ssl_cert_add0_chain_cert(SSL_CERT *c, X509 *cert) | 361 | ssl_cert_add0_chain_cert(SSL_CTX *ctx, SSL *ssl, X509 *cert) |
362 | { | 362 | { |
363 | if (c->key == NULL) | 363 | SSL_CERT *ssl_cert; |
364 | SSL_CERT_PKEY *cpk; | ||
365 | int ssl_err; | ||
366 | |||
367 | if ((ssl_cert = ssl_get0_cert(ctx, ssl)) == NULL) | ||
364 | return 0; | 368 | return 0; |
365 | 369 | ||
366 | if (c->key->chain == NULL) { | 370 | if ((cpk = ssl_cert->key) == NULL) |
367 | if ((c->key->chain = sk_X509_new_null()) == NULL) | 371 | return 0; |
372 | |||
373 | if (!ssl_security_cert(ctx, ssl, cert, 0, &ssl_err)) { | ||
374 | SSLerrorx(ssl_err); | ||
375 | return 0; | ||
376 | } | ||
377 | |||
378 | if (cpk->chain == NULL) { | ||
379 | if ((cpk->chain = sk_X509_new_null()) == NULL) | ||
368 | return 0; | 380 | return 0; |
369 | } | 381 | } |
370 | if (!sk_X509_push(c->key->chain, cert)) | 382 | if (!sk_X509_push(cpk->chain, cert)) |
371 | return 0; | 383 | return 0; |
372 | 384 | ||
373 | return 1; | 385 | return 1; |
374 | } | 386 | } |
375 | 387 | ||
376 | int | 388 | int |
377 | ssl_cert_add1_chain_cert(SSL_CERT *c, X509 *cert) | 389 | ssl_cert_add1_chain_cert(SSL_CTX *ctx, SSL *ssl, X509 *cert) |
378 | { | 390 | { |
379 | if (!ssl_cert_add0_chain_cert(c, cert)) | 391 | if (!ssl_cert_add0_chain_cert(ctx, ssl, cert)) |
380 | return 0; | 392 | return 0; |
381 | 393 | ||
382 | X509_up_ref(cert); | 394 | X509_up_ref(cert); |