@@ -642,27 +642,6 @@ def test_not_lying_on_curve(self):
642642 with self .assertRaises (MalformedPointError ):
643643 VerifyingKey .from_string (b ('\x02 ' ) + enc )
644644
645- def test_decoding_with_malformed_uncompressed (self ):
646- enc = b ('\x0c \xe0 \x1d \xe0 d\x1c \x8e S\x8a \xc0 \x9e K\xa8 x !\xd5 \xc2 \xc3 '
647- '\xfd \xc8 \xa0 c\xff \xfb \x02 \xb9 \xc4 \x84 )\x1a \x0f \x8b \x87 \xa4 '
648- 'z\x8a #\xb5 \x97 \xec O\xb6 \xa0 HQ\x89 *' )
649-
650- with self .assertRaises (MalformedPointError ):
651- VerifyingKey .from_string (b ('\x02 ' ) + enc )
652-
653- def test_decoding_with_point_not_on_curve (self ):
654- enc = b ('\x0c \xe0 \x1d \xe0 d\x1c \x8e S\x8a \xc0 \x9e K\xa8 x !\xd5 \xc2 \xc3 '
655- '\xfd \xc8 \xa0 c\xff \xfb \x02 \xb9 \xc4 \x84 )\x1a \x0f \x8b \x87 \xa4 '
656- 'z\x8a #\xb5 \x97 \xec O\xb6 \xa0 HQ\x89 *' )
657-
658- with self .assertRaises (MalformedPointError ):
659- VerifyingKey .from_string (enc [:47 ] + b ('\x00 ' ))
660-
661- def test_decoding_with_point_at_infinity (self ):
662- # decoding it is unsupported, as it's not necessary to encode it
663- with self .assertRaises (MalformedPointError ):
664- VerifyingKey .from_string (b ('\x00 ' ))
665-
666645 def test_from_string_with_invalid_curve_too_short_ver_key_len (self ):
667646 # both verifying_key_length and baselen are calculated internally
668647 # by the Curve constructor, but since we depend on them verify
@@ -1192,6 +1171,7 @@ def test_10(self):
11921171 hash_func = sha512 ,
11931172 expected = int ("16200813020EC986863BEDFC1B121F605C1215645018AEA1A7B215A564DE9EB1B38A67AA1128B80CE391C4FB71187654AAA3431027BFC7F395766CA988C964DC56D" , 16 ))
11941173
1174+
11951175class ECDH (unittest .TestCase ):
11961176 def _do (self , curve , generator , dA , x_qA , y_qA , dB , x_qB , y_qB , x_Z , y_Z ):
11971177 qA = dA * generator
@@ -1375,121 +1355,3 @@ def test_brainpoolP512r1(self):
13751355 y_Z = int ("7DB71C3DEF63212841C463E881BDCF055523BD368240E6C3143BD8DEF8"
13761356 "B3B3223B95E0F53082FF5E412F4222537A43DF1C6D25729DDB51620A83"
13771357 "2BE6A26680A2" , 16 ))
1378-
1379-
1380- class ECDH (unittest .TestCase ):
1381- def _do (self , curve , generator , dA , x_qA , y_qA , dB , x_qB , y_qB , x_Z , y_Z ):
1382- qA = dA * generator
1383- qB = dB * generator
1384- Z = dA * qB
1385- self .assertEqual (Point (curve , x_qA , y_qA ), qA )
1386- self .assertEqual (Point (curve , x_qB , y_qB ), qB )
1387- self .assertTrue ((dA * qB ) == (dA * dB * generator ) == (dB * dA * generator ) == (dB * qA ))
1388- self .assertEqual (Point (curve , x_Z , y_Z ), Z )
1389-
1390-
1391- class RFC6932 (ECDH ):
1392- # https://tools.ietf.org/html/rfc6932#appendix-A.1
1393-
1394- def test_brainpoolP224r1 (self ):
1395- self ._do (
1396- curve = curve_brainpoolp224r1 ,
1397- generator = BRAINPOOLP224r1 .generator ,
1398- dA = int ("7C4B7A2C8A4BAD1FBB7D79CC0955DB7C6A4660CA64CC4778159B495E" , 16 ),
1399- x_qA = int ("B104A67A6F6E85E14EC1825E1539E8ECDBBF584922367DD88C6BDCF2" , 16 ),
1400- y_qA = int ("46D782E7FDB5F60CD8404301AC5949C58EDB26BC68BA07695B750A94" , 16 ),
1401- dB = int ("63976D4AAE6CD0F6DD18DEFEF55D96569D0507C03E74D6486FFA28FB" , 16 ),
1402- x_qB = int ("2A97089A9296147B71B21A4B574E1278245B536F14D8C2B9D07A874E" , 16 ),
1403- y_qB = int ("9B900D7C77A709A797276B8CA1BA61BB95B546FC29F862E44D59D25B" , 16 ),
1404- x_Z = int ("312DFD98783F9FB77B9704945A73BEB6DCCBE3B65D0F967DCAB574EB" , 16 ),
1405- y_Z = int ("6F800811D64114B1C48C621AB3357CF93F496E4238696A2A012B3C98" , 16 ))
1406-
1407- def test_brainpoolP256r1 (self ):
1408- self ._do (
1409- curve = curve_brainpoolp256r1 ,
1410- generator = BRAINPOOLP256r1 .generator ,
1411- dA = int ("041EB8B1E2BC681BCE8E39963B2E9FC415B05283313DD1A8BCC055F11AE49699" , 16 ),
1412- x_qA = int ("78028496B5ECAAB3C8B6C12E45DB1E02C9E4D26B4113BC4F015F60C5CCC0D206" , 16 ),
1413- y_qA = int ("A2AE1762A3831C1D20F03F8D1E3C0C39AFE6F09B4D44BBE80CD100987B05F92B" , 16 ),
1414- dB = int ("06F5240EACDB9837BC96D48274C8AA834B6C87BA9CC3EEDD81F99A16B8D804D3" , 16 ),
1415- x_qB = int ("8E07E219BA588916C5B06AA30A2F464C2F2ACFC1610A3BE2FB240B635341F0DB" , 16 ),
1416- y_qB = int ("148EA1D7D1E7E54B9555B6C9AC90629C18B63BEE5D7AA6949EBBF47B24FDE40D" , 16 ),
1417- x_Z = int ("05E940915549E9F6A4A75693716E37466ABA79B4BF2919877A16DD2CC2E23708" , 16 ),
1418- y_Z = int ("6BC23B6702BC5A019438CEEA107DAAD8B94232FFBBC350F3B137628FE6FD134C" , 16 ))
1419-
1420- def test_brainpoolP384r1 (self ):
1421- self ._do (
1422- curve = curve_brainpoolp384r1 ,
1423- generator = BRAINPOOLP384r1 .generator ,
1424- dA = int ("014EC0755B78594BA47FB0A56F6173045B4331E74BA1A6F47322E70D79D828D97E095884CA72B73FDABD5910DF0FA76A" , 16 ),
1425- x_qA = int ("45CB26E4384DAF6FB776885307B9A38B7AD1B5C692E0C32F0125332778F3B8D3F50CA358099B30DEB5EE69A95C058B4E" , 16 ),
1426- y_qA = int ("8173A1C54AFFA7E781D0E1E1D12C0DC2B74F4DF58E4A4E3AF7026C5D32DC530A2CD89C859BB4B4B768497F49AB8CC859" , 16 ),
1427- dB = int ("6B461CB79BD0EA519A87D6828815D8CE7CD9B3CAA0B5A8262CBCD550A015C90095B976F3529957506E1224A861711D54" , 16 ),
1428- x_qB = int ("01BF92A92EE4BE8DED1A911125C209B03F99E3161CFCC986DC7711383FC30AF9CE28CA3386D59E2C8D72CE1E7B4666E8" , 16 ),
1429- y_qB = int ("3289C4A3A4FEE035E39BDB885D509D224A142FF9FBCC5CFE5CCBB30268EE47487ED8044858D31D848F7A95C635A347AC" , 16 ),
1430- x_Z = int ("04CC4FF3DCCCB07AF24E0ACC529955B36D7C807772B92FCBE48F3AFE9A2F370A1F98D3FA73FD0C0747C632E12F1423EC" , 16 ),
1431- y_Z = int ("7F465F90BD69AFB8F828A214EB9716D66ABC59F17AF7C75EE7F1DE22AB5D05085F5A01A9382D05BF72D96698FE3FF64E" , 16 ))
1432-
1433- def test_brainpoolP512r1 (self ):
1434- self ._do (
1435- curve = curve_brainpoolp512r1 ,
1436- generator = BRAINPOOLP512r1 .generator ,
1437- dA = int ("636B6BE0482A6C1C41AA7AE7B245E983392DB94CECEA2660A379CFE159559E357581825391175FC195D28BAC0CF03A7841A383B95C262B983782874CCE6FE333" , 16 ),
1438- x_qA = int ("0562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDA" , 16 ),
1439- y_qA = int ("A7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642E" , 16 ),
1440- dB = int ("0AF4E7F6D52EDD52907BB8DBAB3992A0BB696EC10DF11892FF205B66D381ECE72314E6A6EA079CEA06961DBA5AE6422EF2E9EE803A1F236FB96A1799B86E5C8B" , 16 ),
1441- x_qB = int ("5A7954E32663DFF11AE24712D87419F26B708AC2B92877D6BFEE2BFC43714D89BBDB6D24D807BBD3AEB7F0C325F862E8BADE4F74636B97EAACE739E11720D323" , 16 ),
1442- y_qB = int ("96D14621A9283A1BED84DE8DD64836B2C0758B11441179DC0C54C0D49A47C03807D171DD544B72CAAEF7B7CE01C7753E2CAD1A861ECA55A71954EE1BA35E04BE" , 16 ),
1443- x_Z = int ("1EE8321A4BBF93B9CF8921AB209850EC9B7066D1984EF08C2BB723236208AC8F1A483E79461A00E0D5F6921CE9D360502F85C812BEDEE23AC5B210E5811B191E" , 16 ),
1444- y_Z = int ("2632095B7B936174B41FD2FAF369B1D18DCADEED7E410A7E251F0831097C50D02CFED02607B6A2D5ADB4C0006008562208631875B58B54ECDA5A4F9FE9EAABA6" , 16 ))
1445-
1446-
1447- class RFC7027 (ECDH ):
1448- # https://tools.ietf.org/html/rfc7027#appendix-A
1449-
1450- def test_brainpoolP256r1 (self ):
1451- self ._do (
1452- curve = curve_brainpoolp256r1 ,
1453- generator = BRAINPOOLP256r1 .generator ,
1454- dA = int ("81DB1EE100150FF2EA338D708271BE38300CB54241D79950F77B063039804F1D" , 16 ),
1455- x_qA = int ("44106E913F92BC02A1705D9953A8414DB95E1AAA49E81D9E85F929A8E3100BE5" , 16 ),
1456- y_qA = int ("8AB4846F11CACCB73CE49CBDD120F5A900A69FD32C272223F789EF10EB089BDC" , 16 ),
1457- dB = int ("55E40BC41E37E3E2AD25C3C6654511FFA8474A91A0032087593852D3E7D76BD3" , 16 ),
1458- x_qB = int ("8D2D688C6CF93E1160AD04CC4429117DC2C41825E1E9FCA0ADDD34E6F1B39F7B" , 16 ),
1459- y_qB = int ("990C57520812BE512641E47034832106BC7D3E8DD0E4C7F1136D7006547CEC6A" , 16 ),
1460- x_Z = int ("89AFC39D41D3B327814B80940B042590F96556EC91E6AE7939BCE31F3A18BF2B" , 16 ),
1461- y_Z = int ("49C27868F4ECA2179BFD7D59B1E3BF34C1DBDE61AE12931648F43E59632504DE" , 16 ))
1462-
1463- def test_brainpoolP384r1 (self ):
1464- self ._do (
1465- curve = curve_brainpoolp384r1 ,
1466- generator = BRAINPOOLP384r1 .generator ,
1467- dA = int ("1E20F5E048A5886F1F157C74E91BDE2B98C8B52D58E5003D57053FC4B0BD65D6F15EB5D1EE1610DF870795143627D042" , 16 ),
1468- x_qA = int ("68B665DD91C195800650CDD363C625F4E742E8134667B767B1B476793588F885AB698C852D4A6E77A252D6380FCAF068" , 16 ),
1469- y_qA = int ("55BC91A39C9EC01DEE36017B7D673A931236D2F1F5C83942D049E3FA20607493E0D038FF2FD30C2AB67D15C85F7FAA59" , 16 ),
1470- dB = int ("032640BC6003C59260F7250C3DB58CE647F98E1260ACCE4ACDA3DD869F74E01F8BA5E0324309DB6A9831497ABAC96670" , 16 ),
1471- x_qB = int ("4D44326F269A597A5B58BBA565DA5556ED7FD9A8A9EB76C25F46DB69D19DC8CE6AD18E404B15738B2086DF37E71D1EB4" , 16 ),
1472- y_qB = int ("62D692136DE56CBE93BF5FA3188EF58BC8A3A0EC6C1E151A21038A42E9185329B5B275903D192F8D4E1F32FE9CC78C48" , 16 ),
1473- x_Z = int ("0BD9D3A7EA0B3D519D09D8E48D0785FB744A6B355E6304BC51C229FBBCE239BBADF6403715C35D4FB2A5444F575D4F42" , 16 ),
1474- y_Z = int ("0DF213417EBE4D8E40A5F76F66C56470C489A3478D146DECF6DF0D94BAE9E598157290F8756066975F1DB34B2324B7BD" , 16 ))
1475-
1476- def test_brainpoolP512r1 (self ):
1477- self ._do (
1478- curve = curve_brainpoolp512r1 ,
1479- generator = BRAINPOOLP512r1 .generator ,
1480- dA = int ("16302FF0DBBB5A8D733DAB7141C1B45ACBC8715939677F6A56850A38BD87BD59B09E80279609FF333EB9D4C061231FB26F92EEB04982A5F1D1764CAD57665422" , 16 ),
1481- x_qA = int ("0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FD" , 16 ),
1482- y_qA = int ("72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7" , 16 ),
1483- dB = int ("230E18E1BCC88A362FA54E4EA3902009292F7F8033624FD471B5D8ACE49D12CFABBC19963DAB8E2F1EBA00BFFB29E4D72D13F2224562F405CB80503666B25429" , 16 ),
1484- x_qB = int ("9D45F66DE5D67E2E6DB6E93A59CE0BB48106097FF78A081DE781CDB31FCE8CCBAAEA8DD4320C4119F1E9CD437A2EAB3731FA9668AB268D871DEDA55A5473199F" , 16 ),
1485- y_qB = int ("2FDC313095BCDD5FB3A91636F07A959C8E86B5636A1E930E8396049CB481961D365CC11453A06C719835475B12CB52FC3C383BCE35E27EF194512B71876285FA" , 16 ),
1486- x_Z = int ("A7927098655F1F9976FA50A9D566865DC530331846381C87256BAF3226244B76D36403C024D7BBF0AA0803EAFF405D3D24F11A9B5C0BEF679FE1454B21C4CD1F" , 16 ),
1487- y_Z = int ("7DB71C3DEF63212841C463E881BDCF055523BD368240E6C3143BD8DEF8B3B3223B95E0F53082FF5E412F4222537A43DF1C6D25729DDB51620A832BE6A26680A2" , 16 ))
1488-
1489-
1490- def __main__ ():
1491- unittest .main ()
1492-
1493-
1494- if __name__ == "__main__" :
1495- __main__ ()
0 commit comments