From 67b3fdc4f0d4b164dc6c3abc4d0ba85f388d0f14 Mon Sep 17 00:00:00 2001 From: William Grant Date: Sat, 19 Mar 2011 21:41:52 +1100 Subject: [PATCH] Port dkimsign.py. --- dkimsign.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/dkimsign.py b/dkimsign.py index a17fbc8..5060240 100644 --- a/dkimsign.py +++ b/dkimsign.py @@ -3,11 +3,11 @@ # This software is provided 'as-is', without any express or implied # warranty. In no event will the author be held liable for any damages # arising from the use of this software. -# +# # Permission is granted to anyone to use this software for any purpose, # including commercial applications, and to alter it and redistribute it # freely, subject to the following restrictions: -# +# # 1. The origin of this software must not be misrepresented; you must not # claim that you wrote the original software. If you use this software # in a product, an acknowledgment in the product documentation would be @@ -15,30 +15,40 @@ # 2. Altered source versions must be plainly marked as such, and must not be # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. -# +# # Copyright (c) 2008 Greg Hewgill http://hewgill.com +# +# This has been modified from the original software. +# Copyright (c) 2011 William Grant + +from __future__ import print_function import sys import dkim if len(sys.argv) < 4 or len(sys.argv) > 5: - print >>sys.stderr, "Usage: dkimsign.py selector domain privatekeyfile [identity]" + print("Usage: dkimsign.py selector domain privatekeyfile [identity]", file=sys.stderr) sys.exit(1) -selector = sys.argv[1] -domain = sys.argv[2] +if sys.version_info[0] >= 3: + # Make sys.stdin and stdout binary streams. + sys.stdin = sys.stdin.detach() + sys.stdout = sys.stdout.detach() + +selector = sys.argv[1].encode('utf-8') +domain = sys.argv[2].encode('utf-8') privatekeyfile = sys.argv[3] if len(sys.argv) > 5: - identity = sys.argv[4] + identity = sys.argv[4].encode('utf-8') else: identity = None message = sys.stdin.read() try: - sig = dkim.sign(message, selector, domain, open(privatekeyfile, "r").read(), identity = identity) + sig = dkim.sign(message, selector, domain, open(privatekeyfile, "rb").read(), identity = identity) sys.stdout.write(sig) sys.stdout.write(message) -except Exception, e: - print >>sys.stderr, e +except Exception as e: + print(e, file=sys.stderr) sys.stdout.write(message)