public static SimpleBinaryFormatterRootObject Parse(Stream serializationStream) { if (serializationStream.CanRead) { serializationStream.Position = 0; } InternalFE formatterEnums = new InternalFE(); formatterEnums.FEtypeFormat = FormatterTypeStyle.TypesAlways; formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary; formatterEnums.FEassemblyFormat = FormatterAssemblyStyle.Simple; formatterEnums.FEsecurityLevel = TypeFilterLevel.Low; ISurrogateSelector m_surrogates = null; StreamingContext m_context = new StreamingContext(StreamingContextStates.All); SerializationBinder m_binder = null; //bool fCheck = false; //HeaderHandler handler = null; ObjectReader objectReader = new ObjectReader(serializationStream, m_surrogates, m_context, formatterEnums, m_binder); __BinaryParser serParser = new __BinaryParser(serializationStream, objectReader); //BinaryReader dataReader = new BinaryReader(serializationStream, new UTF8Encoding(false, true)); return(serParser.RunModified()); }
[System.Security.SecurityCritical] // auto-generated internal Object Deserialize(Stream serializationStream, HeaderHandler handler, bool fCheck, bool isCrossAppDomain, IMethodCallMessage methodCallMessage) { if (serializationStream == null) { throw new ArgumentNullException("serializationStream", ModifiedVulnerableBinaryFormatters.binary.Environment.GetResourceString("ArgumentNull_WithParamName", serializationStream)); } Contract.EndContractBlock(); if (serializationStream.CanSeek && (serializationStream.Length == 0)) { throw new SerializationException(Environment.GetResourceString("Serialization_Stream")); } SerTrace.Log(this, "Deserialize Entry"); InternalFE formatterEnums = new InternalFE(); formatterEnums.FEtypeFormat = m_typeFormat; formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary; formatterEnums.FEassemblyFormat = m_assemblyFormat; formatterEnums.FEsecurityLevel = m_securityLevel; ObjectReader sor = new ObjectReader(serializationStream, m_surrogates, m_context, formatterEnums, m_binder); sor.crossAppDomainArray = m_crossAppDomainArray; return(sor.Deserialize(handler, new __BinaryParser(serializationStream, sor), fCheck, isCrossAppDomain, methodCallMessage)); }
public static MemoryStream AdvancedBinaryFormatterObjectToStream(List <AdvancedBinaryFormatterObject> abfoList) { MemoryStream resultMS = new MemoryStream(); InternalFE formatterEnums = new InternalFE(); formatterEnums.FEtypeFormat = FormatterTypeStyle.TypesAlways; formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary; formatterEnums.FEassemblyFormat = FormatterAssemblyStyle.Simple; formatterEnums.FEsecurityLevel = TypeFilterLevel.Low; ISurrogateSelector m_surrogates = null; StreamingContext m_context = new StreamingContext(StreamingContextStates.All); SerializationBinder m_binder = null; //bool fCheck = false; //HeaderHandler handler = null; ObjectWriter objectWriter = new ObjectWriter(m_surrogates, m_context, formatterEnums, m_binder); __BinaryWriter binaryWriter = new __BinaryWriter(resultMS, objectWriter, formatterEnums.FEtypeFormat); List <int> asmArray = new List <int>(); foreach (AdvancedBinaryFormatterObject abfo in abfoList) { var currentObjInfo = abfo.Data; if (currentObjInfo.GetType() == typeof(BinaryObjectWithMapTyped)) { if (currentObjInfo.binaryHeaderEnum == BinaryHeaderEnum.ObjectWithMapTypedAssemId) { if (asmArray.IndexOf(currentObjInfo.assemId) == -1 && currentObjInfo.assemId != 0) { asmArray.Add(currentObjInfo.assemId); } else { currentObjInfo.assemId = 0; } } } currentObjInfo.Write(binaryWriter); if (abfo.ArrayBytes != null) { // this is for arrays when we have more data: /* * BinaryHeaderEnum.Array: * BinaryHeaderEnum.ArraySinglePrimitive: * BinaryHeaderEnum.ArraySingleObject: * BinaryHeaderEnum.ArraySingleString: */ binaryWriter.WriteBytes(abfo.ArrayBytes); } } return(resultMS); }
[System.Security.SecurityCritical] // auto-generated internal void Serialize(Stream serializationStream, Object graph, Header[] headers, bool fCheck) { if (serializationStream == null) { throw new ArgumentNullException("serializationStream", Environment.GetResourceString("ArgumentNull_WithParamName", serializationStream)); } Contract.EndContractBlock(); SerTrace.Log(this, "Serialize Entry"); InternalFE formatterEnums = new InternalFE(); formatterEnums.FEtypeFormat = m_typeFormat; formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary; formatterEnums.FEassemblyFormat = m_assemblyFormat; ObjectWriter sow = new ObjectWriter(m_surrogates, m_context, formatterEnums, m_binder); __BinaryWriter binaryWriter = new __BinaryWriter(serializationStream, sow, m_typeFormat); sow.Serialize(graph, headers, binaryWriter, fCheck); m_crossAppDomainArray = sow.crossAppDomainArray; }