public virtual SessionToken UnprotectToken(string token, string purpose)
{
Requires.NotNullOrEmpty(token, "token");
Requires.NotNullOrEmpty(purpose, "purpose");
byte[] encodedToken = Unprotect(token, purpose);
return SessionToken.FromEncodedToken(encodedToken);
}