diff options
author | jsing <> | 2019-03-25 17:21:18 +0000 |
---|---|---|
committer | jsing <> | 2019-03-25 17:21:18 +0000 |
commit | e54e43a6f31368338de68eeea77a87ad2be5b85f (patch) | |
tree | eb5e58a5d9b8198b8475b96156e908c92c86e532 /src/lib/libssl/ssl_srvr.c | |
parent | d6a095cfa3d05c1eea376148faa4717ae6179ef0 (diff) | |
download | openbsd-e54e43a6f31368338de68eeea77a87ad2be5b85f.tar.gz openbsd-e54e43a6f31368338de68eeea77a87ad2be5b85f.tar.bz2 openbsd-e54e43a6f31368338de68eeea77a87ad2be5b85f.zip |
Defer sigalgs selection until the certificate is known.
Previously the signature algorithm was selected when the TLS extension was
parsed (or the client received a certificate request), however the actual
certificate to be used is not known at this stage. This leads to various
problems, including the selection of a signature algorithm that cannot be
used with the certificate key size (as found by jeremy@ via ruby regress).
Instead, store the signature algorithms list and only select a signature
algorithm when we're ready to do signature generation.
Joint work with beck@.
Diffstat (limited to 'src/lib/libssl/ssl_srvr.c')
-rw-r--r-- | src/lib/libssl/ssl_srvr.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index f2aafc3032..745d0228f3 100644 --- a/src/lib/libssl/ssl_srvr.c +++ b/src/lib/libssl/ssl_srvr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_srvr.c,v 1.65 2019/03/25 16:35:48 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.66 2019/03/25 17:21:18 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 | * |
@@ -2177,7 +2177,7 @@ ssl3_get_cert_verify(SSL *s) | |||
2177 | al = SSL_AD_DECODE_ERROR; | 2177 | al = SSL_AD_DECODE_ERROR; |
2178 | goto f_err; | 2178 | goto f_err; |
2179 | } | 2179 | } |
2180 | if (!ssl_sigalg_pkey_ok(sigalg, pkey)) { | 2180 | if (!ssl_sigalg_pkey_ok(sigalg, pkey, 0)) { |
2181 | SSLerror(s, SSL_R_WRONG_SIGNATURE_TYPE); | 2181 | SSLerror(s, SSL_R_WRONG_SIGNATURE_TYPE); |
2182 | al = SSL_AD_DECODE_ERROR; | 2182 | al = SSL_AD_DECODE_ERROR; |
2183 | goto f_err; | 2183 | goto f_err; |