Udpate README for async and tlsrpt support

This commit is contained in:
Scott Kitterman
2019-12-09 17:02:02 -05:00
parent f680dd879b
commit 166291857a
+38 -4
View File
@@ -7,7 +7,9 @@ http://hewgill.com/pydkim/
INTRODUCTION
dkimpy is a library that implements DKIM (DomainKeys Identified Mail) email
signing and verification.
signing and verification. Basic DKIM requirements are defined in RFC 6376:
https://tools.ietf.org/html/rfc6376
VERSION
@@ -24,13 +26,13 @@ needed for asyncio.
- Python 2.x >= 2.7, or Python 3.x >= 3.5. Recent versions have not been
tested on python < 2.7 or python3 < 3.5, but may still work on python2.6
and python 3.1 - 3.3.
and python 3.1 - 3.4.
- dnspython or pydns. dnspython is preferred if both are present and
installed to satisfy the DNS module requirement if neither are installed.
- argparse. Standard library in python2.7 and later.
- authres. Needed for ARC.
- PyNaCl. Needed for use of ed25519 capability.
- aiodns. Needed for asycnio (Required python3.5 or later)
- aiodns. Needed for asycnio (Requires python3.5 or later)
INSTALLATION
@@ -145,7 +147,7 @@ code 0 if the signature verifies successfully. Otherwise, it returns with exit
code 1.
As of version 0.6.0, dkimpy provides experimental support for ARC (Authenticated
Received Chain):
Received Chain). See RFC 8617 for the current version of ARC:
https://tools.ietf.org/html/rfc8617
@@ -154,6 +156,38 @@ arc_sign and arc_verify functions as well as an ARC class.
Both DKIM ed25519 and ARC are now considered stable (no longer experimantal).
ASYNC SUPPORT
As of version 1.0, an alternative to dkim.verify for use in an async
environment is provied. It requires aiodns, https://pypi.org/project/aiodns/.
Here is a simple example of dkim.verify_async usage:
>>> sys.stdin = sys.stdin.detach()
>>>
>>> async def main():
>>> res = await dkim.verify_async(message)
>>> return res
>>>
>>> if __name__ == "__main__":
>>> res = asyncio.run(main())
This feature requires python3.5 or newer.
As of version 1.0, the RFC 8460 tlsrpt service type is supported:
https://tools.ietf.org/html/rfc8460
A non-tlsrpt signed with a key record with s=tlsrpt won't verify. Since the
service type (s=) is optional in the DKIM public key record, it is not
required by RFC 8460. When checking for a tlsrpt signature, set the tlsrpt=
flag when verifying the signature:
>>> res = dkim.verify(smessage, tlsrpt='strict')
If tlsrpt='strict', only public key records with s=tlsrpt will be considered
valid. If set to tlsrpt=True, the service type is not required, but other
RFC 8460 requirements are applied.
FEEDBACK
Bug reports may be submitted to the bug tracker for the dkimpy project on