more test coverage

This commit is contained in:
Michael Greene
2016-04-21 16:48:58 -07:00
parent 2817059e8f
commit a893965ebe
7 changed files with 43 additions and 10 deletions

View File

@@ -535,7 +535,7 @@ class SKESessionKeyV4(SKESessionKey):
sk = self.__class__()
sk.header = copy.copy(self.header)
sk.s2k = copy.copy(self.s2k)
sk.ct = self.ct.copy()
sk.ct = self.ct[:]
return sk
@@ -1045,7 +1045,7 @@ class SKEData(Packet):
def __copy__(self):
skd = self.__class__()
skd.ct = self.ct.copy()
skd.ct = self.ct[:]
return skd
def parse(self, packet):

View File

@@ -41,7 +41,7 @@ class Header(_Header):
try:
self._tag = PacketTag(_tag)
except ValueError:
except ValueError: # pragma: no cover
self._tag = _tag
@property

View File

@@ -52,6 +52,7 @@ class TestPGPMessage(object):
ids = {
'test_load_from_file': [ os.path.basename(f) for f in params['msgfile'] ],
}
def test_load_from_file(self, msgfile):
# TODO: figure out a good way to verify that all went well here, because
# PGPy reorders signatures sometimes, and also unwraps compressed messages

View File

@@ -18,19 +18,16 @@ from pgpy import PGPSignature, PGPUID, PGPMessage, PGPKey
def sig():
return PGPSignature.from_file('tests/testdata/blocks/rsasignature.asc')
def uid():
return PGPUID.new('Abraham Lincoln', comment='Honest Abe', email='abraham.lincoln@whitehouse.gov')
def msg():
return PGPMessage.from_file('tests/testdata/messages/message.signed.asc')
def encmsg():
return PGPMessage.from_file('tests/testdata/messages/message.rsa.cast5.asc')
def key(fn):
key, _ = PGPKey.from_file(fn)
return key
def walk_obj(obj, prefix=""):
from enum import Enum
@@ -46,14 +43,15 @@ def walk_obj(obj, prefix=""):
_keys = glob.glob('tests/testdata/keys/*.1.pub.asc') + glob.glob('tests/testdata/keys/*.1.sec.asc')
_msgs = [ 'tests/testdata/messages/message.{}.asc'.format(f) for f in ['signed', 'rsa.cast5.no-mdc', 'rsa.dsa.pass.aes']]
class TestCopy(object):
params = {
'obj': [sig(), uid(), msg(), encmsg()] + [ key(fn) for fn in _keys ],
'obj': [sig(), uid()] + [ PGPMessage.from_file(m) for m in _msgs ] + [ key(fn) for fn in _keys ],
}
ids = {
'test_copy_obj': ['sig' , 'uid', 'msg', 'encmsg'] + [ '-'.join(os.path.basename(fn).split('.')[:3]) for fn in _keys ],
'test_copy_obj': ['sig' , 'uid'] + [ '-'.join(os.path.basename(fn).split('.')[:3]) for fn in _msgs ] + [ '-'.join(os.path.basename(fn).split('.')[:3]) for fn in _keys ],
}
@staticmethod

View File

@@ -500,6 +500,24 @@ class TestPGPKey(object):
with gpg_import('./keys/ecc.1.sec.asc'):
assert gpg_decrypt('./aemsg.asc', keyid='D01055FBCADD268E')
def test_encrypt_message_select_uid(self):
# generate a temporary key with two UIDs, then encrypt a message
u1 = PGPUID.new('UID One')
u2 = PGPUID.new('UID Two')
k = PGPKey.new(PubKeyAlgorithm.RSAEncryptOrSign, 512)
flags = {KeyFlags.Certify, KeyFlags.Sign, KeyFlags.EncryptCommunications, KeyFlags.EncryptStorage}
k.add_uid(u1, usage=flags, hashes=[HashAlgorithm.SHA1], ciphers=[SymmetricKeyAlgorithm.AES128])
k.add_uid(u2, usage=flags, hashes=[HashAlgorithm.SHA1], ciphers=[SymmetricKeyAlgorithm.Camellia128])
emsg = k.pubkey.encrypt(PGPMessage.new('This message is about to be encrypted'), user='UID Two')
# assert that it was encrypted with Camellia128 and that we can decrypt it normally
assert emsg._sessionkeys[0].decrypt_sk(k._key)[0] == SymmetricKeyAlgorithm.Camellia128
assert k.decrypt(emsg).message == 'This message is about to be encrypted'
def test_sign_timestamp(self, sec):
with self.assert_warnings():
sig = sec.sign(None)

View File

@@ -338,6 +338,10 @@ class TestPGPKey(object):
with pytest.raises(ValueError):
rsa_sec.pubkey = rsa_pub
def test_set_pubkey_privkey(self, rsa_sec, targette_sec):
with pytest.raises(TypeError):
rsa_sec.pubkey = targette_sec
def test_add_subkey_to_pubkey(self, rsa_pub, temp_subkey):
with pytest.raises(PGPError):
rsa_pub.add_subkey(temp_subkey)

View File

@@ -0,0 +1,12 @@
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2
hQEMA+7gl6AXuXnKAQgA0erpM6LUcAWTc/wC9MLy3MnyGQMVBXl4CNM5Lzm3ON+Y
llBiqhoYMrPFH0iX5C5hnNlF1sgxyDhHefOaGz6EUIpHYHvfLwSQg/z78cHnA3RR
7D7C+tmJaGuBqs9B1VGNq++NrHRs8TKQF5PwAKaLotonJd+YbwgopHQxyO7uO65K
Q/LEcmHZpIWfvZXjx8bkbT2+947F2yPw7FrhYQpODDd83aArC/SOiuaRWTk+Nh8d
xsFxy6VQsi6Ro9iSwVNV8YCff9HJJSeOkM2Wq5lD2U8QdiDET4P5OEREwxu8K2Pu
6iqSCM+eXHj0PBgMVnc5+diEa86iOau17bgxibPwOck/V7hRa/icZmOSjiW9Xmf8
o/MLD4uUsUalXZBMwnLHbFD51I4BmVtgcqE3Ax4ixmjkVSJYR6TS0Q9WAQF6S0E6
=HhJw
-----END PGP MESSAGE-----