From 4ffa876f2a9b45c4c36d8843edad29ae750a0f12 Mon Sep 17 00:00:00 2001 From: Hubert Kario Date: Thu, 4 Jun 2020 15:21:31 +0200 Subject: [PATCH 1/6] add remove_whitespace function --- tlslite/utils/compat.py | 13 +++++++++++++ unit_tests/test_tlslite_utils_compat.py | 26 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 unit_tests/test_tlslite_utils_compat.py diff --git a/tlslite/utils/compat.py b/tlslite/utils/compat.py index e3fe20639..ff4d35759 100644 --- a/tlslite/utils/compat.py +++ b/tlslite/utils/compat.py @@ -4,6 +4,7 @@ """Miscellaneous functions to mask Python version differences.""" import sys +import re import os import platform import math @@ -75,6 +76,10 @@ def time_stamp(): return time.perf_counter() return time.clock() + def remove_whitespace(text): + """Removes all whitespace from passed in string""" + return re.sub(r"\s+", "", text, flags=re.UNICODE) + else: # Python 2.6 requires strings instead of bytearrays in a couple places, # so we define this function so it does the conversion if needed. @@ -83,9 +88,17 @@ def time_stamp(): if sys.version_info < (2, 7) or sys.version_info < (2, 7, 4) \ or platform.system() == 'Java': def compat26Str(x): return str(x) + + def remove_whitespace(text): + """Removes all whitespace from passed in string""" + return re.sub(r"\s+", "", text) else: def compat26Str(x): return x + def remove_whitespace(text): + """Removes all whitespace from passed in string""" + return re.sub(r"\s+", "", text, flags=re.UNICODE) + def compatAscii2Bytes(val): """Convert ASCII string to bytes.""" return val diff --git a/unit_tests/test_tlslite_utils_compat.py b/unit_tests/test_tlslite_utils_compat.py new file mode 100644 index 000000000..8b3d044f1 --- /dev/null +++ b/unit_tests/test_tlslite_utils_compat.py @@ -0,0 +1,26 @@ +# Copyright (c) 2015, Hubert Kario +# +# See the LICENSE file for legal information regarding use of this file. + +# compatibility with Python 2.6, for that we need unittest2 package, +# which is not available on 3.3 or 3.4 +try: + import unittest2 as unittest +except ImportError: + import unittest + +from tlslite.utils.compat import remove_whitespace + +class TestRemoveWhitespace(unittest.TestCase): + def test_no_remove(self): + text = "somestring" + self.assertEqual(text, remove_whitespace(text)) + + def test_newline(self): + text = """some + thing""" + self.assertEqual("something", remove_whitespace(text)) + + def test_remove_begginning(self): + text = " some thing " + self.assertEqual("something", remove_whitespace(text)) From 97402517147afb3e47cb276b543ee8794a4c9bf7 Mon Sep 17 00:00:00 2001 From: Hubert Kario Date: Thu, 4 Jun 2020 16:25:03 +0200 Subject: [PATCH 2/6] format RFC5054 groups as in the RFC use the same formatting in the code as is used in the RFC make the code cleaner and easier to verify --- tlslite/mathtls.py | 390 +++++++++++++++++---------------------------- 1 file changed, 146 insertions(+), 244 deletions(-) diff --git a/tlslite/mathtls.py b/tlslite/mathtls.py index a947aabce..81cdfea8f 100644 --- a/tlslite/mathtls.py +++ b/tlslite/mathtls.py @@ -15,250 +15,152 @@ from .utils import tlshmac as hmac from .utils.deprecations import deprecated_method -# 1024, 1536, 2048, 3072, 4096, 6144, and 8192 bit groups -# Formatted to match lines in RFC - # RFC 5054, 1, 1024-bit Group -goodGroupParameters = [(2, int("EEAF0AB9ADB38DD69C33F80AFA8FC5E860726187" - "75FF3C0B9EA2314C" - "9C256576D674DF7496EA81D3383B4813D692C6E0" - "E0D5D8E250B98BE4" - "8E495C1D6089DAD15DC7D7B46154D6B6CE8EF4AD" - "69B15D4982559B29" - "7BCF1885C529F566660E57EC68EDBC3C05726CC0" - "2FD4CBF4976EAA9A" - "FD5138FE8376435B9FC61D2FC0EB06E3", 16)), - # RFC 5054, 2, 1536-bit Group - (2, int("9DEF3CAFB939277AB1F12A8617A47BBBDBA51DF4" - "99AC4C80BEEEA961" - "4B19CC4D5F4F5F556E27CBDE51C6A94BE4607A29" - "1558903BA0D0F843" - "80B655BB9A22E8DCDF028A7CEC67F0D08134B1C8" - "B97989149B609E0B" - "E3BAB63D47548381DBC5B1FC764E3F4B53DD9DA1" - "158BFD3E2B9C8CF5" - "6EDF019539349627DB2FD53D24B7C48665772E43" - "7D6C7F8CE442734A" - "F7CCB7AE837C264AE3A9BEB87F8A2FE9B8B5292E" - "5A021FFF5E91479E" - "8CE7A28C2442C6F315180F93499A234DCF76E3FE" - "D135F9BB", 16)), - # RFC 5054, 3, 2048-bit Group - (2, int("AC6BDB41324A9A9BF166DE5E1389582FAF72B665" - "1987EE07FC319294" - "3DB56050A37329CBB4A099ED8193E0757767A13D" - "D52312AB4B03310D" - "CD7F48A9DA04FD50E8083969EDB767B0CF609517" - "9A163AB3661A05FB" - "D5FAAAE82918A9962F0B93B855F97993EC975EEA" - "A80D740ADBF4FF74" - "7359D041D5C33EA71D281E446B14773BCA97B43A" - "23FB801676BD207A" - "436C6481F1D2B9078717461A5B9D32E688F87748" - "544523B524B0D57D" - "5EA77A2775D2ECFA032CFBDBF52FB37861602790" - "04E57AE6AF874E73" - "03CE53299CCC041C7BC308D82A5698F3A8D0C382" - "71AE35F8E9DBFBB6" - "94B5C803D89F7AE435DE236D525F54759B65E372" - "FCD68EF20FA7111F" - "9E4AFF73", 16)), - # RFC 5054, 4, 3072-bit Group - (5, int("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B" - "80DC1CD129024E08" - "8A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B" - "302B0A6DF25F14374FE1356D6D51C245E485B576" - "625E7EC6F44C42E9" - "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5" - "AE9F24117C4B1FE6" - "49286651ECE45B3DC2007CB8A163BF0598DA4836" - "1C55D39A69163FA8" - "FD24CF5F83655D23DCA3AD961C62F356208552BB" - "9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E46" - "2E36CE3BE39E772C" - "180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF695581718" - "3995497CEA956AE515D2261898FA051015728E5A" - "8AAAC42DAD33170D" - "04507A33A85521ABDF1CBA64ECFB850458DBEF0A" - "8AEA71575D060C7D" - "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E0" - "4A25619DCEE3D226" - "1AD2EE6BF12FFA06D98A0864D87602733EC86A64" - "521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA0" - "74E5AB3143DB5BFC" - "E0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF", - 16)), - # RFC 5054, 5, 4096-bit Group - (5, int("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B" - "80DC1CD129024E08" - "8A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B" - "302B0A6DF25F14374FE1356D6D51C245E485B576" - "625E7EC6F44C42E9" - "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5" - "AE9F24117C4B1FE6" - "49286651ECE45B3DC2007CB8A163BF0598DA4836" - "1C55D39A69163FA8" - "FD24CF5F83655D23DCA3AD961C62F356208552BB" - "9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E46" - "2E36CE3BE39E772C" - "180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF695581718" - "3995497CEA956AE515D2261898FA051015728E5A" - "8AAAC42DAD33170D" - "04507A33A85521ABDF1CBA64ECFB850458DBEF0A" - "8AEA71575D060C7D" - "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E0" - "4A25619DCEE3D226" - "1AD2EE6BF12FFA06D98A0864D87602733EC86A64" - "521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA0" - "74E5AB3143DB5BFC" - "E0FD108E4B82D120A92108011A723C12A787E6D7" - "88719A10BDBA5B26" - "99C327186AF4E23C1A946834B6150BDA2583E9CA" - "2AD44CE8DBBBC2DB" - "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D" - "99B2964FA090C3A2" - "233BA186515BE7ED1F612970CEE2D7AFB81BDD76" - "2170481CD0069127" - "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F" - "4DF435C934063199" - "FFFFFFFFFFFFFFFF", 16)), - # RFC 5054, 6, 6144-bit Group - (5, int("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B" - "80DC1CD129024E08" - "8A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B" - "302B0A6DF25F14374FE1356D6D51C245E485B576" - "625E7EC6F44C42E9" - "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5" - "AE9F24117C4B1FE6" - "49286651ECE45B3DC2007CB8A163BF0598DA4836" - "1C55D39A69163FA8" - "FD24CF5F83655D23DCA3AD961C62F356208552BB" - "9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E46" - "2E36CE3BE39E772C" - "180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF695581718" - "3995497CEA956AE515D2261898FA051015728E5A" - "8AAAC42DAD33170D" - "04507A33A85521ABDF1CBA64ECFB850458DBEF0A" - "8AEA71575D060C7D" - "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E0" - "4A25619DCEE3D226" - "1AD2EE6BF12FFA06D98A0864D87602733EC86A64" - "521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA0" - "74E5AB3143DB5BFC" - "E0FD108E4B82D120A92108011A723C12A787E6D7" - "88719A10BDBA5B26" - "99C327186AF4E23C1A946834B6150BDA2583E9CA" - "2AD44CE8DBBBC2DB" - "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D" - "99B2964FA090C3A2" - "233BA186515BE7ED1F612970CEE2D7AFB81BDD76" - "2170481CD0069127" - "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F" - "4DF435C934028492" - "36C3FAB4D27C7026C1D4DCB2602646DEC9751E76" - "3DBA37BDF8FF9406" - "AD9E530EE5DB382F413001AEB06A53ED9027D831" - "179727B0865A8918" - "DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447" - "E6CC254B33205151" - "2BD7AF426FB8F401378CD2BF5983CA01C64B92EC" - "F032EA15D1721D03" - "F482D7CE6E74FEF6D55E702F46980C82B5A84031" - "900B1C9E59E7C97F" - "BEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC5" - "4BD407B22B4154AA" - "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EE" - "F29BE32806A1D58B" - "B7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" - "DA56C9EC2EF29632" - "387FE8D76E3C0468043E8F663F4860EE12BF2D5B" - "0B7474D6E694F91E" - "6DCC4024FFFFFFFFFFFFFFFF", 16)), - # RFC 5054, 7, 8192-bit Group - (19, int("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B" - "80DC1CD129024E08" - "8A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B" - "302B0A6DF25F14374FE1356D6D51C245E485B576" - "625E7EC6F44C42E9" - "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5" - "AE9F24117C4B1FE6" - "49286651ECE45B3DC2007CB8A163BF0598DA4836" - "1C55D39A69163FA8" - "FD24CF5F83655D23DCA3AD961C62F356208552BB" - "9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E46" - "2E36CE3BE39E772C" - "180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF695581718" - "3995497CEA956AE515D2261898FA051015728E5A" - "8AAAC42DAD33170D" - "04507A33A85521ABDF1CBA64ECFB850458DBEF0A" - "8AEA71575D060C7D" - "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E0" - "4A25619DCEE3D226" - "1AD2EE6BF12FFA06D98A0864D87602733EC86A64" - "521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA0" - "74E5AB3143DB5BFC" - "E0FD108E4B82D120A92108011A723C12A787E6D7" - "88719A10BDBA5B26" - "99C327186AF4E23C1A946834B6150BDA2583E9CA" - "2AD44CE8DBBBC2DB" - "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D" - "99B2964FA090C3A2" - "233BA186515BE7ED1F612970CEE2D7AFB81BDD76" - "2170481CD0069127" - "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F" - "4DF435C934028492" - "36C3FAB4D27C7026C1D4DCB2602646DEC9751E76" - "3DBA37BDF8FF9406" - "AD9E530EE5DB382F413001AEB06A53ED9027D831" - "179727B0865A8918" - "DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447" - "E6CC254B33205151" - "2BD7AF426FB8F401378CD2BF5983CA01C64B92EC" - "F032EA15D1721D03" - "F482D7CE6E74FEF6D55E702F46980C82B5A84031" - "900B1C9E59E7C97F" - "BEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC5" - "4BD407B22B4154AA" - "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EE" - "F29BE32806A1D58B" - "B7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" - "DA56C9EC2EF29632" - "387FE8D76E3C0468043E8F663F4860EE12BF2D5B" - "0B7474D6E694F91E" - "6DBE115974A3926F12FEE5E438777CB6A932DF8C" - "D8BEC4D073B931BA" - "3BC832B68D9DD300741FA7BF8AFC47ED2576F693" - "6BA424663AAB639C" - "5AE4F5683423B4742BF1C978238F16CBE39D652D" - "E3FDB8BEFC848AD9" - "22222E04A4037C0713EB57A81A23F0C73473FC64" - "6CEA306B4BCBC886" - "2F8385DDFA9D4B7FA2C087E879683303ED5BDD3A" - "062B3CF5B3A278A6" - "6D2A13F83F44F82DDF310EE074AB6A364597E899" - "A0255DC164F31CC5" - "0846851DF9AB48195DED7EA1B1D510BD7EE74D73" - "FAF36BC31ECFA268" - "359046F4EB879F924009438B481C6CD7889A002E" - "D5EE382BC9190DA6" - "FC026E479558E4475677E9AA9E3050E2765694DF" - "C81F56E880B96E71" - "60C980DD98EDD3DFFFFFFFFFFFFFFFFF", 16))] + +# 1024, 1536, 2048, 3072, 4096, 6144, and 8192 bit groups from RFC 5054 +# Formatted as in the RFC +goodGroupParameters = [ + # RFC 5054, 1, 1024-bit Group + (2, int(remove_whitespace( + """ + EEAF0AB9 ADB38DD6 9C33F80A FA8FC5E8 60726187 75FF3C0B 9EA2314C + 9C256576 D674DF74 96EA81D3 383B4813 D692C6E0 E0D5D8E2 50B98BE4 + 8E495C1D 6089DAD1 5DC7D7B4 6154D6B6 CE8EF4AD 69B15D49 82559B29 + 7BCF1885 C529F566 660E57EC 68EDBC3C 05726CC0 2FD4CBF4 976EAA9A + FD5138FE 8376435B 9FC61D2F C0EB06E3"""), 16)), + # RFC 5054, 2, 1536-bit Group + (2, int(remove_whitespace( + """ + 9DEF3CAF B939277A B1F12A86 17A47BBB DBA51DF4 99AC4C80 BEEEA961 + 4B19CC4D 5F4F5F55 6E27CBDE 51C6A94B E4607A29 1558903B A0D0F843 + 80B655BB 9A22E8DC DF028A7C EC67F0D0 8134B1C8 B9798914 9B609E0B + E3BAB63D 47548381 DBC5B1FC 764E3F4B 53DD9DA1 158BFD3E 2B9C8CF5 + 6EDF0195 39349627 DB2FD53D 24B7C486 65772E43 7D6C7F8C E442734A + F7CCB7AE 837C264A E3A9BEB8 7F8A2FE9 B8B5292E 5A021FFF 5E91479E + 8CE7A28C 2442C6F3 15180F93 499A234D CF76E3FE D135F9BB"""), 16)), + # RFC 5054, 3, 2048-bit Group + (2, int(remove_whitespace( + """ + AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 + 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D + CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB + D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 + 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A + 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D + 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 + 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 + 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F + 9E4AFF73"""), 16)), + # RFC 5054, 4, 3072-bit Group + (5, int(remove_whitespace( + """ + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 + 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B + 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 + A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 + 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 + FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C + 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718 + 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D + 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D + B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 + 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC + E0FD108E 4B82D120 A93AD2CA FFFFFFFF FFFFFFFF"""), 16)), + # RFC 5054, 5, 4096-bit Group + (5, int(remove_whitespace( + """ + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 + 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B + 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 + A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 + 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 + FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C + 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718 + 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D + 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D + B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 + 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC + E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26 + 99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB + 04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2 + 233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127 + D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34063199 + FFFFFFFF FFFFFFFF"""), 16)), + # RFC 5054, 6, 6144-bit Group + (5, int(remove_whitespace( + """ + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 + 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B + 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 + A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 + 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 + FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C + 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718 + 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D + 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D + B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 + 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC + E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26 + 99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB + 04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2 + 233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127 + D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492 + 36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD F8FF9406 + AD9E530E E5DB382F 413001AE B06A53ED 9027D831 179727B0 865A8918 + DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B DB7F1447 E6CC254B 33205151 + 2BD7AF42 6FB8F401 378CD2BF 5983CA01 C64B92EC F032EA15 D1721D03 + F482D7CE 6E74FEF6 D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F + BEC7E8F3 23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA + CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 06A1D58B + B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C DA56C9EC 2EF29632 + 387FE8D7 6E3C0468 043E8F66 3F4860EE 12BF2D5B 0B7474D6 E694F91E + 6DCC4024 FFFFFFFF FFFFFFFF"""), 16)), + # RFC 5054, 7, 8192-bit Group + (19, int(remove_whitespace( + """ + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 + 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B + 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 + A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 + 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 + FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C + 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718 + 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D + 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D + B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 + 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC + E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26 + 99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB + 04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2 + 233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127 + D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492 + 36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD F8FF9406 + AD9E530E E5DB382F 413001AE B06A53ED 9027D831 179727B0 865A8918 + DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B DB7F1447 E6CC254B 33205151 + 2BD7AF42 6FB8F401 378CD2BF 5983CA01 C64B92EC F032EA15 D1721D03 + F482D7CE 6E74FEF6 D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F + BEC7E8F3 23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA + CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 06A1D58B + B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C DA56C9EC 2EF29632 + 387FE8D7 6E3C0468 043E8F66 3F4860EE 12BF2D5B 0B7474D6 E694F91E + 6DBE1159 74A3926F 12FEE5E4 38777CB6 A932DF8C D8BEC4D0 73B931BA + 3BC832B6 8D9DD300 741FA7BF 8AFC47ED 2576F693 6BA42466 3AAB639C + 5AE4F568 3423B474 2BF1C978 238F16CB E39D652D E3FDB8BE FC848AD9 + 22222E04 A4037C07 13EB57A8 1A23F0C7 3473FC64 6CEA306B 4BCBC886 + 2F8385DD FA9D4B7F A2C087E8 79683303 ED5BDD3A 062B3CF5 B3A278A6 + 6D2A13F8 3F44F82D DF310EE0 74AB6A36 4597E899 A0255DC1 64F31CC5 + 0846851D F9AB4819 5DED7EA1 B1D510BD 7EE74D73 FAF36BC3 1ECFA268 + 359046F4 EB879F92 4009438B 481C6CD7 889A002E D5EE382B C9190DA6 + FC026E47 9558E447 5677E9AA 9E3050E2 765694DF C81F56E8 80B96E71 + 60C980DD 98EDD3DF FFFFFFFF FFFFFFFF"""), 16))] + # old versions of tlslite had an incorrect generator for 3072 bit group # from RFC 5054. Since the group is a safe prime, the generator of "2" is From 787e0cfec6b2beb41640506de8571c74022fa673 Mon Sep 17 00:00:00 2001 From: Hubert Kario Date: Thu, 4 Jun 2020 16:32:41 +0200 Subject: [PATCH 3/6] format RFC 7919 groups use the exact same formatting as in the RFC for the group definitions --- tlslite/mathtls.py | 274 ++++++++++++++++++++++++--------------------- 1 file changed, 145 insertions(+), 129 deletions(-) diff --git a/tlslite/mathtls.py b/tlslite/mathtls.py index 81cdfea8f..bafd7075e 100644 --- a/tlslite/mathtls.py +++ b/tlslite/mathtls.py @@ -171,154 +171,170 @@ # same as above, any generator but 1 and p-1 are ok, cryptographically speaking goodGroupParameters.append((5, goodGroupParameters[6][1])) + RFC7919_GROUPS = [] + # RFC 7919 ffdhe2048 bit group -FFDHE2048 = (2, - int("FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" - "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" - "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" - "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" - "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" - "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" - "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" - "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" - "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" - "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" - "886B423861285C97FFFFFFFFFFFFFFFF", 16)) +FFDHE2048 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF ADF85458 A2BB4A9A AFDC5620 273D3CF1 + D8B9C583 CE2D3695 A9E13641 146433FB CC939DCE 249B3EF9 + 7D2FE363 630C75D8 F681B202 AEC4617A D3DF1ED5 D5FD6561 + 2433F51F 5F066ED0 85636555 3DED1AF3 B557135E 7F57C935 + 984F0C70 E0E68B77 E2A689DA F3EFE872 1DF158A1 36ADE735 + 30ACCA4F 483A797A BC0AB182 B324FB61 D108A94B B2C8E3FB + B96ADAB7 60D7F468 1D4F42A3 DE394DF4 AE56EDE7 6372BB19 + 0B07A7C8 EE0A6D70 9E02FCE1 CDF7E2EC C03404CD 28342F61 + 9172FE9C E98583FF 8E4F1232 EEF28183 C3FE3B1B 4C6FAD73 + 3BB5FCBC 2EC22005 C58EF183 7D1683B2 C6F34A26 C1B2EFFA + 886B4238 61285C97 FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE2048) RFC7919_GROUPS.append(FFDHE2048) + # RFC 7919 ffdhe3072 bit group -FFDHE3072 = (2, - int("FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" - "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" - "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" - "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" - "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" - "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" - "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" - "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" - "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" - "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" - "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" - "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" - "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" - "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" - "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" - "3C1B20EE3FD59D7C25E41D2B66C62E37FFFFFFFFFFFFFFFF", 16)) +FFDHE3072 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF ADF85458 A2BB4A9A AFDC5620 273D3CF1 + D8B9C583 CE2D3695 A9E13641 146433FB CC939DCE 249B3EF9 + 7D2FE363 630C75D8 F681B202 AEC4617A D3DF1ED5 D5FD6561 + 2433F51F 5F066ED0 85636555 3DED1AF3 B557135E 7F57C935 + 984F0C70 E0E68B77 E2A689DA F3EFE872 1DF158A1 36ADE735 + 30ACCA4F 483A797A BC0AB182 B324FB61 D108A94B B2C8E3FB + B96ADAB7 60D7F468 1D4F42A3 DE394DF4 AE56EDE7 6372BB19 + 0B07A7C8 EE0A6D70 9E02FCE1 CDF7E2EC C03404CD 28342F61 + 9172FE9C E98583FF 8E4F1232 EEF28183 C3FE3B1B 4C6FAD73 + 3BB5FCBC 2EC22005 C58EF183 7D1683B2 C6F34A26 C1B2EFFA + 886B4238 611FCFDC DE355B3B 6519035B BC34F4DE F99C0238 + 61B46FC9 D6E6C907 7AD91D26 91F7F7EE 598CB0FA C186D91C + AEFE1309 85139270 B4130C93 BC437944 F4FD4452 E2D74DD3 + 64F2E21E 71F54BFF 5CAE82AB 9C9DF69E E86D2BC5 22363A0D + ABC52197 9B0DEADA 1DBF9A42 D5C4484E 0ABCD06B FA53DDEF + 3C1B20EE 3FD59D7C 25E41D2B 66C62E37 FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE3072) RFC7919_GROUPS.append(FFDHE3072) + # RFC 7919 ffdhe4096 bit group -FFDHE4096 = (2, - int("FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" - "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" - "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" - "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" - "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" - "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" - "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" - "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" - "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" - "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" - "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" - "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" - "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" - "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" - "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" - "3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB" - "7930E9E4E58857B6AC7D5F42D69F6D187763CF1D55034004" - "87F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832" - "A907600A918130C46DC778F971AD0038092999A333CB8B7A" - "1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF" - "8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E655F6A" - "FFFFFFFFFFFFFFFF", 16)) +FFDHE4096 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF ADF85458 A2BB4A9A AFDC5620 273D3CF1 + D8B9C583 CE2D3695 A9E13641 146433FB CC939DCE 249B3EF9 + 7D2FE363 630C75D8 F681B202 AEC4617A D3DF1ED5 D5FD6561 + 2433F51F 5F066ED0 85636555 3DED1AF3 B557135E 7F57C935 + 984F0C70 E0E68B77 E2A689DA F3EFE872 1DF158A1 36ADE735 + 30ACCA4F 483A797A BC0AB182 B324FB61 D108A94B B2C8E3FB + B96ADAB7 60D7F468 1D4F42A3 DE394DF4 AE56EDE7 6372BB19 + 0B07A7C8 EE0A6D70 9E02FCE1 CDF7E2EC C03404CD 28342F61 + 9172FE9C E98583FF 8E4F1232 EEF28183 C3FE3B1B 4C6FAD73 + 3BB5FCBC 2EC22005 C58EF183 7D1683B2 C6F34A26 C1B2EFFA + 886B4238 611FCFDC DE355B3B 6519035B BC34F4DE F99C0238 + 61B46FC9 D6E6C907 7AD91D26 91F7F7EE 598CB0FA C186D91C + AEFE1309 85139270 B4130C93 BC437944 F4FD4452 E2D74DD3 + 64F2E21E 71F54BFF 5CAE82AB 9C9DF69E E86D2BC5 22363A0D + ABC52197 9B0DEADA 1DBF9A42 D5C4484E 0ABCD06B FA53DDEF + 3C1B20EE 3FD59D7C 25E41D2B 669E1EF1 6E6F52C3 164DF4FB + 7930E9E4 E58857B6 AC7D5F42 D69F6D18 7763CF1D 55034004 + 87F55BA5 7E31CC7A 7135C886 EFB4318A ED6A1E01 2D9E6832 + A907600A 918130C4 6DC778F9 71AD0038 092999A3 33CB8B7A + 1A1DB93D 7140003C 2A4ECEA9 F98D0ACC 0A8291CD CEC97DCF + 8EC9B55A 7F88A46B 4DB5A851 F44182E1 C68A007E 5E655F6A + FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE4096) RFC7919_GROUPS.append(FFDHE4096) + # RFC 7919 ffdhe6144 bit group -FFDHE6144 = (2, - int("FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" - "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" - "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" - "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" - "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" - "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" - "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" - "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" - "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" - "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" - "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" - "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" - "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" - "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" - "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" - "3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB" - "7930E9E4E58857B6AC7D5F42D69F6D187763CF1D55034004" - "87F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832" - "A907600A918130C46DC778F971AD0038092999A333CB8B7A" - "1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF" - "8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD902" - "0BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA6" - "3BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3A" - "CDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477" - "A52471F7A9A96910B855322EDB6340D8A00EF092350511E3" - "0ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4" - "763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6" - "B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538C" - "D72B03746AE77F5E62292C311562A846505DC82DB854338A" - "E49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B04" - "5B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1" - "A41D570D7938DAD4A40E329CD0E40E65FFFFFFFFFFFFFFFF", 16)) +FFDHE6144 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF ADF85458 A2BB4A9A AFDC5620 273D3CF1 + D8B9C583 CE2D3695 A9E13641 146433FB CC939DCE 249B3EF9 + 7D2FE363 630C75D8 F681B202 AEC4617A D3DF1ED5 D5FD6561 + 2433F51F 5F066ED0 85636555 3DED1AF3 B557135E 7F57C935 + 984F0C70 E0E68B77 E2A689DA F3EFE872 1DF158A1 36ADE735 + 30ACCA4F 483A797A BC0AB182 B324FB61 D108A94B B2C8E3FB + B96ADAB7 60D7F468 1D4F42A3 DE394DF4 AE56EDE7 6372BB19 + 0B07A7C8 EE0A6D70 9E02FCE1 CDF7E2EC C03404CD 28342F61 + 9172FE9C E98583FF 8E4F1232 EEF28183 C3FE3B1B 4C6FAD73 + 3BB5FCBC 2EC22005 C58EF183 7D1683B2 C6F34A26 C1B2EFFA + 886B4238 611FCFDC DE355B3B 6519035B BC34F4DE F99C0238 + 61B46FC9 D6E6C907 7AD91D26 91F7F7EE 598CB0FA C186D91C + AEFE1309 85139270 B4130C93 BC437944 F4FD4452 E2D74DD3 + 64F2E21E 71F54BFF 5CAE82AB 9C9DF69E E86D2BC5 22363A0D + ABC52197 9B0DEADA 1DBF9A42 D5C4484E 0ABCD06B FA53DDEF + 3C1B20EE 3FD59D7C 25E41D2B 669E1EF1 6E6F52C3 164DF4FB + 7930E9E4 E58857B6 AC7D5F42 D69F6D18 7763CF1D 55034004 + 87F55BA5 7E31CC7A 7135C886 EFB4318A ED6A1E01 2D9E6832 + A907600A 918130C4 6DC778F9 71AD0038 092999A3 33CB8B7A + 1A1DB93D 7140003C 2A4ECEA9 F98D0ACC 0A8291CD CEC97DCF + 8EC9B55A 7F88A46B 4DB5A851 F44182E1 C68A007E 5E0DD902 + 0BFD64B6 45036C7A 4E677D2C 38532A3A 23BA4442 CAF53EA6 + 3BB45432 9B7624C8 917BDD64 B1C0FD4C B38E8C33 4C701C3A + CDAD0657 FCCFEC71 9B1F5C3E 4E46041F 388147FB 4CFDB477 + A52471F7 A9A96910 B855322E DB6340D8 A00EF092 350511E3 + 0ABEC1FF F9E3A26E 7FB29F8C 183023C3 587E38DA 0077D9B4 + 763E4E4B 94B2BBC1 94C6651E 77CAF992 EEAAC023 2A281BF6 + B3A739C1 22611682 0AE8DB58 47A67CBE F9C9091B 462D538C + D72B0374 6AE77F5E 62292C31 1562A846 505DC82D B854338A + E49F5235 C95B9117 8CCF2DD5 CACEF403 EC9D1810 C6272B04 + 5B3B71F9 DC6B80D6 3FDD4A8E 9ADB1E69 62A69526 D43161C1 + A41D570D 7938DAD4 A40E329C D0E40E65 FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE6144) RFC7919_GROUPS.append(FFDHE6144) + # RFC 7919 ffdhe8192 bit group -FFDHE8192 = (2, - int("FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" - "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" - "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" - "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" - "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" - "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" - "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" - "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" - "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" - "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" - "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" - "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" - "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" - "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" - "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" - "3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB" - "7930E9E4E58857B6AC7D5F42D69F6D187763CF1D55034004" - "87F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832" - "A907600A918130C46DC778F971AD0038092999A333CB8B7A" - "1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF" - "8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD902" - "0BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA6" - "3BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3A" - "CDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477" - "A52471F7A9A96910B855322EDB6340D8A00EF092350511E3" - "0ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4" - "763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6" - "B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538C" - "D72B03746AE77F5E62292C311562A846505DC82DB854338A" - "E49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B04" - "5B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1" - "A41D570D7938DAD4A40E329CCFF46AAA36AD004CF600C838" - "1E425A31D951AE64FDB23FCEC9509D43687FEB69EDD1CC5E" - "0B8CC3BDF64B10EF86B63142A3AB8829555B2F747C932665" - "CB2C0F1CC01BD70229388839D2AF05E454504AC78B758282" - "2846C0BA35C35F5C59160CC046FD8251541FC68C9C86B022" - "BB7099876A460E7451A8A93109703FEE1C217E6C3826E52C" - "51AA691E0E423CFC99E9E31650C1217B624816CDAD9A95F9" - "D5B8019488D9C0A0A1FE3075A577E23183F81D4A3F2FA457" - "1EFC8CE0BA8A4FE8B6855DFE72B0A66EDED2FBABFBE58A30" - "FAFABE1C5D71A87E2F741EF8C1FE86FEA6BBFDE530677F0D" - "97D11D49F7A8443D0822E506A9F4614E011E2A94838FF88C" - "D68C8BB7C5C6424CFFFFFFFFFFFFFFFF", 16)) +FFDHE8192 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF ADF85458 A2BB4A9A AFDC5620 273D3CF1 + D8B9C583 CE2D3695 A9E13641 146433FB CC939DCE 249B3EF9 + 7D2FE363 630C75D8 F681B202 AEC4617A D3DF1ED5 D5FD6561 + 2433F51F 5F066ED0 85636555 3DED1AF3 B557135E 7F57C935 + 984F0C70 E0E68B77 E2A689DA F3EFE872 1DF158A1 36ADE735 + 30ACCA4F 483A797A BC0AB182 B324FB61 D108A94B B2C8E3FB + B96ADAB7 60D7F468 1D4F42A3 DE394DF4 AE56EDE7 6372BB19 + 0B07A7C8 EE0A6D70 9E02FCE1 CDF7E2EC C03404CD 28342F61 + 9172FE9C E98583FF 8E4F1232 EEF28183 C3FE3B1B 4C6FAD73 + 3BB5FCBC 2EC22005 C58EF183 7D1683B2 C6F34A26 C1B2EFFA + 886B4238 611FCFDC DE355B3B 6519035B BC34F4DE F99C0238 + 61B46FC9 D6E6C907 7AD91D26 91F7F7EE 598CB0FA C186D91C + AEFE1309 85139270 B4130C93 BC437944 F4FD4452 E2D74DD3 + 64F2E21E 71F54BFF 5CAE82AB 9C9DF69E E86D2BC5 22363A0D + ABC52197 9B0DEADA 1DBF9A42 D5C4484E 0ABCD06B FA53DDEF + 3C1B20EE 3FD59D7C 25E41D2B 669E1EF1 6E6F52C3 164DF4FB + 7930E9E4 E58857B6 AC7D5F42 D69F6D18 7763CF1D 55034004 + 87F55BA5 7E31CC7A 7135C886 EFB4318A ED6A1E01 2D9E6832 + A907600A 918130C4 6DC778F9 71AD0038 092999A3 33CB8B7A + 1A1DB93D 7140003C 2A4ECEA9 F98D0ACC 0A8291CD CEC97DCF + 8EC9B55A 7F88A46B 4DB5A851 F44182E1 C68A007E 5E0DD902 + 0BFD64B6 45036C7A 4E677D2C 38532A3A 23BA4442 CAF53EA6 + 3BB45432 9B7624C8 917BDD64 B1C0FD4C B38E8C33 4C701C3A + CDAD0657 FCCFEC71 9B1F5C3E 4E46041F 388147FB 4CFDB477 + A52471F7 A9A96910 B855322E DB6340D8 A00EF092 350511E3 + 0ABEC1FF F9E3A26E 7FB29F8C 183023C3 587E38DA 0077D9B4 + 763E4E4B 94B2BBC1 94C6651E 77CAF992 EEAAC023 2A281BF6 + B3A739C1 22611682 0AE8DB58 47A67CBE F9C9091B 462D538C + D72B0374 6AE77F5E 62292C31 1562A846 505DC82D B854338A + E49F5235 C95B9117 8CCF2DD5 CACEF403 EC9D1810 C6272B04 + 5B3B71F9 DC6B80D6 3FDD4A8E 9ADB1E69 62A69526 D43161C1 + A41D570D 7938DAD4 A40E329C CFF46AAA 36AD004C F600C838 + 1E425A31 D951AE64 FDB23FCE C9509D43 687FEB69 EDD1CC5E + 0B8CC3BD F64B10EF 86B63142 A3AB8829 555B2F74 7C932665 + CB2C0F1C C01BD702 29388839 D2AF05E4 54504AC7 8B758282 + 2846C0BA 35C35F5C 59160CC0 46FD8251 541FC68C 9C86B022 + BB709987 6A460E74 51A8A931 09703FEE 1C217E6C 3826E52C + 51AA691E 0E423CFC 99E9E316 50C1217B 624816CD AD9A95F9 + D5B80194 88D9C0A0 A1FE3075 A577E231 83F81D4A 3F2FA457 + 1EFC8CE0 BA8A4FE8 B6855DFE 72B0A66E DED2FBAB FBE58A30 + FAFABE1C 5D71A87E 2F741EF8 C1FE86FE A6BBFDE5 30677F0D + 97D11D49 F7A8443D 0822E506 A9F4614E 011E2A94 838FF88C + D68C8BB7 C5C6424C FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE8192) RFC7919_GROUPS.append(FFDHE8192) From 23ad2f816f6789b5715af8df2ca3060d9accaf22 Mon Sep 17 00:00:00 2001 From: Hubert Kario Date: Thu, 4 Jun 2020 16:45:37 +0200 Subject: [PATCH 4/6] add dict translating between names and FFDH parameters --- tlslite/mathtls.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tlslite/mathtls.py b/tlslite/mathtls.py index bafd7075e..f525432e9 100644 --- a/tlslite/mathtls.py +++ b/tlslite/mathtls.py @@ -16,6 +16,9 @@ from .utils.deprecations import deprecated_method +FFDHE_PARAMETERS = {} # All well known parameters + + # 1024, 1536, 2048, 3072, 4096, 6144, and 8192 bit groups from RFC 5054 # Formatted as in the RFC goodGroupParameters = [ @@ -162,6 +165,10 @@ 60C980DD 98EDD3DF FFFFFFFF FFFFFFFF"""), 16))] +for num, group in enumerate(goodGroupParameters, 1): + FFDHE_PARAMETERS["RFC5054 group {0}".format(num)] = group + + # old versions of tlslite had an incorrect generator for 3072 bit group # from RFC 5054. Since the group is a safe prime, the generator of "2" is # cryptographically safe, so we don't have reason to reject connections @@ -192,6 +199,7 @@ 886B4238 61285C97 FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE2048) RFC7919_GROUPS.append(FFDHE2048) +FFDHE_PARAMETERS["RFC7919 ffdhe2048"] = FFDHE2048 # RFC 7919 ffdhe3072 bit group @@ -216,6 +224,7 @@ 3C1B20EE 3FD59D7C 25E41D2B 66C62E37 FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE3072) RFC7919_GROUPS.append(FFDHE3072) +FFDHE_PARAMETERS["RFC7919 ffdhe3072"] = FFDHE3072 # RFC 7919 ffdhe4096 bit group @@ -246,6 +255,7 @@ FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE4096) RFC7919_GROUPS.append(FFDHE4096) +FFDHE_PARAMETERS["RFC7919 ffdhe4096"] = FFDHE4096 # RFC 7919 ffdhe6144 bit group @@ -286,6 +296,7 @@ A41D570D 7938DAD4 A40E329C D0E40E65 FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE6144) RFC7919_GROUPS.append(FFDHE6144) +FFDHE_PARAMETERS["RFC7919 ffdhe6144"] = FFDHE6144 # RFC 7919 ffdhe8192 bit group @@ -337,6 +348,7 @@ D68C8BB7 C5C6424C FFFFFFFF FFFFFFFF"""), 16)) goodGroupParameters.append(FFDHE8192) RFC7919_GROUPS.append(FFDHE8192) +FFDHE_PARAMETERS["RFC7919 ffdhe8192"] = FFDHE8192 def paramStrength(param): From 66defd24f9616f672610b93e599beb4bf0593375 Mon Sep 17 00:00:00 2001 From: Hubert Kario Date: Thu, 4 Jun 2020 17:59:26 +0200 Subject: [PATCH 5/6] add groups from RFC2409 --- tlslite/mathtls.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tlslite/mathtls.py b/tlslite/mathtls.py index f525432e9..d60cf2551 100644 --- a/tlslite/mathtls.py +++ b/tlslite/mathtls.py @@ -19,6 +19,30 @@ FFDHE_PARAMETERS = {} # All well known parameters +# RFC 2409 section 6.1, First Oakley Group, 768 bit MODP +RFC2409_GROUP1 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A63A3620 FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC2409 group 1"] = RFC2409_GROUP1 + + +# RFC 2409 section 6.2, Second Oakley Group, 1024 bit MODP +RFC2409_GROUP2 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 + FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC2409 group 2"] = RFC2409_GROUP2 + + # 1024, 1536, 2048, 3072, 4096, 6144, and 8192 bit groups from RFC 5054 # Formatted as in the RFC goodGroupParameters = [ From 10888bd15d7537aa775950596ed9bf952cfb82fc Mon Sep 17 00:00:00 2001 From: Hubert Kario Date: Thu, 4 Jun 2020 18:01:06 +0200 Subject: [PATCH 6/6] add groups from RFC 3526 --- tlslite/mathtls.py | 170 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) diff --git a/tlslite/mathtls.py b/tlslite/mathtls.py index d60cf2551..a681c05f5 100644 --- a/tlslite/mathtls.py +++ b/tlslite/mathtls.py @@ -43,6 +43,176 @@ FFDHE_PARAMETERS["RFC2409 group 2"] = RFC2409_GROUP2 +# RFC 3526 section 2, 1536 bit MODP +RFC3526_GROUP5 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D + C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F + 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA237327 FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC3526 group 5"] = RFC3526_GROUP5 + + +# RFC 3526 section 3, 2048 bit MODP +RFC3526_GROUP14 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D + C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F + 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B + E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 + DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 + 15728E5A 8AACAA68 FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC3526 group 14"] = RFC3526_GROUP14 + + +# RFC 3526 section 4, 3072 bit MODP +RFC3526_GROUP15 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D + C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F + 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B + E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 + DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 + 15728E5A 8AAAC42D AD33170D 04507A33 A85521AB DF1CBA64 + ECFB8504 58DBEF0A 8AEA7157 5D060C7D B3970F85 A6E1E4C7 + ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 1AD2EE6B + F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 + 43DB5BFC E0FD108E 4B82D120 A93AD2CA FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC3526 group 15"] = RFC3526_GROUP15 + + +# RFC 3526 section 5, 4096 bit MODP +RFC3526_GROUP16 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D + C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F + 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B + E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 + DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 + 15728E5A 8AAAC42D AD33170D 04507A33 A85521AB DF1CBA64 + ECFB8504 58DBEF0A 8AEA7157 5D060C7D B3970F85 A6E1E4C7 + ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 1AD2EE6B + F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 + 43DB5BFC E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 + 88719A10 BDBA5B26 99C32718 6AF4E23C 1A946834 B6150BDA + 2583E9CA 2AD44CE8 DBBBC2DB 04DE8EF9 2E8EFC14 1FBECAA6 + 287C5947 4E6BC05D 99B2964F A090C3A2 233BA186 515BE7ED + 1F612970 CEE2D7AF B81BDD76 2170481C D0069127 D5B05AA9 + 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34063199 + FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC3526 group 16"] = RFC3526_GROUP16 + + +# RFC 3526 section 6, 6144 bit MODP +RFC3526_GROUP17 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 + 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B + 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 + A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 + 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 + FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C + 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718 + 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D + 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D + B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 + 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC + E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26 + 99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB + 04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2 + 233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127 + D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492 + 36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD F8FF9406 + AD9E530E E5DB382F 413001AE B06A53ED 9027D831 179727B0 865A8918 + DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B DB7F1447 E6CC254B 33205151 + 2BD7AF42 6FB8F401 378CD2BF 5983CA01 C64B92EC F032EA15 D1721D03 + F482D7CE 6E74FEF6 D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F + BEC7E8F3 23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA + CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 06A1D58B + B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C DA56C9EC 2EF29632 + 387FE8D7 6E3C0468 043E8F66 3F4860EE 12BF2D5B 0B7474D6 E694F91E + 6DCC4024 FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC3526 group 17"] = RFC3526_GROUP17 + + +# RFC 3526 section 7, 8192 bit MODP +RFC3526_GROUP18 = ( + 2, + int(remove_whitespace(""" + FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D + C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F + 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D + 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B + E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 + DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 + 15728E5A 8AAAC42D AD33170D 04507A33 A85521AB DF1CBA64 + ECFB8504 58DBEF0A 8AEA7157 5D060C7D B3970F85 A6E1E4C7 + ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 1AD2EE6B + F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C + BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 + 43DB5BFC E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 + 88719A10 BDBA5B26 99C32718 6AF4E23C 1A946834 B6150BDA + 2583E9CA 2AD44CE8 DBBBC2DB 04DE8EF9 2E8EFC14 1FBECAA6 + 287C5947 4E6BC05D 99B2964F A090C3A2 233BA186 515BE7ED + 1F612970 CEE2D7AF B81BDD76 2170481C D0069127 D5B05AA9 + 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492 + 36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD + F8FF9406 AD9E530E E5DB382F 413001AE B06A53ED 9027D831 + 179727B0 865A8918 DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B + DB7F1447 E6CC254B 33205151 2BD7AF42 6FB8F401 378CD2BF + 5983CA01 C64B92EC F032EA15 D1721D03 F482D7CE 6E74FEF6 + D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F BEC7E8F3 + 23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA + CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 + 06A1D58B B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C + DA56C9EC 2EF29632 387FE8D7 6E3C0468 043E8F66 3F4860EE + 12BF2D5B 0B7474D6 E694F91E 6DBE1159 74A3926F 12FEE5E4 + 38777CB6 A932DF8C D8BEC4D0 73B931BA 3BC832B6 8D9DD300 + 741FA7BF 8AFC47ED 2576F693 6BA42466 3AAB639C 5AE4F568 + 3423B474 2BF1C978 238F16CB E39D652D E3FDB8BE FC848AD9 + 22222E04 A4037C07 13EB57A8 1A23F0C7 3473FC64 6CEA306B + 4BCBC886 2F8385DD FA9D4B7F A2C087E8 79683303 ED5BDD3A + 062B3CF5 B3A278A6 6D2A13F8 3F44F82D DF310EE0 74AB6A36 + 4597E899 A0255DC1 64F31CC5 0846851D F9AB4819 5DED7EA1 + B1D510BD 7EE74D73 FAF36BC3 1ECFA268 359046F4 EB879F92 + 4009438B 481C6CD7 889A002E D5EE382B C9190DA6 FC026E47 + 9558E447 5677E9AA 9E3050E2 765694DF C81F56E8 80B96E71 + 60C980DD 98EDD3DF FFFFFFFF FFFFFFFF"""), 16)) +FFDHE_PARAMETERS["RFC3526 group 18"] = RFC3526_GROUP18 + + # 1024, 1536, 2048, 3072, 4096, 6144, and 8192 bit groups from RFC 5054 # Formatted as in the RFC goodGroupParameters = [