From e8ee183a7fce5ac96628e8227173171f0f0f3982 Mon Sep 17 00:00:00 2001 From: Scott Kitterman Date: Sat, 2 Nov 2019 11:16:13 -0400 Subject: [PATCH] Async version of dkimverify to demonstrate asyncio. --- dkimverify_async.py | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 dkimverify_async.py diff --git a/dkimverify_async.py b/dkimverify_async.py new file mode 100644 index 0000000..a502700 --- /dev/null +++ b/dkimverify_async.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +# 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 +# appreciated but is not required. +# 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 asyncio +import dkim + + +if sys.version_info[0] >= 3: + # Make sys.stdin a binary stream. + sys.stdin = sys.stdin.detach() + +message = sys.stdin.read() + +async def main(): + res = await dkim.verify_async(message) + return res + + +if __name__ == "__main__": + res = asyncio.run(main()) + if not res: + print("signature verification failed") + sys.exit(1) + print("signature ok") +