def _try_decode(s, charsets=('utf-8', 'koi8-r', 'cp1251')): for charset in charsets: try: return to_native(s, charset), charset except UnicodeDecodeError: pass return None, None
def test_dkim(): priv_key, pub_key = _generate_key(length=1024) DKIM_PARAMS = [ dict(key=NativeStringIO(to_native(priv_key)), selector='_dkim', domain='somewhere1.net'), dict(key=priv_key, selector='_dkim', domain='somewhere2.net'), # legacy key argument name dict(privkey=priv_key, selector='_dkim', domain='somewhere3.net'), ] if is_py26: load_email_charsets() for dkimparams in DKIM_PARAMS: message = Message(**common_email_data()) message.dkim(**dkimparams) # check DKIM header exist assert message.as_message()['DKIM-Signature'] #print(__name__, "type message.as_string()==", type(message.as_string())) #print(message.as_string()) #print(type(message.as_string())) #print(email.__file__) #print(email.charset.CHARSETS) #print('adding utf-8 charset...') #email.charset.add_charset('utf-8', email.charset.BASE64, email.charset.BASE64) #print(email.charset.CHARSETS) assert 'DKIM-Signature: ' in message.as_string() assert _check_dkim(message, pub_key)
def test_dkim_sign_twice(): # Test #44: # " if you put the open there and send more than one messages it fails # (the first works but the next will not if you dont seek(0) the dkim file first)" # Actually not. priv_key, pub_key = _generate_key(length=1024) message = Message(**common_email_data()) message.dkim(key=NativeStringIO(to_native(priv_key)), selector='_dkim', domain='somewhere.net') for n in range(2): message.subject = 'Test %s' % n assert _check_dkim(message, pub_key)
def deobsfucate(key, enc): dec = [] key = to_native(key) enc = base64.urlsafe_b64decode(enc) for i in range(len(enc)): key_c = key[i % len(key)] if is_py3: c1 = enc[i] else: c1 = ord(enc[i]) dec_c = chr((256 + c1 - ord(key_c)) % 256) dec.append(dec_c) return "".join(dec) assert 0
def get_sign(self, message): dkim_header = None try: # TODO: # pydkim module parses message and privkey on each signing # this is not optimal for our purposes # we need patch for pydkim or some another signing module dkim_header = dkim.sign(message=message, **self._sign_params) except: if self.ignore_sign_errors: logging.exception('Error signing message') #dkim_header = "X-DKIM-Signature-Failed: yes\r\n" else: raise return to_native(dkim_header)
def test_dkim(): priv_key, pub_key = _generate_key(length=1024) DKIM_PARAMS = [dict(key=NativeStringIO(to_native(priv_key)), selector='_dkim', domain='somewhere1.net'), dict(key=priv_key, selector='_dkim', domain='somewhere2.net'), # legacy key argument name dict(privkey=priv_key, selector='_dkim', domain='somewhere3.net'), ] if is_py26: load_email_charsets() for dkimparams in DKIM_PARAMS: message = Message(**common_email_data()) message.dkim(**dkimparams) # check DKIM header exist assert message.as_message()['DKIM-Signature'] #print(__name__, "type message.as_string()==", type(message.as_string())) #print(message.as_string()) #print(type(message.as_string())) #print(email.__file__) #print(email.charset.CHARSETS) #print('adding utf-8 charset...') #email.charset.add_charset('utf-8', email.charset.BASE64, email.charset.BASE64) #print(email.charset.CHARSETS) assert 'DKIM-Signature: ' in message.as_string() assert _check_dkim(message, pub_key)