From b8722f4a66ef22ea0bc65a13dd630f8ee582cac9 Mon Sep 17 00:00:00 2001 From: Stuart D Gathman Date: Sat, 21 Feb 2015 20:06:36 -0500 Subject: [PATCH] Add Diane Trout's addition sig validation tests. --- dkim/tests/test_dkim.py | 31 +++++++++++++++++++++++++++++++ dkim/util.py | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/dkim/tests/test_dkim.py b/dkim/tests/test_dkim.py index ea79317..30062d4 100644 --- a/dkim/tests/test_dkim.py +++ b/dkim/tests/test_dkim.py @@ -18,6 +18,7 @@ import os.path import unittest +import time import dkim @@ -224,6 +225,36 @@ b/mPfjC0QJTocVBq6Za/PlzfV+Py92VaCak19F4WrbVTK5Gg5tW220MCAwEAAQ== sigerror = True self.assertTrue(sigerror) + def test_validate_signature_fields(self): + sig = {b'v': b'1', + b'a': b'rsa-sha256', + b'b': b'K/UUOt8lCtgjp3kSTogqBm9lY1Yax/NwZ+bKm39/WKzo5KYe3L/6RoIA/0oiDX4kO\n \t Qut49HCV6ZUe6dY9V5qWBwLanRs1sCnObaOGMpFfs8tU4TWpDSVXaNZAqn15XVW0WH\n \t EzOzUfVuatpa1kF4voIgSbmZHR1vN3WpRtcTBe/I=', + b'bh': b'n0HUwGCP28PkesXBPH82Kboy8LhNFWU9zUISIpAez7M=', + b'c': b'simple/simple', + b'd': b'kitterman.com', + b'h': b'From:To:Subject:Date:Cc:MIME-Version:Content-Type:\n \t Content-Transfer-Encoding:Message-Id', + b's': b'2007-00', + b't': b'1299525798'} + dkim.validate_signature_fields(sig) + # try new version + sigVer = sig.copy() + sigVer[b'v'] = 2 + self.assertRaises(dkim.ValidationError, dkim.validate_signature_fields, sigVer) + # try with x + sigX = sig.copy() + sigX[b'x'] = b'1399525798' + dkim.validate_signature_fields(sig) + # try with late t + sigX[b't'] = b'1400000000' + self.assertRaises(dkim.ValidationError, dkim.validate_signature_fields, sigX) + # try without t + now = int(time.time()) + sigX[b'x'] = str(now+400000).encode('ascii') + dkim.validate_signature_fields(sigX) + # try when expired a day ago + sigX[b'x'] = str(now - 24*3600).encode('ascii') + self.assertRaises(dkim.ValidationError, dkim.validate_signature_fields, sigX) + def test_suite(): from unittest import TestLoader return TestLoader().loadTestsFromName(__name__) diff --git a/dkim/util.py b/dkim/util.py index 0be290b..5332127 100644 --- a/dkim/util.py +++ b/dkim/util.py @@ -52,7 +52,7 @@ def parse_tag_value(tag_list): Interprets the syntax specified by RFC4871 section 3.2. Assumes that folding whitespace is already unfolded. - @param tag_list: A string containing a DKIM Tag=Value list. + @param tag_list: A bytes string containing a DKIM Tag=Value list. """ tags = {} tag_specs = tag_list.strip().split(b';')