diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_ciph.c | 107 |
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 */ | ||
| 644 | static void | 589 | static void |
| 645 | ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, | 590 | ssl_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: |
