public bool Validate(string cookie, out byte[] data)
{
data = null;
try
{
var versionedCookieData = Convert.FromBase64String(UnescapeCookie(cookie));
if (versionedCookieData.Length == 0 || versionedCookieData[0] != 0)
{
return false;
}
var cookieData = new byte[versionedCookieData.Length - 1];
Buffer.BlockCopy(versionedCookieData, 1, cookieData, 0, cookieData.Length);
if (!_validation.Validate(cookieData))
{
return false;
}
cookieData = _validation.StripSignature(cookieData);
cookieData = _encryption.Decrypt(cookieData);
data = cookieData;
return true;
}
catch
{
return false;
}
}