tdnssec: fix compat with dnspython 1.16 - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 6d2aee18d0bc5b68bff4123855f2b77b7efa1f3b DIR parent 9fa666f1792b82bdd93d01752d1912076541f1f3 HTML Author: SomberNight <somber.night@protonmail.com> Date: Thu, 2 Jul 2020 11:12:38 +0200 dnssec: fix compat with dnspython 1.16 Diffstat: M contrib/requirements/requirements.… | 2 +- M electrum/dnssec.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) --- DIR diff --git a/contrib/requirements/requirements.txt b/contrib/requirements/requirements.txt t@@ -2,7 +2,7 @@ pyaes>=0.1a1 ecdsa>=0.14 qrcode protobuf>=3.12 -dnspython +dnspython<2.0 qdarkstyle<2.9 aiorpcx>=0.18,<0.19 aiohttp>=3.3.0,<4.0.0 DIR diff --git a/electrum/dnssec.py b/electrum/dnssec.py t@@ -35,6 +35,7 @@ # import sys import time import struct +import hashlib import dns.name t@@ -166,10 +167,23 @@ def python_validate_rrsig(rrset, rrsig, keys, origin=None, now=None): raise ValidationFailure('verify failure') +class PyCryptodomexHashAlike: + def __init__(self, hashlib_func): + self._hash = hashlib_func + def new(self): + return self._hash() + + # replace validate_rrsig dns.dnssec._validate_rrsig = python_validate_rrsig dns.dnssec.validate_rrsig = python_validate_rrsig dns.dnssec.validate = dns.dnssec._validate +dns.dnssec._have_ecdsa = True +dns.dnssec.MD5 = PyCryptodomexHashAlike(hashlib.md5) +dns.dnssec.SHA1 = PyCryptodomexHashAlike(hashlib.sha1) +dns.dnssec.SHA256 = PyCryptodomexHashAlike(hashlib.sha256) +dns.dnssec.SHA384 = PyCryptodomexHashAlike(hashlib.sha384) +dns.dnssec.SHA512 = PyCryptodomexHashAlike(hashlib.sha512)