def test_ecdh(): # Try ECDH, see if we get the same answer (privA, pubA) = P256.key_pair() (privB, pubB) = P256.key_pair() Zab = P256.dh_z(privA, pubB) Zba = P256.dh_z(privB, pubA) assert Zab == Zba
def test_P256_verify_with_suite_B(): _msg = ("54686973206973206f6e6c7920612074657374206d6573736167652e2049742069" "73203438206279746573206c6f6e67") msg = binascii.unhexlify(_msg) Qx = 0x8101ece47464a6ead70cf69a6e2bd3d88691a3262d22cba4f7635eaff26680a8 Qy = 0xd8a12ba61d599235f67d9cb4d58f1783d3ca43e78f0a5abaa624079936c0c3a9 R = 0x7214bc9647160bbd39ff2f80533f5dc6ddd70ddf86bb815661e805d5d4e6f27c S = 0x7d1ff961980f961bdaa3233b6209f4013317d3e3f9e1493592dbeaa1af2bc367 h = int(hashlib.new("SHA256", msg).hexdigest(), 16) Q = (Qx, Qy) sig = P256.int2bytes(R) + P256.int2bytes(S) assert P256.verify(h, sig, Q)
def test_P256_verify_with_suite_B(): _msg = ( "54686973206973206f6e6c7920612074657374206d6573736167652e2049742069" "73203438206279746573206c6f6e67") msg = binascii.unhexlify(_msg) Qx = 0x8101ece47464a6ead70cf69a6e2bd3d88691a3262d22cba4f7635eaff26680a8 Qy = 0xd8a12ba61d599235f67d9cb4d58f1783d3ca43e78f0a5abaa624079936c0c3a9 R = 0x7214bc9647160bbd39ff2f80533f5dc6ddd70ddf86bb815661e805d5d4e6f27c S = 0x7d1ff961980f961bdaa3233b6209f4013317d3e3f9e1493592dbeaa1af2bc367 h = int(hashlib.new("SHA256", msg).hexdigest(), 16) Q = (Qx, Qy) sig = P256.int2bytes(R) + P256.int2bytes(S) assert P256.verify(h, sig, Q)
def test_P256_sign_and_verify(): d = 0x002a10b1b5b9fa0b78d38ed29cd9cec18520e0fe93023e3550bb7163ab4905c6 _msg = ("5ff1fa17c2a67ce599a34688f6fb2d4a8af17532d15fa1868a598a8e6a0daf9b11" "edcc483d11ae003ed645c0aaccfb1e51cf448b737376d531a6dcf0429005f5e7be" "626b218011c6218ff32d00f30480b024ec9a3370d1d30a9c70c9f1ce6c61c9abe5" "08d6bc4d3f2a167756613af1778f3a94e7771d5989fe856fa4df8f8ae5") msg = binascii.unhexlify(_msg) Qx = 0xe9cd2e8f15bd90cb0707e05ed3b601aace7ef57142a64661ea1dd7199ebba9ac Qy = 0xc96b0115bed1c134b68f89584b040a194bfad94a404fdb37adad107d5a0b4c5e h = int(hashlib.new("SHA1", msg).hexdigest(), 16) Q = (Qx, Qy) sig = P256.sign(h, d) assert P256.verify(h, sig, Q)
def test_P256_sign_and_verify(): d = 0x002a10b1b5b9fa0b78d38ed29cd9cec18520e0fe93023e3550bb7163ab4905c6 _msg = ( "5ff1fa17c2a67ce599a34688f6fb2d4a8af17532d15fa1868a598a8e6a0daf9b11" "edcc483d11ae003ed645c0aaccfb1e51cf448b737376d531a6dcf0429005f5e7be" "626b218011c6218ff32d00f30480b024ec9a3370d1d30a9c70c9f1ce6c61c9abe5" "08d6bc4d3f2a167756613af1778f3a94e7771d5989fe856fa4df8f8ae5") msg = binascii.unhexlify(_msg) Qx = 0xe9cd2e8f15bd90cb0707e05ed3b601aace7ef57142a64661ea1dd7199ebba9ac Qy = 0xc96b0115bed1c134b68f89584b040a194bfad94a404fdb37adad107d5a0b4c5e h = int(hashlib.new("SHA1", msg).hexdigest(), 16) Q = (Qx, Qy) sig = P256.sign(h, d) assert P256.verify(h, sig, Q)
def test_P256_verify(): # Try ECDSA with one of the NIST test vectors _msg = ("5ff1fa17c2a67ce599a34688f6fb2d4a8af17532d15fa1868a598a8e6a0daf9b11" "edcc483d11ae003ed645c0aaccfb1e51cf448b737376d531a6dcf0429005f5e7be" "626b218011c6218ff32d00f30480b024ec9a3370d1d30a9c70c9f1ce6c61c9abe5" "08d6bc4d3f2a167756613af1778f3a94e7771d5989fe856fa4df8f8ae5") msg = binascii.unhexlify(_msg) Qx = 0xe9cd2e8f15bd90cb0707e05ed3b601aace7ef57142a64661ea1dd7199ebba9ac Qy = 0xc96b0115bed1c134b68f89584b040a194bfad94a404fdb37adad107d5a0b4c5e R = 0x15bf46937c7a1e2fa7adc65c89fe03ae602dd7dfa6722cdafa92d624b32b156e S = 0x59c591792ee94f0b202e7a590e70d01dd8a9774884e2b5ba9945437cfed01686 h = int(hashlib.new("SHA1", msg).hexdigest(), 16) Q = (Qx, Qy) sig = P256.int2bytes(R) + P256.int2bytes(S) assert P256.verify(h, sig, Q)
def test_P256_verify(): # Try ECDSA with one of the NIST test vectors _msg = ( "5ff1fa17c2a67ce599a34688f6fb2d4a8af17532d15fa1868a598a8e6a0daf9b11" "edcc483d11ae003ed645c0aaccfb1e51cf448b737376d531a6dcf0429005f5e7be" "626b218011c6218ff32d00f30480b024ec9a3370d1d30a9c70c9f1ce6c61c9abe5" "08d6bc4d3f2a167756613af1778f3a94e7771d5989fe856fa4df8f8ae5") msg = binascii.unhexlify(_msg) Qx = 0xe9cd2e8f15bd90cb0707e05ed3b601aace7ef57142a64661ea1dd7199ebba9ac Qy = 0xc96b0115bed1c134b68f89584b040a194bfad94a404fdb37adad107d5a0b4c5e R = 0x15bf46937c7a1e2fa7adc65c89fe03ae602dd7dfa6722cdafa92d624b32b156e S = 0x59c591792ee94f0b202e7a590e70d01dd8a9774884e2b5ba9945437cfed01686 h = int(hashlib.new("SHA1", msg).hexdigest(), 16) Q = (Qx, Qy) sig = P256.int2bytes(R) + P256.int2bytes(S) assert P256.verify(h, sig, Q)
def test_cmp_neq_ec(): priv, pub = P256.key_pair() _key1 = ECKey(x=pub[0], y=pub[1], d=priv, crv="P-256") _key2 = ECKey(**ECKEY) try: assert _key1 == _key2 except AssertionError: pass else: assert False
def test_cmp_neq_ec(): priv, pub = P256.key_pair() _key1 = ECKey(x=pub[0], y=pub[1], d=priv, crv="P-256") _key2 = ECKey(**ECKEY) assert _key1 != _key2
def test_create_eckey(): priv, pub = P256.key_pair() ec = ECKey(x=pub[0], y=pub[1], d=priv, crv="P-256") exp_key = ec.serialize() assert _eq(list(exp_key.keys()), ["y", "x", "crv", "kty"])