added some more test material; added some more tests

This commit is contained in:
Michael Greene
2014-08-26 17:33:13 -07:00
parent 7c246fb5a5
commit c830a13896
13 changed files with 206 additions and 20 deletions

View File

@@ -51,6 +51,8 @@ Requirements
- `enum34 <https://pypi.python.org/pypi/enum34>`_
- `six <https://pypi.python.org/pypi/six>`_
License
-------

View File

@@ -5,6 +5,7 @@ import hashlib
import zlib
from collections import namedtuple
from enum import Enum
from enum import IntEnum
import six
@@ -98,8 +99,8 @@ class PubKeyAlgorithm(IntEnum):
RSASign = 0x03 # deprecated
ElGamal = 0x10
DSA = 0x11
# EllipticCurve = 0x12
# ECDSA = 0x13
ECDH = 0x12
ECDSA = 0x13
FormerlyElGamalEncryptOrSign = 0x14 # deprecated - do not generate
# DiffieHellman = 0x15 # X9.42

View File

@@ -312,7 +312,8 @@ class PGPKey(PGPObject, Exportable):
raise PGPError("Incorrect key. Expected: {:s}".format(sig.signer))
if self.fingerprint.keyid != sig.signer and sig.signer in self.subkeys:
warnings.warn("Signature was signed with this key's subkey: {:s}. Verifying with that...".format(sig.signer))
warnings.warn("Signature was signed with this key's subkey: {:s}. "
"Verifying with that...".format(sig.signer))
return self.subkeys[sig.signer].verify(subject, sig)
##TODO: check this key's usage flags
@@ -886,6 +887,9 @@ class PGPKeyring(collections.Container, collections.Iterable, collections.Sized)
if alias in m:
return self._keys[m[alias]]
if alias.replace(' ', '') in m:
return self._keys[m[alias.replace(' ', '')]]
raise KeyError(alias)
def _get_keys(self, alias):
@@ -977,9 +981,9 @@ class PGPKeyring(collections.Container, collections.Iterable, collections.Sized)
@contextlib.contextmanager
def key(self, identifier):
##TODO: identifier is a PGPSignature
##TODO: identifier is a PGPMessage
if isinstance(identifier, PGPSignature):
pgpkey = self._get_key(identifier.signer)
identifier = identifier.signer
if identifier in self:
pgpkey = self._get_key(identifier)

View File

@@ -2,7 +2,9 @@
"""
import pytest
from pgpy.pgp import PGPKeyring
from pgpy import PGPKeyring
from pgpy import PGPMessage
from pgpy import PGPSignature
from pgpy.types import Fingerprint
@@ -52,26 +54,67 @@ class TestPGPKeyring(object):
assert not rvt[0].is_public
assert rvt[1].is_public
def test_select_fingerprint(self):
pytest.skip("not implemented yet")
def test_select_fingerprint(self, ascrings):
kr = PGPKeyring(ascrings)
def test_select_keyid(self):
pytest.skip("not implemented yet")
with kr.key("F429 4BC8 094A 7E05 85C8 5E86 3747 3B37 58C4 4F36") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
def test_select_shortid(self):
pytest.skip("not implemented yet")
with kr.key("EBC8 8A94 ACB1 10F1 BE3F E3C1 2B47 4BB0 2084 C712") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_uid(self):
pytest.skip("not implemented yet")
def test_select_keyid(self, ascrings):
kr = PGPKeyring(ascrings)
def test_select_comment(self):
pytest.skip("not implemented yet")
with kr.key("37473B3758C44F36") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
def test_select_email(self):
pytest.skip("not implemented yet")
with kr.key("2B474BB02084C712") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_shortid(self, ascrings):
kr = PGPKeyring(ascrings)
with kr.key("58C44F36") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with kr.key("2084C712") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_name(self, ascrings):
kr = PGPKeyring(ascrings)
with kr.key("RSA von TestKey") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with kr.key("DSA von TestKey") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_comment(self, ascrings):
kr = PGPKeyring(ascrings)
with kr.key("2048-bit RSA") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with kr.key("2048-bit DSA") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_email(self, ascrings):
kr = PGPKeyring(ascrings)
with kr.key("rsa@test.key") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with kr.key("dsa@test.key") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_pgpsignature(self):
pytest.skip("not implemented yet")
kr = PGPKeyring('tests/testdata/signatures/debian-sid.key.asc')
sig = PGPSignature()
sig.parse('tests/testdata/signatures/debian-sid.sig.asc')
with kr.key(sig) as sigkey:
assert sigkey.fingerprint.keyid == sig.signer
def test_select_pgpmessage(self):
pytest.skip("not implemented yet")

View File

@@ -9,7 +9,10 @@ from pgpy import PGPKey
from pgpy import PGPSignature
class TestPGPKey(object):
def test_verify(self, sigf):
def test_unlock_enckey(self):
pytest.skip("not implemented yet")
def test_verify_detach(self, sigf):
# test verifying signatures in tests/testdata/signatures
key = PGPKey()
key.parse(sigf + '.key.asc')
@@ -19,6 +22,12 @@ class TestPGPKey(object):
assert sigv
def test_verify_cleartext(self):
pytest.skip("not implemented yet")
def test_verify_message(self):
pytest.skip("not implemented yet")
def test_verify_wrongkey(self):
# test verifying with the wrong key
pytest.skip("not implemented yet")

View File

@@ -0,0 +1,19 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQIOAx/W1dTaAXDEEAf9H1h79u14X0rv+6artGTgG81MxWdVyaDuD7aN20OcPLDr
dQ8dwnr1cLgwlv+GXGbfwWuzrIaYRAJFqXVRUliR3BTZ9ySpy5x+MtvdcVEAleOM
MKe8ZyAA+wuvHuvjXepMnR4bUPpNEmOF6EFk9UI+QtlaGjpkwZ9sm6mvh1MtspP6
VG4x1aTPfWrwIbLwFzfkJkk1N9zdBBA2l8GSL/gezsvS/GZEieVVJCx4dRJwvS+0
Kb7Y4ReatfIDckDhaetqnNBnueGBY8bwc1yWR2ivDldL+YbTtSwZXDrrJuR7Fw0b
EPEX/721AnXUSCrMoKW2E48hFe45Y5xHOu/7qO0XdQf/QULbrDtKfR5WDlP4Wnbf
NQBaI6UgUXY2JkaNacWiAoplzSKxJxxHn/fQ/lpvtjuyNeuOM06wE8Ls5l12CZUh
JkW2AC9mx9q9wKpweTsLwRBkwZ51SI3pWRGm0Y4eZGVz1o6l8kWxZ33cUUmKxblu
CYIG438m9YMIFEr71bBH8OMB2OcDZ+qDd4OpETN8sBGKD5DI3AiH1WDPy+ljzPAb
0EAfhqBDyN1+dRZTYBWjHjU7BmfwZZfjKkph6ZU2vLGXHiGOqHK+oQf4KwI0n9bz
cR/AYxsgUidzp0GK8c+Emh2L9TJlK598RQcdNbk7pCJXYm0rGLoIEHX/szdU6Mg2
NdJQAUuqPAvrEF8XsJjnwQSWaYkF7X6hXFdCSvrtTb9gOhEXORYPIokiTjaLHxJR
Jtit3mYNz6LJUhnEZnDe4sPZRJw2SBqm6/Z1n330KvxKEAA=
=OBqj
-----END PGP MESSAGE-----

View File

@@ -0,0 +1,19 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQIOAx/W1dTaAXDEEAf/Y51oEM0lgJ3IoLwwSOSCAGLygp6J7z7AApVk0Bsr+W9y
lWMGCwYjpuZic8aee434Yu/f2kB6czYQXn3OPGWXCFeaUU0OxN5ce4wWqeTgHcQP
gyr3BkHTgcSsU7v2pBjHh86FxfRcIg9mpIz4zFlGUHmMNMmpqhABcY7rRXUuIiS0
QzzHL6O1ngsQwCkJYJDgTm+rhqxt2wRrz/Usg0tqmnTRBLkY7AA0dPqv2elDZTki
liCXJb+7aS5qKrgkMKtmuDeZdfPIJmgHzOPfpUrFrdjpPh3RefNxbZFGhYnA2fE4
By5YYkZtlf1+sIkB/HET2LsXGGpL35G4tuK3iiXbvggAlfCQM8Ns5YNHQ2oMyxfT
uIJMLRpq3HBEYMFQ3mvEShYY4nJ5y+1ycbZy2nSq2PQzI7jQV12/WL1dyJTJ31vD
nc/SImfRM0r9vesPz303iIeNpa0yvhp3SDXUqwqLsomYVyGvwnKbOCcImtHtCieh
Js2JUaFoEd2skgZtCOJIOScnupdIAzQwap3HaVHBAM/bBIi9g0XSNoKbbgFWhO0p
ZE9EEKciqdB3ruvZ3Hs87BVCHtPsd+0cSPsRBktx2u+sFrJnDjh7Lj5+TRXdZdm/
HFFDLrJugsixQA9CY+AO9bWTGM29g1TCyoRIsi948TD79FiWzZBT6b00u7lkE306
btJQAQi2KidqmI3Ztsy+O2rg18Q/dR7SAFbhEcbJCQaLjfzVAH5rff57dXpaZE3S
g+2/t7cDFCp6EijnJ/oX3uLK8tm3xD9mH4esl5IwdUKAe9k=
=SePW
-----END PGP MESSAGE-----

View File

@@ -0,0 +1,19 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQIOAx/W1dTaAXDEEAf7BQ2+tlo9OolbUlPAnYZvXTcoVVyPRTsxUHrtW+nToot5
xK+0GVCbs9w36fQJ9CYtbut6j2o/1Uw+Ociv+ICDW14zFV5zGMdzgxZKdglcREpK
KPtyKObc46yOax35mpVcdp2XtOYfLTbjQUGuByDj8E4pXh/E358JA5SziGqnupmj
BUG7QnildRAtCwnBzxKlqoNOiuBTIpDAo0CF7emzPsYAHp3mse9rSziRBtjTTcbk
+fijOLp+0/QIfVReVKZ9Wx5jDchJJQlvv1ryHa6iYymzfYzFkzOhayhj16VQb7kj
NekVRdVJVD74OlbMupu+k2T7RqzTnXHgUEkusxGDAgf/d+ol9cvd5jizTZZINceo
I+/VDsjEro0jcF8zhKY/c+x+KnkQbZP3Yw4RLZ4zacgr/GOCUuOy1eZk3WmDuPXy
tBy7nqc60xAA9cAiYm0FFkz9Hrs/YbK5j/AN6GwxqYoyOaMGjqTbI9eS51VBXMik
mWTGKzNe/Ve86iYRFMetLt9h8c/G/HJ9KzkhRVByN9E6vGwwgrpNSh6hxmN0TOta
oejGA81P/xvPtBzZyO9VrWlUsAqfdjboJ26JnGfY45d2RQTiNkSO/NyYSUX2NP6T
FiH+8R6Q9vurT0cNIGOZCBf9+GQdXGTno8I6++bmtuJTbYbOOuS6s04kHJtpML1O
TNJQAdV6JfT8dL/LIvMw1OqN5CxKT9e3pFOdvJpvtmdH2OGTBNLZrB8HbHfAJVPr
UN+A7ugCiM2SlIrxptK3C3GZb8FXsRnxvqSdp0Si/RcaXtQ=
=1Nna
-----END PGP MESSAGE-----

View File

@@ -0,0 +1,14 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQEMA+7gl6AXuXnKAQf/Vz62RGU4HWk7HhpcXqUbTrIrinn6q9v3fWOL4gu69Xlj
zsXCgiogdPYzls16PuT3NFcGBSwl/b+6W6wCRqdFTVjURXOZLmSLTehiImhU8cpT
XQ/PF1cDBeqNefMufJ1htPzs6FiT7D9rx+1WjZvpMbrxx42DQ/uXkAuCQf6OX6+O
6+GqQWbHWqp3hQd/QjPDv6WugUci2esTq/HvzOr7Lj7+JkgGDmS223hfQMrMwM51
9LsH6qUZTDMtdA4cqTn1abdwWPhpsYCVSh7OFW5D8inXfAH/Btbcbg4P36KIGCno
OA8jlFk98x2Lfcwn1t7nv6ckdfp1fkv+KdqO8E1FjNJQAYfw7xEO2IkZzz32V7hX
ybETa87l7dUspj0/ASE/gn6PNvV8jRePpcxD+CFyQErj6cVrLR+xcnBlu5qpoZZn
i9ddkE+UwWUmh/fYJXcFkL8=
=0vpt
-----END PGP MESSAGE-----

View File

@@ -0,0 +1,14 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQEMA+7gl6AXuXnKAQf9EsimYHb/DmHpBckAwk4vIkHqUZa5tGf6yDsaGtDAIjWB
Oaxsnbr7L7mYvQZOiR53JN/+0x9vjamSFZufM/KY4CFz3Spp4BO7TcjtQ9civr3O
Vo/+O77w1qdMViXnf2IQliELJuXztsr76KjnbIR31ko/ZcRIt5sI3nWa6imlCZnZ
+aapLfLVUAV+5w4UwKQTOHBhjW3bfAzcAXDUbqyeNP8FpJrfcGJ6hEg220BdBu+N
KgY4HqXQXdb0mobimq/dzR2bqTPid24NM8k8wjUsq4UQGkKuoX2maNFqk0QXymu9
+kh6ZQuXyX49fSILrlnQ4o6lgQdbPCZ8Ex3O2Eog79JYAco6/3lCozNh3SelBkYu
/ODnsm2UGNVFFWmlCHPwEepHKkNC14l0xgw6ztFCAm7wfZ9Ty4L+8O2XZunyx1+y
MsIgzR4xlvvimo4XL1nog1/gxef58AYHGw==
=/vIq
-----END PGP MESSAGE-----

View File

@@ -0,0 +1,14 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQEMA+7gl6AXuXnKAQgA36wDwY0WbEn0/qrxJQcFgbFN8/aEiSiGUvdeoB3lEuv3
ESIJt9sDuKX2bYPbvB7NqD1dj1UnXx0S7XFozPPpthzO+lzQvGWuNX2uP3RT1VL0
CsIszJYnDPYBtfYW+i6Sn1Em8iVlWkGTOLOpQSHt7DtrmoHy6VcDIOv2qkbJuMiC
jmNr/U84/8RejRtFk9qmJ7qfaz8OgoWOs4ptNoDqn3M3+A6Kpm+MDh00zeG+9fgh
An1XtQ/kviISwAmjylwsCPTPWh+BCrO72Eac8Iy6esUV1+HcVokwsz95opypVPlY
TnEvsJmhGT4KDH2VHOBlQWQaUlfY+rtf1NlnsT6OF9JZAZRBjytzKD3gqvJQt9Zu
srBgOt2PgUL7xVzkN4vihT2M9SOgt6L0NowBvxy3uNxbxgqdqPLdIVtxlNVQ6csw
pAumtn/gB1rmwsMe8zqDjN8wHYuXGALejVo=
=cbvJ
-----END PGP MESSAGE-----

View File

@@ -0,0 +1,14 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQEMA+7gl6AXuXnKAQgAnRCazRyghxG0gMtpuCQlhljYzFCMja9Xqtd5EIF7nE2n
RHXd5ctd/7M2tfOB5WYZ8+ULpowkBcAR6P5gGpeBGbvsW7HqzAVe028AS8ZFBJBw
dq3f+S2XIVzGDOLOzr+BoVGN+k/+EAPE9N1ZGFaR48aY8YEdcYOtIcrpHvDeXtJ8
7cSJsQiphQoaGsFuifJ8CVMke4ika5F0Aksa7xY6YyNKUCtsrYTmZ+Rry/oFOHIE
cdU+/zjrs4c3JwgMyjuXcg+NqHOz0zk3uHAdEF0JNAfYVUmJbxoBziUgxLJkyrVq
KbXAl4ASdkmBV63TN6fqtmsujmOt623LX1BPcJ43j9JQARmIRP1IyziiK0zE1siD
gT49DC+s4XTwFDJWoUdZIdpQYYjuV1in7XZYttS2QL/MlvwvykXd1p4Q0eb0umK+
gChyoSN7Rw2k5iWVBdmhNas=
=hja9
-----END PGP MESSAGE-----

View File

@@ -0,0 +1,14 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.20 (Darwin)
Comment: GPGTools - http://gpgtools.org
hQEMA+7gl6AXuXnKAQf/SYhkWaDpUQs2/dqyXRP/Dy8i9RcOROKwkTuZZ1WbcxZT
0CLFAR6C80aGdHUqDZTBPfV++td41y84lfiOFeN3W99hoK6M0luLfQFhwgdUUsTF
+JtxH5Z1zB2JOoVn2w9rTdaE4sjC8AYap3yMywFt6CU2V+BmtcMkuyKl2HIJxJTB
uGCOFs+3niG/0pynOkFu6RfRuUOiTk1fczKJkpdbA/b9qrZ4UIwNa+NANU5B3P3G
o01ri3NwSpYNUs6yDuPIB5osWKcaEgP0zm4gchgSw7aEvIwhTEz7aZWx1kfaHtYb
2SHx4Bh7HCTktz+k2dN2eCs9G4OwUR0MmlpBuO4bqtJQAeEgu0NV+vMmB9aWHuxP
R3e3xI5Y9avzk8q6qr4SWwkMOj/KffvW6tGG6zgT0ujdX9nWWm3zmP5UX3r7pSnr
CnnI3zGv3InNsLDIW+stahE=
=7URy
-----END PGP MESSAGE-----