| | |
| | | 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 |
| | | |
| | | |