'Convert a cookie string into a the tuple form returned by
_get_raw_xsrf_token.'

def _decode_xsrf_token(self, cookie):

    try:
        m = _signed_value_version_re.match(utf8(cookie))
        if m:
            version = int(m.group(1))
            if (version == 2):
                (_, mask, masked_token, timestamp) = cookie.split('|')
                mask = binascii.a2b_hex(utf8(mask))
                token = _websocket_mask(mask, binascii.a2b_hex(utf8(masked_token)))
                timestamp = int(timestamp)
                return (version, token, timestamp)
            else:
                raise Exception('Unknown    xsrf    cookie    version')
        else:
            version = 1
            try:
                token = binascii.a2b_hex(utf8(cookie))
            except (binascii.Error, TypeError):
                token = utf8(cookie)
            timestamp = int(time.time())
            return (version, token, timestamp)
    except Exception:
        gen_log.debug('Uncaught    exception    in    _decode_xsrf_token', exc_info=True)
        return (None, None, None)
