def test_key_deployment(self): """GEC 2: Test Vectors for SEC 1, section 4.1 http://read.pudn.com/downloads168/doc/772358/TestVectorsforSEC%201-gec2.pdf """ # 4.1.1 # ec = secp160r1 # hf = sha1 # 4.1.2 dU = 971761939728640320549601132085879836204587084162 self.assertEqual(format(dU, str(ec.psize) + 'x'), 'aa374ffc3ce144e6b073307972cb6d57b2a4e982') QU = mult(dU, ec.G, ec) self.assertEqual(QU, (466448783855397898016055842232266600516272889280, 1110706324081757720403272427311003102474457754220)) self.assertEqual( octets_from_point(QU, True, ec).hex(), '0251b4496fecc406ed0e75a24a3c03206251419dc0') # 4.1.3 dV = 399525573676508631577122671218044116107572676710 self.assertEqual(format(dV, str(ec.psize) + 'x'), '45fb58a92a17ad4b15101c66e74f277e2b460866') QV = mult(dV, ec.G, ec) self.assertEqual(QV, (420773078745784176406965940076771545932416607676, 221937774842090227911893783570676792435918278531)) self.assertEqual( octets_from_point(QV, True, ec).hex(), '0349b41e0e9c0369c2328739d90f63d56707c6e5bc') # expected results z_exp = 1155982782519895915997745984453282631351432623114 zstr = 'ca7c0f8c3ffa87a96e1b74ac8e6af594347bb40a' size = 20 keying_data_exp = '744ab703f5bc082e59185f6d049d2d367db245c2' # 4.1.4 z, _ = mult(dU, QV, ec) # x coordinate only self.assertEqual(z, z_exp) self.assertEqual(format(z, str(ec.psize) + 'x'), zstr) keyingdata = dh.ansi_x963_kdf(octets_from_int(z, ec.psize), size, ec, hf) self.assertEqual(keyingdata.hex(), keying_data_exp) # 4.1.5 z, _ = mult(dV, QU, ec) # x coordinate only self.assertEqual(z, z_exp) self.assertEqual(format(z, str(ec.psize) + 'x'), zstr) keyingdata = dh.ansi_x963_kdf(octets_from_int(z, ec.psize), size, ec, hf) self.assertEqual(keyingdata.hex(), keying_data_exp)
def test_key_deployment(): """GEC 2: Test Vectors for SEC 1, section 4.1 http://read.pudn.com/downloads168/doc/772358/TestVectorsforSEC%201-gec2.pdf """ # 4.1.1 # ec = secp160r1 # hf = sha1 # 4.1.2 dU = 971761939728640320549601132085879836204587084162 assert format(dU, str(ec.nsize) + "x") == "aa374ffc3ce144e6b073307972cb6d57b2a4e982" QU = mult(dU, ec.G, ec) assert QU == ( 466448783855397898016055842232266600516272889280, 1110706324081757720403272427311003102474457754220, ) assert (bytes_from_point( QU, ec).hex() == "0251b4496fecc406ed0e75a24a3c03206251419dc0") # 4.1.3 dV = 399525573676508631577122671218044116107572676710 assert format(dV, str(ec.nsize) + "x") == "45fb58a92a17ad4b15101c66e74f277e2b460866" QV = mult(dV, ec.G, ec) assert QV == ( 420773078745784176406965940076771545932416607676, 221937774842090227911893783570676792435918278531, ) assert (bytes_from_point( QV, ec).hex() == "0349b41e0e9c0369c2328739d90f63d56707c6e5bc") # expected results z_exp = 1155982782519895915997745984453282631351432623114 zstr = "ca7c0f8c3ffa87a96e1b74ac8e6af594347bb40a" size = 20 keying_data_exp = "744ab703f5bc082e59185f6d049d2d367db245c2" # 4.1.4 z, _ = mult(dU, QV, ec) # x coordinate only assert z == z_exp assert format(z, str(ec.psize) + "x") == zstr keyingdata = dh.ansi_x963_kdf(z.to_bytes(ec.psize, "big"), size, ec, hf) assert keyingdata.hex() == keying_data_exp # 4.1.5 z, _ = mult(dV, QU, ec) # x coordinate only assert z == z_exp assert format(z, str(ec.psize) + "x") == zstr keyingdata = dh.ansi_x963_kdf(z.to_bytes(ec.psize, "big"), size, ec, hf) assert keyingdata.hex() == keying_data_exp