summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_ciph.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_ciph.c')
-rw-r--r--src/lib/libssl/ssl_ciph.c107
1 files changed, 6 insertions, 101 deletions
diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c
index cea4d3e6f4..76a3840520 100644
--- a/src/lib/libssl/ssl_ciph.c
+++ b/src/lib/libssl/ssl_ciph.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_ciph.c,v 1.138 2024/01/04 20:02:10 tb Exp $ */ 1/* $OpenBSD: ssl_ciph.c,v 1.139 2024/02/03 15:58:33 beck 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 *
@@ -212,10 +212,6 @@ static const SSL_CIPHER cipher_aliases[] = {
212 .name = SSL_TXT_ECDH, 212 .name = SSL_TXT_ECDH,
213 .algorithm_mkey = SSL_kECDHE, 213 .algorithm_mkey = SSL_kECDHE,
214 }, 214 },
215 {
216 .name = SSL_TXT_kGOST,
217 .algorithm_mkey = SSL_kGOST,
218 },
219 215
220 /* server authentication aliases */ 216 /* server authentication aliases */
221 { 217 {
@@ -242,14 +238,6 @@ static const SSL_CIPHER cipher_aliases[] = {
242 .name = SSL_TXT_ECDSA, 238 .name = SSL_TXT_ECDSA,
243 .algorithm_auth = SSL_aECDSA, 239 .algorithm_auth = SSL_aECDSA,
244 }, 240 },
245 {
246 .name = SSL_TXT_aGOST01,
247 .algorithm_auth = SSL_aGOST01,
248 },
249 {
250 .name = SSL_TXT_aGOST,
251 .algorithm_auth = SSL_aGOST01,
252 },
253 241
254 /* aliases combining key exchange and server authentication */ 242 /* aliases combining key exchange and server authentication */
255 { 243 {
@@ -356,14 +344,6 @@ static const SSL_CIPHER cipher_aliases[] = {
356 .algorithm_mac = SSL_SHA1, 344 .algorithm_mac = SSL_SHA1,
357 }, 345 },
358 { 346 {
359 .name = SSL_TXT_GOST94,
360 .algorithm_mac = SSL_GOST94,
361 },
362 {
363 .name = SSL_TXT_GOST89MAC,
364 .algorithm_mac = SSL_GOST89MAC,
365 },
366 {
367 .name = SSL_TXT_SHA256, 347 .name = SSL_TXT_SHA256,
368 .algorithm_mac = SSL_SHA256, 348 .algorithm_mac = SSL_SHA256,
369 }, 349 },
@@ -371,10 +351,6 @@ static const SSL_CIPHER cipher_aliases[] = {
371 .name = SSL_TXT_SHA384, 351 .name = SSL_TXT_SHA384,
372 .algorithm_mac = SSL_SHA384, 352 .algorithm_mac = SSL_SHA384,
373 }, 353 },
374 {
375 .name = SSL_TXT_STREEBOG256,
376 .algorithm_mac = SSL_STREEBOG256,
377 },
378 354
379 /* protocol version aliases */ 355 /* protocol version aliases */
380 { 356 {
@@ -472,11 +448,6 @@ ssl_cipher_get_evp(const SSL_SESSION *ss, const EVP_CIPHER **enc,
472 case SSL_CAMELLIA256: 448 case SSL_CAMELLIA256:
473 *enc = EVP_camellia_256_cbc(); 449 *enc = EVP_camellia_256_cbc();
474 break; 450 break;
475#ifndef OPENSSL_NO_GOST
476 case SSL_eGOST2814789CNT:
477 *enc = EVP_gost2814789_cnt();
478 break;
479#endif
480 } 451 }
481 452
482 switch (ss->cipher->algorithm_mac) { 453 switch (ss->cipher->algorithm_mac) {
@@ -492,21 +463,11 @@ ssl_cipher_get_evp(const SSL_SESSION *ss, const EVP_CIPHER **enc,
492 case SSL_SHA384: 463 case SSL_SHA384:
493 *md = EVP_sha384(); 464 *md = EVP_sha384();
494 break; 465 break;
495#ifndef OPENSSL_NO_GOST
496 case SSL_GOST89MAC:
497 *md = EVP_gost2814789imit();
498 break;
499 case SSL_GOST94:
500 *md = EVP_gostr341194();
501 break;
502 case SSL_STREEBOG256:
503 *md = EVP_streebog256();
504 break;
505#endif
506 } 466 }
507 if (*enc == NULL || *md == NULL) 467 if (*enc == NULL || *md == NULL)
508 return 0; 468 return 0;
509 469
470 /* XXX remove these from ssl_cipher_get_evp? */
510 /* 471 /*
511 * EVP_CIPH_FLAG_AEAD_CIPHER and EVP_CIPH_GCM_MODE ciphers are not 472 * EVP_CIPH_FLAG_AEAD_CIPHER and EVP_CIPH_GCM_MODE ciphers are not
512 * supported via EVP_CIPHER (they should be using EVP_AEAD instead). 473 * supported via EVP_CIPHER (they should be using EVP_AEAD instead).
@@ -515,18 +476,9 @@ ssl_cipher_get_evp(const SSL_SESSION *ss, const EVP_CIPHER **enc,
515 return 0; 476 return 0;
516 if (EVP_CIPHER_mode(*enc) == EVP_CIPH_GCM_MODE) 477 if (EVP_CIPHER_mode(*enc) == EVP_CIPH_GCM_MODE)
517 return 0; 478 return 0;
518#ifndef OPENSSL_NO_GOST 479
519 /* XXX JFC. die in fire already */ 480 *mac_pkey_type = EVP_PKEY_HMAC;
520 if (ss->cipher->algorithm_mac == SSL_GOST89MAC) { 481 *mac_secret_size = EVP_MD_size(*md);
521 *mac_pkey_type = EVP_PKEY_GOSTIMIT;
522 *mac_secret_size = 32; /* XXX */
523 } else {
524#endif
525 *mac_pkey_type = EVP_PKEY_HMAC;
526 *mac_secret_size = EVP_MD_size(*md);
527#ifndef OPENSSL_NO_GOST
528 }
529#endif
530 return 1; 482 return 1;
531} 483}
532 484
@@ -581,14 +533,6 @@ ssl_get_handshake_evp_md(SSL *s, const EVP_MD **md)
581 case SSL_HANDSHAKE_MAC_DEFAULT: 533 case SSL_HANDSHAKE_MAC_DEFAULT:
582 *md = EVP_md5_sha1(); 534 *md = EVP_md5_sha1();
583 return 1; 535 return 1;
584#ifndef OPENSSL_NO_GOST
585 case SSL_HANDSHAKE_MAC_GOST94:
586 *md = EVP_gostr341194();
587 return 1;
588 case SSL_HANDSHAKE_MAC_STREEBOG256:
589 *md = EVP_streebog256();
590 return 1;
591#endif
592 case SSL_HANDSHAKE_MAC_SHA256: 536 case SSL_HANDSHAKE_MAC_SHA256:
593 *md = EVP_sha256(); 537 *md = EVP_sha256();
594 return 1; 538 return 1;
@@ -641,6 +585,7 @@ ll_append_head(CIPHER_ORDER **head, CIPHER_ORDER *curr,
641 *head = curr; 585 *head = curr;
642} 586}
643 587
588/* XXX beck: remove this in a followon to removing GOST */
644static void 589static void
645ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, 590ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth,
646 unsigned long *enc, unsigned long *mac, unsigned long *ssl) 591 unsigned long *enc, unsigned long *mac, unsigned long *ssl)
@@ -651,16 +596,6 @@ ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth,
651 *mac = 0; 596 *mac = 0;
652 *ssl = 0; 597 *ssl = 0;
653 598
654 /*
655 * Check for the availability of GOST 34.10 public/private key
656 * algorithms. If they are not available disable the associated
657 * authentication and key exchange algorithms.
658 */
659#if defined(OPENSSL_NO_GOST) || !defined(EVP_PKEY_GOSTR01)
660 *auth |= SSL_aGOST01;
661 *mkey |= SSL_kGOST;
662#endif
663
664#ifdef SSL_FORBID_ENULL 599#ifdef SSL_FORBID_ENULL
665 *enc |= SSL_eNULL; 600 *enc |= SSL_eNULL;
666#endif 601#endif
@@ -1455,9 +1390,6 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
1455 case SSL_kECDHE: 1390 case SSL_kECDHE:
1456 kx = "ECDH"; 1391 kx = "ECDH";
1457 break; 1392 break;
1458 case SSL_kGOST:
1459 kx = "GOST";
1460 break;
1461 case SSL_kTLS1_3: 1393 case SSL_kTLS1_3:
1462 kx = "TLSv1.3"; 1394 kx = "TLSv1.3";
1463 break; 1395 break;
@@ -1478,9 +1410,6 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
1478 case SSL_aECDSA: 1410 case SSL_aECDSA:
1479 au = "ECDSA"; 1411 au = "ECDSA";
1480 break; 1412 break;
1481 case SSL_aGOST01:
1482 au = "GOST01";
1483 break;
1484 case SSL_aTLS1_3: 1413 case SSL_aTLS1_3:
1485 au = "TLSv1.3"; 1414 au = "TLSv1.3";
1486 break; 1415 break;
@@ -1520,9 +1449,6 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
1520 case SSL_CHACHA20POLY1305: 1449 case SSL_CHACHA20POLY1305:
1521 enc = "ChaCha20-Poly1305"; 1450 enc = "ChaCha20-Poly1305";
1522 break; 1451 break;
1523 case SSL_eGOST2814789CNT:
1524 enc = "GOST-28178-89-CNT";
1525 break;
1526 default: 1452 default:
1527 enc = "unknown"; 1453 enc = "unknown";
1528 break; 1454 break;
@@ -1544,15 +1470,6 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
1544 case SSL_AEAD: 1470 case SSL_AEAD:
1545 mac = "AEAD"; 1471 mac = "AEAD";
1546 break; 1472 break;
1547 case SSL_GOST94:
1548 mac = "GOST94";
1549 break;
1550 case SSL_GOST89MAC:
1551 mac = "GOST89IMIT";
1552 break;
1553 case SSL_STREEBOG256:
1554 mac = "STREEBOG256";
1555 break;
1556 default: 1473 default:
1557 mac = "unknown"; 1474 mac = "unknown";
1558 break; 1475 break;
@@ -1666,8 +1583,6 @@ SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c)
1666 return NID_des_cbc; 1583 return NID_des_cbc;
1667 case SSL_RC4: 1584 case SSL_RC4:
1668 return NID_rc4; 1585 return NID_rc4;
1669 case SSL_eGOST2814789CNT:
1670 return NID_gost89_cnt;
1671 default: 1586 default:
1672 return NID_undef; 1587 return NID_undef;
1673 } 1588 }
@@ -1680,10 +1595,6 @@ SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c)
1680 switch (c->algorithm_mac) { 1595 switch (c->algorithm_mac) {
1681 case SSL_AEAD: 1596 case SSL_AEAD:
1682 return NID_undef; 1597 return NID_undef;
1683 case SSL_GOST89MAC:
1684 return NID_id_Gost28147_89_MAC;
1685 case SSL_GOST94:
1686 return NID_id_GostR3411_94;
1687 case SSL_MD5: 1598 case SSL_MD5:
1688 return NID_md5; 1599 return NID_md5;
1689 case SSL_SHA1: 1600 case SSL_SHA1:
@@ -1692,8 +1603,6 @@ SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c)
1692 return NID_sha256; 1603 return NID_sha256;
1693 case SSL_SHA384: 1604 case SSL_SHA384:
1694 return NID_sha384; 1605 return NID_sha384;
1695 case SSL_STREEBOG256:
1696 return NID_id_tc26_gost3411_2012_256;
1697 default: 1606 default:
1698 return NID_undef; 1607 return NID_undef;
1699 } 1608 }
@@ -1708,8 +1617,6 @@ SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c)
1708 return NID_kx_dhe; 1617 return NID_kx_dhe;
1709 case SSL_kECDHE: 1618 case SSL_kECDHE:
1710 return NID_kx_ecdhe; 1619 return NID_kx_ecdhe;
1711 case SSL_kGOST:
1712 return NID_kx_gost;
1713 case SSL_kRSA: 1620 case SSL_kRSA:
1714 return NID_kx_rsa; 1621 return NID_kx_rsa;
1715 default: 1622 default:
@@ -1726,8 +1633,6 @@ SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c)
1726 return NID_auth_null; 1633 return NID_auth_null;
1727 case SSL_aECDSA: 1634 case SSL_aECDSA:
1728 return NID_auth_ecdsa; 1635 return NID_auth_ecdsa;
1729 case SSL_aGOST01:
1730 return NID_auth_gost01;
1731 case SSL_aRSA: 1636 case SSL_aRSA:
1732 return NID_auth_rsa; 1637 return NID_auth_rsa;
1733 default: 1638 default: