public bool MoveNext()
            {
                IEnumerator currentEnumerator = this.CurrentEnumerator;

                if (currentEnumerator == null)
                {
                    this.m_currentEvidence = null;
                    return(false);
                }
                if (currentEnumerator.MoveNext())
                {
                    LegacyEvidenceWrapper current = currentEnumerator.Current as LegacyEvidenceWrapper;
                    LegacyEvidenceList    list    = currentEnumerator.Current as LegacyEvidenceList;
                    if (current != null)
                    {
                        this.m_currentEvidence = current.EvidenceObject;
                    }
                    else if (list != null)
                    {
                        IEnumerator enumerator = list.GetEnumerator();
                        this.m_enumerators.Push(enumerator);
                        this.MoveNext();
                    }
                    else
                    {
                        this.m_currentEvidence = currentEnumerator.Current;
                    }
                    return(true);
                }
                this.m_enumerators.Pop();
                return(this.MoveNext());
            }
        public IEnumerable <EvidenceBase> GetFactorySuppliedEvidence()
        {
            if (m_assemblyProvidedEvidence == null)
            {
                byte[] serializedEvidence = null;
                GetAssemblySuppliedEvidence(m_peFile, JitHelpers.GetObjectHandleOnStack(ref serializedEvidence));

                m_assemblyProvidedEvidence = new List <EvidenceBase>();
                if (serializedEvidence != null)
                {
                    Evidence deserializedEvidence = new Evidence();

                    // Partial trust assemblies can provide their own evidence, so make sure that we have
                    // permission to deserialize it
                    new SecurityPermission(SecurityPermissionFlag.SerializationFormatter).Assert();

                    try
                    {
                        BinaryFormatter formatter = new BinaryFormatter();
                        using (MemoryStream ms = new MemoryStream(serializedEvidence))
                        {
                            deserializedEvidence = (Evidence)formatter.Deserialize(ms);
                        }
                    }
                    catch { /* Ignore any errors deserializing */ }

                    CodeAccessPermission.RevertAssert();

                    // Enumerate the assembly evidence, ignoring any host evidence supplied.  Since we
                    // could be loading a Whidbey assembly, we need to use the old GetAssemblyEnumerator
                    // API and deal with objects instead of EvidenceBases.
                    if (deserializedEvidence != null)
                    {
                        IEnumerator enumerator = deserializedEvidence.GetAssemblyEnumerator();

                        while (enumerator.MoveNext())
                        {
                            if (enumerator.Current != null)
                            {
                                // If this is a legacy evidence object, we need to wrap it before
                                // returning it.
                                EvidenceBase currentEvidence = enumerator.Current as EvidenceBase;
                                if (currentEvidence == null)
                                {
                                    currentEvidence = new LegacyEvidenceWrapper(enumerator.Current);
                                }

                                m_assemblyProvidedEvidence.Add(currentEvidence);
                            }
                        }
                    }
                }
            }

            return(m_assemblyProvidedEvidence);
        }
        private static EvidenceBase WrapLegacyEvidence(object evidence)
        {
            EvidenceBase base2 = evidence as EvidenceBase;

            if (base2 == null)
            {
                base2 = new LegacyEvidenceWrapper(evidence);
            }
            return(base2);
        }
 public IEnumerable <EvidenceBase> GetFactorySuppliedEvidence()
 {
     if (this.m_assemblyProvidedEvidence == null)
     {
         byte[] array = null;
         PEFileEvidenceFactory.GetAssemblySuppliedEvidence(this.m_peFile, JitHelpers.GetObjectHandleOnStack <byte[]>(ref array));
         this.m_assemblyProvidedEvidence = new List <EvidenceBase>();
         if (array != null)
         {
             Evidence evidence = new Evidence();
             new SecurityPermission(SecurityPermissionFlag.SerializationFormatter).Assert();
             try
             {
                 BinaryFormatter binaryFormatter = new BinaryFormatter();
                 using (MemoryStream memoryStream = new MemoryStream(array))
                 {
                     evidence = (Evidence)binaryFormatter.Deserialize(memoryStream);
                 }
             }
             catch
             {
             }
             CodeAccessPermission.RevertAssert();
             if (evidence != null)
             {
                 IEnumerator assemblyEnumerator = evidence.GetAssemblyEnumerator();
                 while (assemblyEnumerator.MoveNext())
                 {
                     if (assemblyEnumerator.Current != null)
                     {
                         EvidenceBase evidenceBase = assemblyEnumerator.Current as EvidenceBase;
                         if (evidenceBase == null)
                         {
                             evidenceBase = new LegacyEvidenceWrapper(assemblyEnumerator.Current);
                         }
                         this.m_assemblyProvidedEvidence.Add(evidenceBase);
                     }
                 }
             }
         }
     }
     return(this.m_assemblyProvidedEvidence);
 }
 public IEnumerable<EvidenceBase> GetFactorySuppliedEvidence()
 {
     if (this.m_assemblyProvidedEvidence == null)
     {
         byte[] o = null;
         GetAssemblySuppliedEvidence(this.m_peFile, JitHelpers.GetObjectHandleOnStack<byte[]>(ref o));
         this.m_assemblyProvidedEvidence = new List<EvidenceBase>();
         if (o != null)
         {
             Evidence evidence = new Evidence();
             new SecurityPermission(SecurityPermissionFlag.SerializationFormatter).Assert();
             try
             {
                 BinaryFormatter formatter = new BinaryFormatter();
                 using (MemoryStream stream = new MemoryStream(o))
                 {
                     evidence = (Evidence) formatter.Deserialize(stream);
                 }
             }
             catch
             {
             }
             CodeAccessPermission.RevertAssert();
             if (evidence != null)
             {
                 IEnumerator assemblyEnumerator = evidence.GetAssemblyEnumerator();
                 while (assemblyEnumerator.MoveNext())
                 {
                     if (assemblyEnumerator.Current != null)
                     {
                         EvidenceBase current = assemblyEnumerator.Current as EvidenceBase;
                         if (current == null)
                         {
                             current = new LegacyEvidenceWrapper(assemblyEnumerator.Current);
                         }
                         this.m_assemblyProvidedEvidence.Add(current);
                     }
                 }
             }
         }
     }
     return this.m_assemblyProvidedEvidence;
 }
        public IEnumerable<EvidenceBase> GetFactorySuppliedEvidence()
        {
            if (m_assemblyProvidedEvidence == null)
            {
                byte[] serializedEvidence = null;
                GetAssemblySuppliedEvidence(m_peFile, JitHelpers.GetObjectHandleOnStack(ref serializedEvidence));

                m_assemblyProvidedEvidence = new List<EvidenceBase>();
                if (serializedEvidence != null)
                {
                    Evidence deserializedEvidence = new Evidence();

                    // Partial trust assemblies can provide their own evidence, so make sure that we have
                    // permission to deserialize it
                    new SecurityPermission(SecurityPermissionFlag.SerializationFormatter).Assert();

                    try
                    {
                        BinaryFormatter formatter = new BinaryFormatter();
                        using (MemoryStream ms = new MemoryStream(serializedEvidence))
                        {
                            deserializedEvidence = (Evidence)formatter.Deserialize(ms);
                        }
                    }
                    catch { /* Ignore any errors deserializing */ }

                    CodeAccessPermission.RevertAssert();

                    // Enumerate the assembly evidence, ignoring any host evidence supplied.  Since we
                    // could be loading a Whidbey assembly, we need to use the old GetAssemblyEnumerator
                    // API and deal with objects instead of EvidenceBases.
                    if (deserializedEvidence != null)
                    {
                        IEnumerator enumerator = deserializedEvidence.GetAssemblyEnumerator();

                        while (enumerator.MoveNext())
                        {
                            if (enumerator.Current != null)
                            {
                                // If this is a legacy evidence object, we need to wrap it before
                                // returning it.
                                EvidenceBase currentEvidence = enumerator.Current as EvidenceBase;
                                if (currentEvidence == null)
                                {
                                    currentEvidence = new LegacyEvidenceWrapper(enumerator.Current);
                                }

                                m_assemblyProvidedEvidence.Add(currentEvidence);
                            }
                        }
                    }
                }
            }

            return m_assemblyProvidedEvidence;
        }
 internal void InitStore(IsolatedStorageScope scope, object domain, object assem, object app)
 {
     PermissionSet newGrant = null;
     PermissionSet newDenied = null;
     Evidence domainEv = null;
     Evidence assemEv = null;
     Evidence appEv = null;
     if (IsApp(scope))
     {
         EvidenceBase evidence = app as EvidenceBase;
         if (evidence == null)
         {
             evidence = new LegacyEvidenceWrapper(app);
         }
         appEv = new Evidence();
         appEv.AddHostEvidence<EvidenceBase>(evidence);
     }
     else
     {
         EvidenceBase base3 = assem as EvidenceBase;
         if (base3 == null)
         {
             base3 = new LegacyEvidenceWrapper(assem);
         }
         assemEv = new Evidence();
         assemEv.AddHostEvidence<EvidenceBase>(base3);
         if (IsDomain(scope))
         {
             EvidenceBase base4 = domain as EvidenceBase;
             if (base4 == null)
             {
                 base4 = new LegacyEvidenceWrapper(domain);
             }
             domainEv = new Evidence();
             domainEv.AddHostEvidence<EvidenceBase>(base4);
         }
     }
     this._InitStore(scope, domainEv, null, assemEv, null, appEv, null);
     if (!IsRoaming(scope))
     {
         RuntimeAssembly caller = GetCaller();
         GetControlEvidencePermission().Assert();
         caller.GetGrantSet(out newGrant, out newDenied);
         if (newGrant == null)
         {
             throw new IsolatedStorageException(Environment.GetResourceString("IsolatedStorage_AssemblyGrantSet"));
         }
     }
     this.SetQuota(newGrant, newDenied);
 }