Comment 1 for bug 1839299

Revision history for this message
Cyril N. (cnicodeme) wrote :

Here's a quick fix in the meantime:

```
def patch_dkim():
    from dkim import get_txt, parse_tag_value, InvalidTagValueList, MessageFormatError, validate_signature_fields, re
    def new_verify(self,idx=0,dnsfunc=get_txt):
        sigheaders = [(x,y) for x,y in self.headers if x.lower() == b"dkim-signature"]
        if len(sigheaders) <= idx:
            return False

        # By default, we validate the first DKIM-Signature line found.
        try:
            sig = parse_tag_value(sigheaders[idx][1])
            self.signature_fields = sig
        except InvalidTagValueList as e:
            raise MessageFormatError(e)

        self.logger.debug("sig: %r" % sig)

        validate_signature_fields(sig)
        self.domain = sig[b'd']
        self.selector = sig[b's']

        include_headers = [x.lower() for x in re.split(br"\s*:\s*", sig[b'h'])]
        self.include_headers = tuple(include_headers)

        if b'c' not in sig:
            sig[b'c'] = b'simple/simple'

        return self.verify_sig(sig, include_headers, sigheaders[idx], dnsfunc)

    dkim.DKIM.verify = new_verify

patch_dkim()
```