diff options
Diffstat (limited to 'src/mailman_pgp/pgp/tests')
3 files changed, 226 insertions, 0 deletions
diff --git a/src/mailman_pgp/pgp/tests/data/messages/mime_multisig.eml b/src/mailman_pgp/pgp/tests/data/messages/mime_multisig.eml new file mode 100644 index 0000000..555411f --- /dev/null +++ b/src/mailman_pgp/pgp/tests/data/messages/mime_multisig.eml @@ -0,0 +1,65 @@ +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, pgp-sha256"; + protocol="multipart/mixed"; + 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: multipart/mixed; boundary="abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs" + +--abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs +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----- + +--abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs +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----- + +--abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs-- + +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj-- diff --git a/src/mailman_pgp/pgp/tests/data/messages/mime_multisig_invalid.eml b/src/mailman_pgp/pgp/tests/data/messages/mime_multisig_invalid.eml new file mode 100644 index 0000000..a13c1df --- /dev/null +++ b/src/mailman_pgp/pgp/tests/data/messages/mime_multisig_invalid.eml @@ -0,0 +1,65 @@ +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, pgp-sha256"; + protocol="multipart/mixed"; + 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: multipart/mixed; boundary="abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs" + +--abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs +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----- + +--abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs +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----- + +--abjqkjsfwqsfa546qw2wfq6sdq2sqwr56qqs-- + +--haWP9JQ7TiajUxWjooGlinHgq3IhJGnaj-- diff --git a/src/mailman_pgp/pgp/tests/test_mime_multisig.py b/src/mailman_pgp/pgp/tests/test_mime_multisig.py new file mode 100644 index 0000000..2c02a97 --- /dev/null +++ b/src/mailman_pgp/pgp/tests/test_mime_multisig.py @@ -0,0 +1,96 @@ +# 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/>. + +"""Tests for the MultiSig wrapper.""" +from parameterized import parameterized + +from mailman_pgp.pgp.mime_multisig import MIMEMultiSigWrapper +from mailman_pgp.pgp.tests.base import load_key, load_message, WrapperTestCase + + +class MultiSigWrapperTestCase(WrapperTestCase): + wrapper = MIMEMultiSigWrapper + + +class TestSigning(MultiSigWrapperTestCase): + @parameterized.expand([ + (load_message('mime_signed.eml'), + False), + (load_message('mime_signed_invalid.eml'), + False), + (load_message('mime_multisig.eml'), + True), + (load_message('mime_multisig_invalid.eml'), + True), + (load_message('clear.eml'), + False), + (load_message('clear_multipart.eml'), + False) + ]) + def test_is_signed(self, message, signed): + self.is_signed(message, signed) + + @parameterized.expand([ + (load_message('mime_signed.eml'), + False), + (load_message('mime_signed_invalid.eml'), + False), + (load_message('mime_multisig.eml'), + True), + (load_message('mime_multisig_invalid.eml'), + True), + (load_message('clear.eml'), + False), + (load_message('clear_multipart.eml'), + False) + ]) + def test_has_signature(self, message, has): + self.has_signature(message, has) + + @parameterized.expand([ + (load_message('clear.eml'), + load_key('rsa_1024.priv.asc')), + (load_message('clear_multipart.eml'), + load_key('ecc_p256.priv.asc')) + ]) + def test_sign(self, message, key): + self.sign(message, key) + + @parameterized.expand([ + (load_message('clear.eml'), + load_key('rsa_1024.priv.asc'), + load_key('rsa_1024.pub.asc')), + (load_message('clear_multipart.eml'), + load_key('ecc_p256.priv.asc'), + load_key('ecc_p256.pub.asc')), + (load_message('mime_multisig.eml'), + load_key('ecc_p256.priv.asc'), + load_key('ecc_p256.pub.asc')) + ]) + def test_sign_verify(self, message, priv, pub): + self.sign_verify(message, priv, pub) + + @parameterized.expand([ + (load_message('mime_multisig.eml'), + load_key('rsa_1024.pub.asc'), + True), + (load_message('mime_multisig_invalid.eml'), + load_key('rsa_1024.pub.asc'), + False) + ]) + def test_verify(self, message, key, valid): + self.verify(message, key, valid) |
