public string Protect(FormsAuthenticationCookie cookie) { if (cookie == null) { throw new ArgumentNullException(nameof(cookie)); } var unprotectedData = ConvertToBytes(cookie); var cryptoProvider = AspNetCryptoServiceProvider.GetCryptoServiceProvider(_options); var cryptoService = cryptoProvider.GetCryptoService(); byte[] protectedData = cryptoService.Protect(unprotectedData); return(CryptoUtil.BinaryToHex(protectedData)); }
private byte[] ConvertToBytes(FormsAuthenticationCookie data) { if (data == null) { throw new ArgumentNullException(nameof(data)); } using (var ticketBlobStream = new MemoryStream()) using (var ticketWriter = new SerializingBinaryWriter(ticketBlobStream)) { ticketWriter.Write((byte)1); ticketWriter.Write((byte)1); ticketWriter.Write(data.IssuedUtc.Ticks); ticketWriter.Write((byte)0xfe); ticketWriter.Write(data.ExpiresUtc.Ticks); ticketWriter.Write(data.IsPersistent); ticketWriter.WriteBinaryString(data.UserName ?? ""); ticketWriter.WriteBinaryString(data.UserData ?? ""); ticketWriter.WriteBinaryString(data.CookiePath ?? ""); ticketWriter.Write((byte)0xff); return(ticketBlobStream.ToArray()); } }