C++20 port 15/15: remove the stream ciphers (#3079)

* Remove the stream ciphers

The unauthenticated stream ciphers (aes-*-cfb, aes-*-ctr, camellia-*-cfb,
chacha20, chacha20-ietf, salsa20) are gone from every build, together
with the SS_ENABLE_LEGACY option, the C++ stream codecs, their C test
oracle and the stream-only tests and configurations. A configuration
naming one of them, or RC4/table, now fails at startup with a message
pointing to an AEAD method, and test_cli checks that.

Shell completions list only the supported methods (and now include the
2022 ones), and the docs and the compatibility contract say the stream
ciphers were removed.

* Drop the Mbed TLS CFB requirement and stale stream-cipher examples

CFB was only needed by the removed stream ciphers, so a system Mbed TLS
built without it no longer fails to configure. The public header example
now uses aes-256-gcm.
This commit is contained in:
Max Lv
2026-10-15 10:15:53 +08:00
committed by GitHub
parent 002b4093fd
commit f1f31c3c05
47 changed files with 71 additions and 1786 deletions
+9 -1
View File
@@ -58,7 +58,7 @@ class CliTests(unittest.TestCase):
self.assertEqual('--printable-salt' in help_result.stdout, name == 'local')
if name != 'local':
self.assertEqual(self.run_cli(name, '--printable-salt').returncode, 2)
for method in ('aes-128-gcm', 'aes-256-cfb', '2022-blake3-aes-256-gcm',
for method in ('aes-128-gcm', 'aes-192-gcm', '2022-blake3-aes-256-gcm',
'2022-blake3-chacha20-poly1305'):
with self.subTest(method=method):
result = self.run_cli('local', '-s', '127.0.0.1', '-p', '8388',
@@ -88,6 +88,14 @@ class CliTests(unittest.TestCase):
self.assertNotEqual(result.returncode, 0)
self.assertIn("option 'printable_salt' must be a boolean", result.stderr)
def test_removed_stream_ciphers_are_rejected(self):
for method in ('aes-256-cfb', 'chacha20-ietf', 'rc4-md5'):
with self.subTest(method=method):
result = self.run_cli('server', '-s', '127.0.0.1', '-p', '1', '-k', 'test-password',
'-m', method)
self.assertNotEqual(result.returncode, 0)
self.assertIn('no longer supported', result.stderr)
def test_long_aliases_accept_their_arguments(self):
for name in self.binaries:
args = ['--config', 'not-loaded-before-help.json', '--cipher', 'aes-128-gcm',