added some more test material; added some more tests
This commit is contained in:
@@ -51,6 +51,8 @@ Requirements
|
||||
|
||||
- `enum34 <https://pypi.python.org/pypi/enum34>`_
|
||||
|
||||
- `six <https://pypi.python.org/pypi/six>`_
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
10
pgpy/pgp.py
10
pgpy/pgp.py
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
19
tests/testdata/messages/message.dsa.enc.3des.asc
vendored
Normal file
19
tests/testdata/messages/message.dsa.enc.3des.asc
vendored
Normal 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-----
|
||||
19
tests/testdata/messages/message.dsa.enc.cast5.asc
vendored
Normal file
19
tests/testdata/messages/message.dsa.enc.cast5.asc
vendored
Normal 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-----
|
||||
19
tests/testdata/messages/message.dsa.enc.idea.asc
vendored
Normal file
19
tests/testdata/messages/message.dsa.enc.idea.asc
vendored
Normal 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-----
|
||||
14
tests/testdata/messages/message.rsa.enc.3des.asc
vendored
Normal file
14
tests/testdata/messages/message.rsa.enc.3des.asc
vendored
Normal 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-----
|
||||
14
tests/testdata/messages/message.rsa.enc.aes128.asc
vendored
Normal file
14
tests/testdata/messages/message.rsa.enc.aes128.asc
vendored
Normal 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-----
|
||||
14
tests/testdata/messages/message.rsa.enc.cam128.asc
vendored
Normal file
14
tests/testdata/messages/message.rsa.enc.cam128.asc
vendored
Normal 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-----
|
||||
14
tests/testdata/messages/message.rsa.enc.cast5.asc
vendored
Normal file
14
tests/testdata/messages/message.rsa.enc.cast5.asc
vendored
Normal 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-----
|
||||
14
tests/testdata/messages/message.rsa.enc.idea.asc
vendored
Normal file
14
tests/testdata/messages/message.rsa.enc.idea.asc
vendored
Normal 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-----
|
||||
Reference in New Issue
Block a user