public byte[] EncodeToken() { // Generate a nonce byte[] nonce = new byte[20]; _random.GetBytes(nonce); // Write the unencrypted token MemoryStream strm = new MemoryStream(); BinaryWriter writer = new BinaryWriter(strm); writer.Write(Version); writer.Write(nonce); // Write the nonce writer.Write(User.Identity.UserId); writer.Write(User.Identity.Email); writer.Write(User.Identity.DisplayName); writer.Write(String.Join("|", User.Identity.Roles)); writer.Write(Expires.Ticks); byte[] buf = strm.ToArray(); writer.Dispose(); return buf; }
public virtual string ProtectToken(SessionToken token, string purpose) { Requires.NotNull(token, "token"); Requires.NotNullOrEmpty(purpose, "purpose"); byte[] encoded = token.EncodeToken(); return Protect(encoded, purpose); }