Tres Seaver
2012-03-18 8f1fc8c3b5a6b5f7e205f4d7e088ff607d846e31
Py3k compatible hash digest manipulation.
1 files modified
17 ■■■■ changed files
repoze/who/_auth_tkt.py 17 ●●●● patch | view | raw | blame | history
repoze/who/_auth_tkt.py
@@ -186,20 +186,27 @@
    tokens = maybe_encode(tokens)
    user_data = maybe_encode(user_data)
    digest0 = md5(
        encode_ip_timestamp(ip, timestamp) + secret + userid + '\0'
        + tokens + '\0' + user_data).hexdigest()
    digest = md5(digest0 + secret).hexdigest()
        encode_ip_timestamp(ip, timestamp) + secret + userid + b'\0'
        + tokens + b'\0' + user_data).hexdigest()
    digest = md5(maybe_encode(digest0) + secret).hexdigest()
    return digest
if type(chr(1)) == type(b''):
    def ints2bytes(ints):
        return b''.join(map(chr, ints))
else: #pragma NO COVER Python >= 3.0
    def ints2bytes(ints):
        return bytes(ints)
def encode_ip_timestamp(ip, timestamp):
    ip_chars = ''.join(map(chr, map(int, ip.split('.'))))
    ip_chars = ints2bytes(map(int, ip.split('.')))
    t = int(timestamp)
    ts = ((t & 0xff000000) >> 24,
          (t & 0xff0000) >> 16,
          (t & 0xff00) >> 8,
          t & 0xff)
    ts_chars = ''.join(map(chr, ts))
    ts_chars = ints2bytes(ts)
    return ip_chars + ts_chars