From 9f76d65e4f372faa0f96d873d3ef07ca027038b9 Mon Sep 17 00:00:00 2001 From: Victor Wagner Date: Tue, 21 Jun 2016 17:51:35 +0300 Subject: [PATCH] Use openssl pkey to convert EC key into printable form before comparing, because different openssl versions use different privkey formats --- tests/testec.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/testec.py b/tests/testec.py index 4fbf502..c5054a5 100644 --- a/tests/testec.py +++ b/tests/testec.py @@ -1,10 +1,22 @@ 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----- MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgKnG6neqZvB98EEuuxnHs @@ -22,11 +34,11 @@ cUqktWYGr/GB65Zr5Ky1z/nha2bYCb6U4hTwbJP9CRCZr5hJklXn key=create(Oid("secp256k1"),b16decode("2A71BA9DEA99BC1F7C104BAEC671EC7EFF8BFF969BB8D346DB4C3352A4699DC3",True)) out=key.exportpriv() - self.assertEqual(out,self.ec1priv) + self.assertEqual(dump_key(out),dump_key(self.ec1priv)) def test_bignum(self): keyval='\xff'*32 key=create(Oid("secp256k1"),keyval) - self.assertEqual(key.exportpriv(),self.bigkey) + self.assertEqual(dump_key(key.exportpriv()),dump_key(self.bigkey)) if __name__ == "__main__": unittest.main() -- 2.39.5