from ctypescrypto.pkey import PKey
-import unittest
+from ctypescrypto import pyver
+import unittest,re
from base64 import b64decode, b16decode
from subprocess import Popen,PIPE,CalledProcessError
return b64decode(data)
def runopenssl(args,indata):
- p=Popen(['openssl']+args,stdin=PIPE,stdout=PIPE,stderr=PIPE,universal_newlines=True)
+ p=Popen(['openssl']+args,stdin=PIPE,stdout=PIPE,stderr=PIPE)
(out,err)=p.communicate(indata)
if p.returncode:
raise CalledProcessError(p.returncode," ".join(['openssl']+args)+":"+err)
+ if pyver > 2:
+ out = out.decode("utf-8")
return out
-----END PRIVATE KEY-----
"""
ec1keytext="""Public-Key: (256 bit)
-pub:
+pub:
04:56:29:75:9e:51:9e:96:88:22:99:da:41:f1:f3:
b8:e6:27:2c:74:1b:76:41:d6:24:02:f8:6a:76:00:
96:2c:c1:b4:0f:84:63:e2:80:aa:25:cc:86:d9:61:
from ctypescrypto.cipher import CipherType
key=PKey(privkey=self.rsa)
pem=key.exportpriv(password='2222',cipher=CipherType("aes256"))
+ if pyver >2:
+ pem = pem.encode("ascii")
self.assertEqual(runopenssl(["pkey","-text_pub","-noout","-passin","pass:2222"],
pem),self.rsakeytext)
def test_export_priv_der(self):
key=PKey(privkey=self.ec1priv)
self.assertIsNotNone(key.key)
- self.assertEqual(str(key),self.ec1keytext)
+ self.assertEqual(re.sub("pub: \n","pub:\n",str(key)),self.ec1keytext)
def test_unencrypted_der_ec(self):
key=PKey(privkey=pem2der(self.ec1priv),format="DER")
self.assertIsNotNone(key.key)
- self.assertEqual(str(key),self.ec1keytext)
+ self.assertEqual(re.sub("pub: \n","pub:\n",str(key)),self.ec1keytext)
def test_pubkey_pem(self):
key=PKey(pubkey=self.ec1pub)
self.assertIsNotNone(key.key)
- self.assertEqual(str(key),self.ec1keytext)
+ self.assertEqual(re.sub("pub: \n","pub:\n",str(key)),self.ec1keytext)
def test_pubkey_der(self):
key=PKey(pubkey=pem2der(self.ec1pub),format="DER")
self.assertIsNotNone(key.key)
- self.assertEqual(str(key),self.ec1keytext)
+ self.assertEqual(re.sub("pub: \n","pub:\n",str(key)),self.ec1keytext)
def test_compare(self):
key1=PKey(privkey=self.ec1priv)
self.assertIsNotNone(key1.key)