aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/pgp/inline.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman_pgp/pgp/inline.py')
-rw-r--r--src/mailman_pgp/pgp/inline.py47
1 files changed, 36 insertions, 11 deletions
diff --git a/src/mailman_pgp/pgp/inline.py b/src/mailman_pgp/pgp/inline.py
index 646d13a..d87b3da 100644
--- a/src/mailman_pgp/pgp/inline.py
+++ b/src/mailman_pgp/pgp/inline.py
@@ -16,16 +16,23 @@
# this program. If not, see <http://www.gnu.org/licenses/>.
"""Strict inline PGP message wrapper."""
-from email.message import Message
-from pgpy import PGPKey, PGPMessage
+from pgpy import PGPMessage
from pgpy.types import Armorable
from public import public
@public
class InlineWrapper:
- def __init__(self, msg: Message):
+ """Inline PGP wrapper."""
+
+ def __init__(self, msg):
+ """
+ Wrap the given message.
+
+ :param msg: The message to wrap.
+ :type msg: mailman.email.message.Message
+ """
self.msg = msg
def _is_inline(self):
@@ -45,32 +52,50 @@ class InlineWrapper:
def is_signed(self):
"""
+ Whether the message is inline signed (cleartext).
- :return:
+ :return: If the message is inline signed.
+ :rtype: bool
"""
+ # XXX: This doesnt handle non-cleartext signatures (gpg -s -a)
return self._is_inline() and self._has_armor('SIGNATURE')
def is_encrypted(self):
"""
+ Whether the message is inline encrypted.
- :return:
+ :return: If the message is inline encrypted.
+ :rtype: bool
"""
+ # XXX: This mistakes non-cleartext signature as encrypted.
return self._is_inline() and self._has_armor('MESSAGE')
- def verify(self, key: PGPKey):
+ def verify(self, key):
"""
+ Verify the signature of this message with key.
- :param key:
- :return:
+ :param key: The key to verify with.
+ :type key: pgpy.PGPKey
+ :return: The verified signature.
+ :rtype: pgpy.types.SignatureVerification
"""
message = PGPMessage.from_blob(self._as_string())
return key.verify(message)
- def decrypt(self, key: PGPKey):
+ def sign(self):
+ pass
+
+ def decrypt(self, key):
"""
+ Decrypt this message with key.
- :param key:
- :return:
+ :param key: The key to decrypt with.
+ :type key: pgpy.PGPKey
+ :return: The decrypted message.
+ :rtype: PGPMessage
"""
message = PGPMessage.from_blob(self._as_string())
return key.decrypt(message)
+
+ def encrypt(self):
+ pass