summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbeck <>2019-01-17 06:44:10 +0000
committerbeck <>2019-01-17 06:44:10 +0000
commit82b2a8d8237a63124493a39742b98ea95d36d13a (patch)
tree37de354539cdef451295542c472339bcea72b210 /src
parent338694cf0d2ff38a00bab7103081ffa3db2cbeca (diff)
downloadopenbsd-82b2a8d8237a63124493a39742b98ea95d36d13a.tar.gz
openbsd-82b2a8d8237a63124493a39742b98ea95d36d13a.tar.bz2
openbsd-82b2a8d8237a63124493a39742b98ea95d36d13a.zip
Get rid of is_serverhello in preparation for other messages
ok jsing@ tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/tls13_tlsext.c37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/lib/libssl/tls13_tlsext.c b/src/lib/libssl/tls13_tlsext.c
index 394933674d..a06cc0869e 100644
--- a/src/lib/libssl/tls13_tlsext.c
+++ b/src/lib/libssl/tls13_tlsext.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_tlsext.c,v 1.2 2019/01/17 02:55:48 beck Exp $ */ 1/* $OpenBSD: tls13_tlsext.c,v 1.3 2019/01/17 06:44:10 beck Exp $ */
2/* 2/*
3 * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> 4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org>
@@ -1360,16 +1360,26 @@ tls_extension_find(uint16_t type, size_t *tls_extensions_idx)
1360} 1360}
1361 1361
1362static struct tls_extension_funcs * 1362static struct tls_extension_funcs *
1363tls13_tlsext_funcs(struct tls_extension *tlsext, int is_serverhello) 1363tls13_tlsext_funcs(struct tls_extension *tlsext, uint16_t msg)
1364{ 1364{
1365 if (is_serverhello) 1365 switch (msg) {
1366 case TLS13_TLSEXT_MSG_CH:
1367 return &tlsext->clienthello;
1368 case TLS13_TLSEXT_MSG_SH:
1366 return &tlsext->serverhello; 1369 return &tlsext->serverhello;
1367 1370 case TLS13_TLSEXT_MSG_EE:
1368 return &tlsext->clienthello; 1371 case TLS13_TLSEXT_MSG_CT:
1372 case TLS13_TLSEXT_MSG_CR:
1373 case TLS13_TLSEXT_MSG_NST:
1374 case TLS13_TLSEXT_MSG_HRR:
1375 default:
1376 break;
1377 }
1378 return NULL;
1369} 1379}
1370 1380
1371static int 1381static int
1372tls13_tlsext_build(SSL *s, CBB *cbb, int is_serverhello) 1382tls13_tlsext_build(SSL *s, CBB *cbb, uint16_t msg)
1373{ 1383{
1374 struct tls_extension_funcs *ext; 1384 struct tls_extension_funcs *ext;
1375 struct tls_extension *tlsext; 1385 struct tls_extension *tlsext;
@@ -1382,7 +1392,7 @@ tls13_tlsext_build(SSL *s, CBB *cbb, int is_serverhello)
1382 1392
1383 for (i = 0; i < N_TLS_EXTENSIONS; i++) { 1393 for (i = 0; i < N_TLS_EXTENSIONS; i++) {
1384 tlsext = &tls_extensions[i]; 1394 tlsext = &tls_extensions[i];
1385 ext = tls13_tlsext_funcs(tlsext, is_serverhello); 1395 ext = tls13_tlsext_funcs(tlsext, msg);
1386 1396
1387 if (!ext->needs(s)) 1397 if (!ext->needs(s))
1388 continue; 1398 continue;
@@ -1408,7 +1418,7 @@ tls13_tlsext_build(SSL *s, CBB *cbb, int is_serverhello)
1408} 1418}
1409 1419
1410static int 1420static int
1411tls13_tlsext_parse(SSL *s, CBS *cbs, int *alert, int is_serverhello, uint16_t msg) 1421tls13_tlsext_parse(SSL *s, CBS *cbs, int *alert, uint16_t msg)
1412{ 1422{
1413 struct tls_extension_funcs *ext; 1423 struct tls_extension_funcs *ext;
1414 struct tls_extension *tlsext; 1424 struct tls_extension *tlsext;
@@ -1433,8 +1443,9 @@ tls13_tlsext_parse(SSL *s, CBS *cbs, int *alert, int is_serverhello, uint16_t ms
1433 return 0; 1443 return 0;
1434 1444
1435 if (s->internal->tlsext_debug_cb != NULL) 1445 if (s->internal->tlsext_debug_cb != NULL)
1436 s->internal->tlsext_debug_cb(s, is_serverhello, type, 1446 s->internal->tlsext_debug_cb(s,
1437 (unsigned char *)CBS_data(&extension_data), 1447 msg == TLS13_TLSEXT_MSG_SH, /* XXX */
1448 type, (unsigned char *)CBS_data(&extension_data),
1438 CBS_len(&extension_data), 1449 CBS_len(&extension_data),
1439 s->internal->tlsext_debug_arg); 1450 s->internal->tlsext_debug_arg);
1440 1451
@@ -1453,7 +1464,7 @@ tls13_tlsext_parse(SSL *s, CBS *cbs, int *alert, int is_serverhello, uint16_t ms
1453 return 0; 1464 return 0;
1454 extensions_seen |= (1 << idx); 1465 extensions_seen |= (1 << idx);
1455 1466
1456 ext = tls13_tlsext_funcs(tlsext, is_serverhello); 1467 ext = tls13_tlsext_funcs(tlsext, msg);
1457 if (!ext->parse(s, &extension_data, alert)) 1468 if (!ext->parse(s, &extension_data, alert))
1458 return 0; 1469 return 0;
1459 1470
@@ -1487,7 +1498,7 @@ tls13_tlsext_clienthello_parse(SSL *s, CBS *cbs, int *alert, uint16_t msg)
1487 /* XXX - this possibly should be done by the caller... */ 1498 /* XXX - this possibly should be done by the caller... */
1488 tls13_tlsext_clienthello_reset_state(s); 1499 tls13_tlsext_clienthello_reset_state(s);
1489 1500
1490 return tls13_tlsext_parse(s, cbs, alert, 0, msg); 1501 return tls13_tlsext_parse(s, cbs, alert, msg);
1491} 1502}
1492 1503
1493static void 1504static void
@@ -1510,5 +1521,5 @@ tls13_tlsext_serverhello_parse(SSL *s, CBS *cbs, int *alert, uint16_t msg)
1510 /* XXX - this possibly should be done by the caller... */ 1521 /* XXX - this possibly should be done by the caller... */
1511 tls13_tlsext_serverhello_reset_state(s); 1522 tls13_tlsext_serverhello_reset_state(s);
1512 1523
1513 return tls13_tlsext_parse(s, cbs, alert, 1, msg); 1524 return tls13_tlsext_parse(s, cbs, alert, msg);
1514} 1525}