Port dkimsign.py.

This commit is contained in:
William Grant
2011-03-19 21:41:52 +11:00
parent bc78c7d1d0
commit 67b3fdc4f0
+17 -7
View File
@@ -17,28 +17,38 @@
# 3. This notice may not be removed or altered from any source distribution. # 3. This notice may not be removed or altered from any source distribution.
# #
# Copyright (c) 2008 Greg Hewgill http://hewgill.com # Copyright (c) 2008 Greg Hewgill http://hewgill.com
#
# This has been modified from the original software.
# Copyright (c) 2011 William Grant <me@williamgrant.id.au>
from __future__ import print_function
import sys import sys
import dkim import dkim
if len(sys.argv) < 4 or len(sys.argv) > 5: 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) sys.exit(1)
selector = sys.argv[1] if sys.version_info[0] >= 3:
domain = sys.argv[2] # 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] privatekeyfile = sys.argv[3]
if len(sys.argv) > 5: if len(sys.argv) > 5:
identity = sys.argv[4] identity = sys.argv[4].encode('utf-8')
else: else:
identity = None identity = None
message = sys.stdin.read() message = sys.stdin.read()
try: 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(sig)
sys.stdout.write(message) sys.stdout.write(message)
except Exception, e: except Exception as e:
print >>sys.stderr, e print(e, file=sys.stderr)
sys.stdout.write(message) sys.stdout.write(message)