summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_clnt.c4
-rw-r--r--src/lib/libssl/ssl_locl.h8
-rw-r--r--src/lib/libssl/ssl_srvr.c5
-rw-r--r--src/lib/libssl/t1_lib.c50
4 files changed, 28 insertions, 39 deletions
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c
index fd78a8e8a5..b026aaaee2 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.31 2018/08/17 16:28:21 jsing Exp $ */ 1/* $OpenBSD: ssl_clnt.c,v 1.32 2018/08/19 15:38:03 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 *
@@ -2416,7 +2416,7 @@ ssl3_send_client_verify(SSL *s)
2416 &hdata); 2416 &hdata);
2417 md = s->cert->key->digest; 2417 md = s->cert->key->digest;
2418 if (hdatalen <= 0 || 2418 if (hdatalen <= 0 ||
2419 !tls12_get_sigandhash_cbb(&cert_verify, pkey, md)) { 2419 !tls12_get_hashandsig(&cert_verify, pkey, md)) {
2420 SSLerror(s, ERR_R_INTERNAL_ERROR); 2420 SSLerror(s, ERR_R_INTERNAL_ERROR);
2421 goto err; 2421 goto err;
2422 } 2422 }
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index da4bde09f3..8e85f100aa 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.206 2018/08/16 17:49:48 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.207 2018/08/19 15:38:03 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 *
@@ -1282,11 +1282,9 @@ int ssl_check_serverhello_tlsext(SSL *s);
1282#define tlsext_tick_md EVP_sha256 1282#define tlsext_tick_md EVP_sha256
1283int tls1_process_ticket(SSL *s, const unsigned char *session_id, int len, 1283int tls1_process_ticket(SSL *s, const unsigned char *session_id, int len,
1284 const unsigned char *limit, SSL_SESSION **ret); 1284 const unsigned char *limit, SSL_SESSION **ret);
1285int tls12_get_sigandhash_cbb(CBB *cbb, const EVP_PKEY *pk, 1285int tls12_get_hashid(const EVP_MD *md);
1286 const EVP_MD *md);
1287int tls12_get_sigandhash(unsigned char *p, const EVP_PKEY *pk,
1288 const EVP_MD *md);
1289int tls12_get_sigid(const EVP_PKEY *pk); 1286int tls12_get_sigid(const EVP_PKEY *pk);
1287int tls12_get_hashandsig(CBB *cbb, const EVP_PKEY *pk, const EVP_MD *md);
1290const EVP_MD *tls12_get_hash(unsigned char hash_alg); 1288const EVP_MD *tls12_get_hash(unsigned char hash_alg);
1291 1289
1292void ssl_clear_hash_ctx(EVP_MD_CTX **hash); 1290void ssl_clear_hash_ctx(EVP_MD_CTX **hash);
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c
index 80c7208c13..01fe647500 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.40 2018/08/19 15:29:26 jsing Exp $ */ 1/* $OpenBSD: ssl_srvr.c,v 1.41 2018/08/19 15:38:03 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 *
@@ -1565,8 +1565,7 @@ ssl3_send_server_key_exchange(SSL *s)
1565 1565
1566 /* Send signature algorithm. */ 1566 /* Send signature algorithm. */
1567 if (SSL_USE_SIGALGS(s)) { 1567 if (SSL_USE_SIGALGS(s)) {
1568 if (!tls12_get_sigandhash_cbb(&server_kex, pkey, 1568 if (!tls12_get_hashandsig(&server_kex, pkey, md)) {
1569 md)) {
1570 /* Should never happen */ 1569 /* Should never happen */
1571 al = SSL_AD_INTERNAL_ERROR; 1570 al = SSL_AD_INTERNAL_ERROR;
1572 SSLerror(s, ERR_R_INTERNAL_ERROR); 1571 SSLerror(s, ERR_R_INTERNAL_ERROR);
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
index 7f166942f7..1b2e0844fb 100644
--- a/src/lib/libssl/t1_lib.c
+++ b/src/lib/libssl/t1_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: t1_lib.c,v 1.142 2018/08/16 17:49:48 jsing Exp $ */ 1/* $OpenBSD: t1_lib.c,v 1.143 2018/08/19 15:38:03 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 *
@@ -1116,51 +1116,43 @@ tls12_find_id(int nid, tls12_lookup *table, size_t tlen)
1116} 1116}
1117 1117
1118int 1118int
1119tls12_get_sigandhash_cbb(CBB *cbb, const EVP_PKEY *pk, const EVP_MD *md) 1119tls12_get_hashid(const EVP_MD *md)
1120{ 1120{
1121 unsigned char p[2]; 1121 if (md == NULL)
1122 return -1;
1122 1123
1123 if (!tls12_get_sigandhash(p, pk, md)) 1124 return tls12_find_id(EVP_MD_type(md), tls12_md,
1124 return 0; 1125 sizeof(tls12_md) / sizeof(tls12_lookup));
1126}
1125 1127
1126 if (!CBB_add_u8(cbb, p[0])) 1128int
1127 return 0; 1129tls12_get_sigid(const EVP_PKEY *pk)
1128 if (!CBB_add_u8(cbb, p[1])) 1130{
1129 return 0; 1131 if (pk == NULL)
1132 return -1;
1130 1133
1131 return 1; 1134 return tls12_find_id(pk->type, tls12_sig,
1135 sizeof(tls12_sig) / sizeof(tls12_lookup));
1132} 1136}
1133 1137
1134int 1138int
1135tls12_get_sigandhash(unsigned char *p, const EVP_PKEY *pk, const EVP_MD *md) 1139tls12_get_hashandsig(CBB *cbb, const EVP_PKEY *pk, const EVP_MD *md)
1136{ 1140{
1137 int sig_id, md_id; 1141 int hash_id, sig_id;
1138 1142
1139 if (md == NULL) 1143 if ((hash_id = tls12_get_hashid(md)) == -1)
1140 return 0; 1144 return 0;
1141 1145 if ((sig_id = tls12_get_sigid(pk)) == -1)
1142 md_id = tls12_find_id(EVP_MD_type(md), tls12_md,
1143 sizeof(tls12_md) / sizeof(tls12_lookup));
1144 if (md_id == -1)
1145 return 0; 1146 return 0;
1146 1147
1147 sig_id = tls12_get_sigid(pk); 1148 if (!CBB_add_u8(cbb, hash_id))
1148 if (sig_id == -1) 1149 return 0;
1150 if (!CBB_add_u8(cbb, sig_id))
1149 return 0; 1151 return 0;
1150
1151 p[0] = (unsigned char)md_id;
1152 p[1] = (unsigned char)sig_id;
1153 1152
1154 return 1; 1153 return 1;
1155} 1154}
1156 1155
1157int
1158tls12_get_sigid(const EVP_PKEY *pk)
1159{
1160 return tls12_find_id(pk->type, tls12_sig,
1161 sizeof(tls12_sig) / sizeof(tls12_lookup));
1162}
1163
1164const EVP_MD * 1156const EVP_MD *
1165tls12_get_hash(unsigned char hash_alg) 1157tls12_get_hash(unsigned char hash_alg)
1166{ 1158{