public static FormsAuthenticationTicket Deserialize(byte[] serializedTicket, int serializedTicketLength) { FormsAuthenticationTicket ticket; try { using (MemoryStream stream = new MemoryStream(serializedTicket)) { using (SerializingBinaryReader reader = new SerializingBinaryReader(stream)) { int version; DateTime issueDate; DateTime expirationDate; if (reader.ReadByte() != 1) { return(null); } version = reader.ReadByte(); int issueDateTimestamp = reader.ReadInt32(); issueDate = DateTimeExtend.FromUnixTime(issueDateTimestamp); int expirationTimestamp = reader.ReadInt32(); expirationDate = DateTimeExtend.FromUnixTime(expirationTimestamp); bool isPersistent = reader.ReadByte() == 1; if (reader.ReadByte() != 0xfe) { return(null); } string name = reader.ReadBinaryString(); string userData = reader.ReadBinaryString(); string cookiePath = reader.ReadBinaryString(); if (reader.ReadByte() != 0xff) { return(null); } if (stream.Position != serializedTicketLength) { return(null); } ticket = new FormsAuthenticationTicket(version, name, issueDate, expirationDate, isPersistent, userData, cookiePath); } } } catch { ticket = null; } return(ticket); }
public static AuthenticationTicket Deserialize(byte[] serializedTicket, int serializedTicketLength) { try { using (MemoryStream memoryStream = new MemoryStream(serializedTicket)) { using (SerializingBinaryReader serializingBinaryReader = new SerializingBinaryReader((Stream)memoryStream)) { if ((int)serializingBinaryReader.ReadByte() != 1) { return(null); } int version = (int)serializingBinaryReader.ReadByte(); DateTime issueDateUtc = new DateTime(serializingBinaryReader.ReadInt64(), DateTimeKind.Utc); if ((int)serializingBinaryReader.ReadByte() != 254) { return(null); } DateTime expirationUtc = new DateTime(serializingBinaryReader.ReadInt64(), DateTimeKind.Utc); string name = serializingBinaryReader.ReadBinaryString(); int userDataLength = serializingBinaryReader.ReadInt32(); byte[] userBinary = serializingBinaryReader.ReadBytes(userDataLength); User user = null; try { user = userBinary.BinaryDeserialize <User>(); } catch { return(null); } if ((int)serializingBinaryReader.ReadByte() != (int)byte.MaxValue || memoryStream.Position != (long)serializedTicketLength) { return(null); } else { return(new AuthenticationTicket(name, version, issueDateUtc, expirationUtc, user)); } } } } catch { return(null); } }
public static AuthenticationTicket Deserialize(byte[] serializedTicket, int serializedTicketLength) { try { using (MemoryStream memoryStream = new MemoryStream(serializedTicket)) { using (SerializingBinaryReader serializingBinaryReader = new SerializingBinaryReader((Stream)memoryStream)) { if ((int)serializingBinaryReader.ReadByte() != 1) return null; int version = (int)serializingBinaryReader.ReadByte(); DateTime issueDateUtc = new DateTime(serializingBinaryReader.ReadInt64(), DateTimeKind.Utc); if ((int)serializingBinaryReader.ReadByte() != 254) return null; DateTime expirationUtc = new DateTime(serializingBinaryReader.ReadInt64(), DateTimeKind.Utc); string name = serializingBinaryReader.ReadBinaryString(); int userDataLength = serializingBinaryReader.ReadInt32(); byte[] userBinary = serializingBinaryReader.ReadBytes(userDataLength); User user = null; try { user = userBinary.BinaryDeserialize<User>(); } catch { return null; } if ((int)serializingBinaryReader.ReadByte() != (int)byte.MaxValue || memoryStream.Position != (long)serializedTicketLength) return null; else return new AuthenticationTicket(name, version, issueDateUtc, expirationUtc, user); } } } catch { return null; } }