aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/pgp/wrapper.py
diff options
context:
space:
mode:
authorJ08nY2017-07-17 19:03:08 +0200
committerJ08nY2017-07-17 19:03:08 +0200
commit8fe73c6364c873e1bd52286353c3f79a4486127a (patch)
treeb6b51769fb2f45150a83be7d7231f60ed9b6b88a /src/mailman_pgp/pgp/wrapper.py
parent8de6bac71e3966d89523dbdb4449efe86af3586f (diff)
downloadmailman-pgp-8fe73c6364c873e1bd52286353c3f79a4486127a.tar.gz
mailman-pgp-8fe73c6364c873e1bd52286353c3f79a4486127a.tar.zst
mailman-pgp-8fe73c6364c873e1bd52286353c3f79a4486127a.zip
Diffstat (limited to 'src/mailman_pgp/pgp/wrapper.py')
-rw-r--r--src/mailman_pgp/pgp/wrapper.py111
1 files changed, 101 insertions, 10 deletions
diff --git a/src/mailman_pgp/pgp/wrapper.py b/src/mailman_pgp/pgp/wrapper.py
index 6e8a8f9..f5cc8e1 100644
--- a/src/mailman_pgp/pgp/wrapper.py
+++ b/src/mailman_pgp/pgp/wrapper.py
@@ -51,28 +51,56 @@ class PGPWrapper():
return self.default.get_payload()
def is_signed(self):
+ """
+ Whether this message is signed.
+
+ :return: If the message is signed.
+ :rtype: bool
+ """
return self.mime.is_signed() or self.inline.is_signed()
def has_signature(self):
+ """
+ Whether some parts of the message are signed.
+
+ :return: If some parts of the message are signed.
+ :rtype: bool
+ """
return self.mime.has_signature() or self.inline.has_signature()
def get_signed(self):
+ """
+ Get the signed content of the message.
+
+ :return: The signed contents of the message.
+ :rtype: Generator[str]
+ """
if self.mime.is_signed():
yield from self.mime.get_signed()
elif self.inline.is_signed():
yield from self.inline.get_signed()
def sign(self, key, **kwargs):
+ """
+ Sign a message with key.
+
+ :param key: The key to sign with.
+ :type key: pgpy.PGPKey
+ :param hash:
+ :type hash: HashAlgorithm
+ :return: The signed message.
+ :rtype: mailman.email.message.Message
+ """
return self.default.sign(key, **kwargs)
def verify(self, key):
"""
- Verify the signature of this message with key.
+ Verify the signatures of this message with key.
:param key: The key to verify with.
:type key: pgpy.PGPKey
- :return: The verified signature.
- :rtype: generator of pgpy.types.SignatureVerification
+ :return: The verified signatures.
+ :rtype: Generator[pgpy.types.SignatureVerification]
"""
if self.mime.is_signed():
yield from self.mime.verify(key)
@@ -86,12 +114,34 @@ class PGPWrapper():
verification in self.verify(key))
def is_encrypted(self):
+ """
+ Whether the message is encrypted.
+
+ :return: If the message is encrypted.
+ :rtype: bool
+ """
return self.mime.is_encrypted() or self.inline.is_encrypted()
def has_encryption(self):
+ """
+ Whether some parts of the message are encrypted.
+
+ :return: If some parts of the message are encrypted.
+ :rtype: bool
+ """
return self.mime.has_encryption() or self.inline.has_encryption()
def encrypt(self, *keys, **kwargs):
+ """
+ Encrypt the message with key/s, using cipher.
+
+ :param keys: The key/s to encrypt with.
+ :type keys: pgpy.PGPKey
+ :param cipher: The symmetric cipher to use.
+ :type cipher: SymmetricKeyAlgorithm
+ :return: The encrypted message.
+ :rtype: mailman.email.message.Message
+ """
return self.default.encrypt(*keys, **kwargs)
def decrypt(self, key):
@@ -101,17 +151,63 @@ class PGPWrapper():
:param key: The key to decrypt with.
:type key: pgpy.PGPKey
:return: The decrypted message.
- :rtype: PGPMessage
+ :rtype: mailman.email.message.Message
"""
if self.mime.is_encrypted():
return self.mime.decrypt(key)
elif self.inline.is_encrypted():
return self.inline.decrypt(key)
+ def sign_encrypt(self, key, *keys, **kwargs):
+ """
+ Sign and encrypt the message, in one go.
+
+ :param key: The key to sign with.
+ :type key: pgpy.PGPKey
+ :param keys: The key/s to encrypt with.
+ :type keys: pgpy.PGPKey
+ :param hash:
+ :type hash: pgpy.constants.HashAlgorithm
+ :param cipher:
+ :type cipher: pgpy.constants.SymmetricKeyAlgorithm
+ :return: The signed + encrypted message.
+ :rtype: mailman.email.message.Message
+ """
+ return self.default.sign_encrypt(key, *keys, **kwargs)
+
+ def sign_then_encrypt(self, key, *keys, **kwargs):
+ """
+ Sign then encrypt the message.
+
+ :param key: The key to sign with.
+ :type key: pgpy.PGPKey
+ :param keys: The key/s to encrypt with.
+ :type keys: pgpy.PGPKey
+ :param hash:
+ :type hash: pgpy.constants.HashAlgorithm
+ :param cipher:
+ :type cipher: pgpy.constants.SymmetricKeyAlgorithm
+ :return: The signed + encrypted message.
+ :rtype: mailman.email.message.Message
+ """
+ return self.default.sign_then_encrypt(key, *keys, **kwargs)
+
def is_keys(self):
+ """
+ Whether the message is all keys (all parts).
+
+ :return: If the message is keys.
+ :rtype: bool
+ """
return self.mime.is_keys() or self.inline.is_keys()
def has_keys(self):
+ """
+ Whether the message contains public or private keys.
+
+ :return: If the message contains keys.
+ :rtype: bool
+ """
return self.mime.has_keys() or self.inline.has_keys()
def keys(self):
@@ -119,14 +215,9 @@ class PGPWrapper():
Get the collection of keys in this message.
:return: A collection of keys.
+ :rtype: Generator[pgpy.PGPKey]
"""
if self.mime.has_keys():
yield from self.mime.keys()
elif self.inline.has_keys():
yield from self.inline.keys()
-
- def sign_encrypt(self, key, *keys, **kwargs):
- return self.default.sign_encrypt(key, *keys, **kwargs)
-
- def sign_then_encrypt(self, key, *keys, **kwargs):
- return self.default.sign_then_encrypt(key, *keys, **kwargs)