X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=tests%2Ftestec.py;h=b5d060c7a464096057f200c73954b37f8f260a19;hb=refs%2Fheads%2Fmaster;hp=496a747b183c5e51128ee8a7d3236cde1b9a19f5;hpb=d817f7ee1103370ab5355871e744dfb5c15bf2b4;p=oss%2Fctypescrypto.git diff --git a/tests/testec.py b/tests/testec.py index 496a747..b5d060c 100644 --- a/tests/testec.py +++ b/tests/testec.py @@ -1,32 +1,58 @@ +from ctypescrypto import pyver from ctypescrypto.oid import Oid from ctypescrypto.ec import create from base64 import b16decode +from subprocess import Popen, PIPE import unittest +def dump_key(key): + """ Convert key into printable form using openssl utility + Used to compare keys which can be stored in different + format by different OpenSSL versions + """ + return Popen(["openssl","pkey","-text","-noout"],stdin=PIPE,stdout=PIPE).communicate(key)[0] - +def dump_pub_key(key): + """ Convert key into printable form using openssl utility + Used to compare keys which can be stored in different + format by different OpenSSL versions + """ + return Popen(["openssl","pkey","-text_pub","-noout"],stdin=PIPE,stdout=PIPE).communicate(key)[0] class TestEcCreation(unittest.TestCase): - ec1priv="""-----BEGIN PRIVATE KEY----- + ec1priv=b"""-----BEGIN PRIVATE KEY----- MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgKnG6neqZvB98EEuuxnHs fv+L/5abuNNG20wzUqRpncOhRANCAARWKXWeUZ6WiCKZ2kHx87jmJyx0G3ZB1iQC +Gp2AJYswbQPhGPigKolzIbZYfwnn7QOca6N8QDhPAn3QQK8trZI -----END PRIVATE KEY----- """ - bigkey="""-----BEGIN PRIVATE KEY----- -MHUCAQAwEAYHKoZIzj0CAQYFK4EEAAoEXjBcAgEBBBEBRVEjGVC3X8RALaFzL8m+ -vqFEA0IABJFmwom5+QXlX549+fadfzVrSiIJX4lPRxVxSqS1Zgav8YHrlmvkrLXP -+eFrZtgJvpTiFPBsk/0JEJmvmEmSVec= + bigkey=b"""-----BEGIN PRIVATE KEY----- +MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgAAAAAAAAAAAAAAAAAAAA +AUVRIxlQt1/EQC2hcy/Jvr6hRANCAASRZsKJufkF5V+ePfn2nX81a0oiCV+JT0cV +cUqktWYGr/GB65Zr5Ky1z/nha2bYCb6U4hTwbJP9CRCZr5hJklXn -----END PRIVATE KEY----- """ - def test_keyone(self): - key=create(Oid("secp256k1"),b16decode("2A71BA9DEA99BC1F7C104BAEC671EC7EFF8BFF969BB8D346DB4C3352A4699DC3",True)) - - out=key.exportpriv() - self.assertEqual(out,self.ec1priv) + def test_keyone(self): + key=create(Oid("secp256k1"),b16decode("2A71BA9DEA99BC1F7C104BAEC671EC7EFF8BFF969BB8D346DB4C3352A4699DC3",True)) + + out=key.exportpriv() + if pyver > 2: + out=out.encode("ascii") + self.assertEqual(dump_key(out),dump_key(self.ec1priv)) + if pyver == 2: + self.assertEqual(str(key),dump_pub_key(self.ec1priv)) + else: + self.assertEqual(str(key).encode("ascii"),dump_pub_key(self.ec1priv)) - def test_bignum(self): - keyval='\xff'*32 - key=create(Oid("secp256k1"),keyval) - self.assertEqual(key.exportpriv(),self.bigkey) + def test_bignum(self): + keyval=b'\xff'*32 + key=create(Oid("secp256k1"),keyval) + keyblob = key.exportpriv() + if pyver > 2: + keyblob = keyblob.encode("ascii") + self.assertEqual(dump_key(keyblob),dump_key(self.bigkey)) + keyblob2 = str(key) + if pyver > 2: + keyblob2 = keyblob2.encode('ascii') + self.assertEqual(keyblob2,dump_pub_key(self.bigkey)) if __name__ == "__main__": - unittest.main() + unittest.main()