diff options
| author | J08nY | 2017-06-21 14:27:26 +0200 |
|---|---|---|
| committer | J08nY | 2017-06-21 14:27:26 +0200 |
| commit | b7de98b7eb78087107bd0f264e07f3729f10ff49 (patch) | |
| tree | 34bc68c6bc2fb63129700432391b825a1604a58b /src | |
| parent | 13877fb280bc9b7ec2ab29695d4ff71d0f791e98 (diff) | |
| download | mailman-pgp-b7de98b7eb78087107bd0f264e07f3729f10ff49.tar.gz mailman-pgp-b7de98b7eb78087107bd0f264e07f3729f10ff49.tar.zst mailman-pgp-b7de98b7eb78087107bd0f264e07f3729f10ff49.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman_pgp/pgp/mime.py | 10 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/__init__.py | 0 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/data/mime_signed.eml | 45 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/data/mime_signed_invalid.eml | 45 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/data/rsa_1024.priv.asc | 33 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/data/rsa_1024.pub.asc | 20 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/test_mime.py | 66 |
7 files changed, 217 insertions, 2 deletions
diff --git a/src/mailman_pgp/pgp/mime.py b/src/mailman_pgp/pgp/mime.py index 5641a34..f064a40 100644 --- a/src/mailman_pgp/pgp/mime.py +++ b/src/mailman_pgp/pgp/mime.py @@ -58,7 +58,7 @@ class MIMEWrapper: """ if not self._is_mime(): return False - first_part = str(self.msg.get_payload(0)) + first_part = self.msg.get_payload(0).as_string() first_type = self.msg.get_payload(0).get_content_type() second_type = self.msg.get_payload(1).get_content_type() content_subtype = self.msg.get_content_subtype() @@ -77,11 +77,14 @@ class MIMEWrapper: :param key: :return: """ - clear_text = str(self.msg.get_payload(0)) + clear_text = self.msg.get_payload(0).as_string() sig_text = self.msg.get_payload(1).get_payload() signature = PGPSignature.from_blob(sig_text) return key.verify(clear_text, signature) + def sign(self): + pass + def decrypt(self, key: PGPKey): """ @@ -91,3 +94,6 @@ class MIMEWrapper: msg_text = self.msg.get_payload(1).get_payload() msg = PGPMessage.from_blob(msg_text) return key.decrypt(msg) + + def encrypt(self): + pass diff --git a/src/mailman_pgp/pgp/tests/__init__.py b/src/mailman_pgp/pgp/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/mailman_pgp/pgp/tests/__init__.py diff --git a/src/mailman_pgp/pgp/tests/data/mime_signed.eml b/src/mailman_pgp/pgp/tests/data/mime_signed.eml new file mode 100644 index 0000000..c81ecf5 --- /dev/null +++ b/src/mailman_pgp/pgp/tests/data/mime_signed.eml @@ -0,0 +1,45 @@ +To: nobody@example.org +From: RSA 1024b example <RSA-1024b@example.org> +Subject: Some subject. +Message-ID: <76a591ed-bfc4-d08b-73d3-fc2489148fd7@example.org> +Date: Wed, 21 Jun 2017 13:50:59 +0200 +User-Agent: Mutt/1.7.2 (2016-11-26) +MIME-Version: 1.0 +Content-Type: multipart/signed; micalg=pgp-sha256; + protocol="application/pgp-signature"; + boundary="haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj" + +This is an OpenPGP/MIME signed message (RFC 4880 and 3156) +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj +Content-Type: multipart/mixed; boundary="A8WMQ249PdQmpiQhW1ELOnL2UctI16T1g"; + protected-headers="v1" +From: RSA 1024b example <RSA-1024b@example.org> +To: nobody@example.org +Message-ID: <76a591ed-bfc4-d08b-73d3-fc2489148fd7@example.org> +Subject: Some subject. + +--A8WMQ249PdQmpiQhW1ELOnL2UctI16T1g +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: quoted-printable + +Some signed text. + + +--A8WMQ249PdQmpiQhW1ELOnL2UctI16T1g-- + +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: OpenPGP digital signature +Content-Disposition: attachment; filename="signature.asc" + +-----BEGIN PGP SIGNATURE----- + +iMoEAQEIADQWIQTUqUiGscoglqZFjlxH8QwIeIS3WAUCWUpjIBYccnNhLTEwMjRi +QGV4YW1wbGUub3JnAAoJEEfxDAh4hLdYb8wD/0AlaGxAhVGQqrXBuVXSDm4c49VI +6+DG8cMOCZEin6P96hrLbs4SAm61xivJHPueIRRQ1PfWTcElPn97WuQ48e+/5hhw +CZevF5CmyODGfriC78LwLRRvq2nF5n9iRww0lINPDyqrBr3mdY8QG+s8qBkTi7IG +dBBQH0jA6p2OJV72 +=1tln +-----END PGP SIGNATURE----- + +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj-- diff --git a/src/mailman_pgp/pgp/tests/data/mime_signed_invalid.eml b/src/mailman_pgp/pgp/tests/data/mime_signed_invalid.eml new file mode 100644 index 0000000..5e86842 --- /dev/null +++ b/src/mailman_pgp/pgp/tests/data/mime_signed_invalid.eml @@ -0,0 +1,45 @@ +To: nobody@example.org +From: RSA 1024b example <RSA-1024b@example.org> +Subject: Some subject. +Message-ID: <76a591ed-bfc4-d08b-73d3-fc2489148fd7@example.org> +Date: Wed, 21 Jun 2017 13:50:59 +0200 +User-Agent: Mutt/1.7.2 (2016-11-26) +MIME-Version: 1.0 +Content-Type: multipart/signed; micalg=pgp-sha256; + protocol="application/pgp-signature"; + boundary="haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj" + +This is an OpenPGP/MIME signed message (RFC 4880 and 3156) +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj +Content-Type: multipart/mixed; boundary="A8WMQ249PdQmpiQhW1ELOnL2UctI16T1g"; + protected-headers="v1" +From: RSA 1024b example <RSA-1024b@example.org> +To: nobody@example.org +Message-ID: <76a591ed-bfc4-d08b-73d3-fc2489148fd7@example.org> +Subject: Some subject. + +--A8WMQ249PdQmpiQhW1ELOnL2UctI16T1g +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: quoted-printable + +Some signed text. With some INVALID text added!! + + +--A8WMQ249PdQmpiQhW1ELOnL2UctI16T1g-- + +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: OpenPGP digital signature +Content-Disposition: attachment; filename="signature.asc" + +-----BEGIN PGP SIGNATURE----- + +iMoEAQEIADQWIQTUqUiGscoglqZFjlxH8QwIeIS3WAUCWUpjIBYccnNhLTEwMjRi +QGV4YW1wbGUub3JnAAoJEEfxDAh4hLdYb8wD/0AlaGxAhVGQqrXBuVXSDm4c49VI +6+DG8cMOCZEin6P96hrLbs4SAm61xivJHPueIRRQ1PfWTcElPn97WuQ48e+/5hhw +CZevF5CmyODGfriC78LwLRRvq2nF5n9iRww0lINPDyqrBr3mdY8QG+s8qBkTi7IG +dBBQH0jA6p2OJV72 +=1tln +-----END PGP SIGNATURE----- + +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj-- diff --git a/src/mailman_pgp/pgp/tests/data/rsa_1024.priv.asc b/src/mailman_pgp/pgp/tests/data/rsa_1024.priv.asc new file mode 100644 index 0000000..e8f4c12 --- /dev/null +++ b/src/mailman_pgp/pgp/tests/data/rsa_1024.priv.asc @@ -0,0 +1,33 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +lQHYBFlKWqQBBADY8dCIub6x4tcFS3SmWW1r5ctwldFixkLz8LpBdgpc+zt7iWZI +XvVWH9GYgTzgE+qEAVJcvQDG7/cX6zTopkkGEUmnwBgEFpc7Xi0D+/GYC23XleQk +IF/R2Mf0AW3FBx/UxK0kIkYfTelkuZBrag83iLh3yKXkcLm1T010eGbTWQARAQAB +AAP/ayABKrqZrQpHxfAMEmZ/TzPCIP6BzeX7wqxAtLlehapzJV3kGWF2gQgmPcm3 +byi2eWeTrYKQwytUVsXIswcFcCY1Fv6NkntMSqc6VJzGhvjKE9CTNJmgSjHlILMW +Ma/9TzhxH2DT9tNMgOEN3+FoKRqjlLrhO/OiXqYZJdkXU+8CAOQin6DGnn+qvjlN +5zw1GIpmWBt9b1S/WEqKaG1t4D/V0m0pAJBqeUbSC6MonQLA9pmIK/LbetUKRwM/ +xLNRMs8CAPNxR4NY73YIfSnlGRPdZHmOq4wMtqXYtoN1qZruHcXsrojcKHV72n8y +Hb3R+LEKVjky95RKeKGowousIhGYQVcCAKsWtTWQA/VMW2V+ydzFHZHN0xwC9eTc +uhs7G1qAqJR2POCq/0Cr3W4nXnbYSAr9wHal/YUuIKr54vNbPlXp6xqf/rQpUlNB +IDEwMjRiIGV4YW1wbGUgPFJTQS0xMDI0YkBleGFtcGxlLm9yZz6IzgQTAQgAOBYh +BNSpSIaxyiCWpkWOXEfxDAh4hLdYBQJZSlqkAhsDBQsJCAcCBhUICQoLAgQWAgMB +Ah4BAheAAAoJEEfxDAh4hLdYbQIEALBwJUxkBGJYlP5kOZYAgQHw6+rwIgdXAoPk +ldwcGPhvlBEocRYx+5KUYrx7W352dv+AgxSZ590JL7JGvWJDvMxoZGCJiRvJ7+Ve +luKRH167wT8H4hxftBJqzorTU4eyPzG8bFneuag5dw+81DdngXjWRCorEHEdaQjc +sfvVEmnhnQHYBFlKWqQBBADXLjeg+K0ZAuchhNkvMnfb8TlKoc1t1lH94unoqoj3 +L5Srf3XSo1fmuEBNr1nc5BLyH0tPDJZyuVCypfY4en9uaGvWO0U4t/OUiIWqPjBm +XbjZWDdGKksb0cQNy13cvE57EmirbuVcXCE0OdU8lcbopN2wnecKOxLKK9PaLBZ6 +9wARAQABAAP+NyRiYA9p+GdciKPtLiGeQpA6EMyPAs8x2sB8FcIh8EpSrHIw5OYz +/+2GmQHPIwKVclOfrmW45jRkICvUgZuurMmMrnDu63UT/9Pm+4EiUkPFnKfAgYFm +XwWf2SklsoHCFT2WQ31WCp/hZxWucYqfPM/5ZsE+EAToK+C8BnMicI0CAOAUhruY +JVh/7u6ES7xI6Hd7yHmU6rLr7oP2Z8cILirt5+1FgOP/qPdVEK9UGShbBcjfA+8W +u4LISyuvCm8vuyMCAPXVJmTdmJjzBvP7BZe+HbDzWfhPCN+BvepGi3DQdHonLU2t +IVOcMQsu0raaLevZ19nCKeMrOoAaIhCdjJUBGB0B/iSErQY+sNUAbjsW0zWovY2u +e+0TBMDkO3OZCFKxCr/7mEuIfsAENXvDwAmx/YDklMwN8zgUAc5BqObGtRE7BYSg +n4i2BBgBCAAgFiEE1KlIhrHKIJamRY5cR/EMCHiEt1gFAllKWqQCGwwACgkQR/EM +CHiEt1gOwQP7BuyH2oKuWPAXcVrJdl3P3fIqvm4JzKRjXCVA9j5QOdihH1W5rZFC +x3J+bUvKa1QJ1NuHoU9gYvR2NPs+CpMlTJ2wg7ksgtddlC9lsVi1ijvjJCugveBh +a/CQJt7Cl6uDkifPsD5kxyUTecmnVfYZB6Fb/nrZxJ5Cb1dKPGixDpw= +=e2xw +-----END PGP PRIVATE KEY BLOCK----- diff --git a/src/mailman_pgp/pgp/tests/data/rsa_1024.pub.asc b/src/mailman_pgp/pgp/tests/data/rsa_1024.pub.asc new file mode 100644 index 0000000..5bc0d34 --- /dev/null +++ b/src/mailman_pgp/pgp/tests/data/rsa_1024.pub.asc @@ -0,0 +1,20 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mI0EWUpapAEEANjx0Ii5vrHi1wVLdKZZbWvly3CV0WLGQvPwukF2Clz7O3uJZkhe +9VYf0ZiBPOAT6oQBUly9AMbv9xfrNOimSQYRSafAGAQWlzteLQP78ZgLbdeV5CQg +X9HYx/QBbcUHH9TErSQiRh9N6WS5kGtqDzeIuHfIpeRwubVPTXR4ZtNZABEBAAG0 +KVJTQSAxMDI0YiBleGFtcGxlIDxSU0EtMTAyNGJAZXhhbXBsZS5vcmc+iM4EEwEI +ADgWIQTUqUiGscoglqZFjlxH8QwIeIS3WAUCWUpapAIbAwULCQgHAgYVCAkKCwIE +FgIDAQIeAQIXgAAKCRBH8QwIeIS3WG0CBACwcCVMZARiWJT+ZDmWAIEB8Ovq8CIH +VwKD5JXcHBj4b5QRKHEWMfuSlGK8e1t+dnb/gIMUmefdCS+yRr1iQ7zMaGRgiYkb +ye/lXpbikR9eu8E/B+IcX7QSas6K01OHsj8xvGxZ3rmoOXcPvNQ3Z4F41kQqKxBx +HWkI3LH71RJp4biNBFlKWqQBBADXLjeg+K0ZAuchhNkvMnfb8TlKoc1t1lH94uno +qoj3L5Srf3XSo1fmuEBNr1nc5BLyH0tPDJZyuVCypfY4en9uaGvWO0U4t/OUiIWq +PjBmXbjZWDdGKksb0cQNy13cvE57EmirbuVcXCE0OdU8lcbopN2wnecKOxLKK9Pa +LBZ69wARAQABiLYEGAEIACAWIQTUqUiGscoglqZFjlxH8QwIeIS3WAUCWUpapAIb +DAAKCRBH8QwIeIS3WA7BA/sG7Ifagq5Y8BdxWsl2Xc/d8iq+bgnMpGNcJUD2PlA5 +2KEfVbmtkULHcn5tS8prVAnU24ehT2Bi9HY0+z4KkyVMnbCDuSyC112UL2WxWLWK +O+MkK6C94GFr8JAm3sKXq4OSJ8+wPmTHJRN5yadV9hkHoVv+etnEnkJvV0o8aLEO +nA== +=4olM +-----END PGP PUBLIC KEY BLOCK----- diff --git a/src/mailman_pgp/pgp/tests/test_mime.py b/src/mailman_pgp/pgp/tests/test_mime.py new file mode 100644 index 0000000..981259c --- /dev/null +++ b/src/mailman_pgp/pgp/tests/test_mime.py @@ -0,0 +1,66 @@ +# Copyright (C) 2017 Jan Jancar +# +# This file is a part of the Mailman PGP plugin. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see <http://www.gnu.org/licenses/>. + +"""""" +import unittest +from email import message_from_file + +from pgpy import PGPKey +from pkg_resources import resource_filename + +from mailman_pgp.pgp.mime import MIMEWrapper + + +class TestSigning(unittest.TestCase): + def setUp(self): + with open(resource_filename('mailman_pgp.pgp.tests', + 'data/mime_signed.eml')) as f: + self.signed = message_from_file(f) + with open(resource_filename('mailman_pgp.pgp.tests', + 'data/mime_signed_invalid.eml')) as f: + self.signed_invalid = message_from_file(f) + + self.pub, _ = PGPKey.from_file( + resource_filename('mailman_pgp.pgp.tests', + 'data/rsa_1024.pub.asc')) + self.priv, _ = PGPKey.from_file( + resource_filename('mailman_pgp.pgp.tests', + 'data/rsa_1024.priv.asc')) + self.wrapped = MIMEWrapper(self.signed) + self.wrapped_invalid = MIMEWrapper(self.signed_invalid) + + def test_is_signed(self): + self.assertTrue(self.wrapped.is_signed()) + self.assertTrue(self.wrapped_invalid.is_signed()) + + def test_sign(self): + pass + + def test_verify(self): + self.assertTrue(self.wrapped.verify(self.pub)) + self.assertFalse(self.wrapped_invalid.verify(self.pub)) + + +class TestEncryption(unittest.TestCase): + def test_is_encrypted(self): + pass + + def test_encrypt(self): + pass + + def test_decrypt(self): + pass |
