+
+ def test_unencrypted_pem(self):
+ key=PKey(privkey=self.rsa)
+ self.assertTrue(key.cansign)
+ self.assertIsNotNone(key.key)
+ self.assertEqual(str(key),self.rsakeytext)
+ def test_encrypted_pem(self):
+ key=PKey(privkey=self.rsaenc,password=self.password)
+ self.assertIsNotNone(key.key)
+ self.assertEqual(str(key),self.rsakeytext)
+ def test_encrypted_pem_cb(self):
+ cb=lambda x:self.password
+ key=PKey(privkey=self.rsaenc,password=cb)
+ self.assertIsNotNone(key.key)
+ self.assertEqual(str(key),self.rsakeytext)
+ def test_encryped_pem_pkcs8(self):
+ key=PKey(privkey=self.pkcs8crypt,password=self.password)
+ self.assertIsNotNone(key.key)
+ self.assertEqual(str(key),self.rsakeytext)
+ def test_encrypted_der_pkcs8(self):
+ pkcs8der = pem2der(self.pkcs8crypt)
+ key=PKey(privkey=pkcs8der,password=self.password,format="DER")
+ self.assertIsNotNone(key.key)
+ self.assertEqual(str(key),self.rsakeytext)
+ def test_export_priv_pem(self):
+ key=PKey(privkey=self.ec1priv)
+ out=key.exportpriv()
+ self.assertEqual(self.ec1priv,out)
+ def test_export_priv_encrypt(self):
+ from ctypescrypto.cipher import CipherType
+ key=PKey(privkey=self.rsa)
+ pem=key.exportpriv(password='2222',cipher=CipherType("aes256"))
+ self.assertEqual(runopenssl(["pkey","-text_pub","-noout","-passin","pass:2222"],
+ pem),self.rsakeytext)
+ def test_export_priv_der(self):
+ key=PKey(privkey=self.rsa)
+ der=key.exportpriv(format="DER")
+ self.assertEqual(runopenssl(["pkey","-text_pub","-noout","-inform","DER"],
+ der),self.rsakeytext)
+ def test_export_priv_der_enc(self):
+ from ctypescrypto.cipher import CipherType
+ key=PKey(privkey=self.rsa)
+ der=key.exportpriv(format="DER",password='2222',cipher=CipherType("aes256"))
+ self.assertEqual(runopenssl(["pkcs8","-passin","pass:2222","-inform","DER"],
+ der),self.rsa)
+ def test_unencrypted_pem_ec(self):
+
+ key=PKey(privkey=self.ec1priv)
+ self.assertIsNotNone(key.key)
+ 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(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(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(re.sub("pub: \n","pub:\n",str(key)),self.ec1keytext)
+ def test_compare(self):
+ key1=PKey(privkey=self.ec1priv)
+ self.assertIsNotNone(key1.key)
+ key2=PKey(pubkey=self.ec1pub)
+ self.assertIsNotNone(key2.key)
+ self.assertEqual(key1,key2)
+ def test_sign(self):
+ signer=PKey(privkey=self.ec1priv)
+ digest=b16decode("FFCA2587CFD4846E4CB975B503C9EB940F94566AA394E8BD571458B9DA5097D5")
+ signature=signer.sign(digest)
+ self.assertTrue(len(signature)>0)
+ verifier=PKey(pubkey=self.ec1pub)
+ self.assertTrue(verifier.verify(digest,signature))
+ def test_generate(self):
+ newkey=PKey.generate("rsa")
+ self.assertIsNotNone(newkey.key)
+ s=str(newkey)
+ self.assertEqual(s[:s.find("\n")],"Public-Key: (1024 bit)")
+ def test_generate_params(self):
+ newkey=PKey.generate("rsa",rsa_keygen_bits=2048)
+ self.assertIsNotNone(newkey.key)
+ s=str(newkey)
+ self.assertEqual(s[:s.find("\n")],"Public-Key: (2048 bit)")
+ def test_generate_ec(self):
+ templkey=PKey(pubkey=self.ec1pub)
+ newkey=PKey.generate("ec",paramsfrom=templkey)
+ self.assertIsNotNone(newkey.key)
+ s=str(newkey)
+ self.assertEqual(s[:s.find("\n")],"Public-Key: (256 bit)")
+ self.assertNotEqual(str(templkey),str(newkey))