public void AddEvidence(string evidenceFileName) { EvidenceCollection evidenceAdded = ProcessEvidenceDocument(evidenceFileName); if (evidenceAdded != null) { if (evidenceAdded.Evidence != null) { SetToCollection(evidenceAdded); } } }
protected override void SingletonAwake() { base.SingletonAwake(); evidenceQuantity = 0; evidence = new EvidenceCollection(); evidence.Evidence = new Evidence[maxEvidenceQuantity]; for (int i = 0; i < maxEvidenceQuantity; i++) { evidence.Evidence[i] = GetNullEvidence(); } SetActivatedInventoryMembers(false); }
public void SetToCollection(EvidenceCollection _evidence) { if (!EvidenceFull()) { for (int i = 0; i < _evidence.Evidence.Length; i++) { evidence.Evidence[evidenceQuantity] = _evidence.Evidence[i]; evidenceQuantity++; if (EvidenceFull()) { return; } } } }
/// <summary> /// Create the XML file from the specified data and send it to /// the configured URL. /// </summary> protected override void BuildAndSendXml() { List <ShareUsageData> allData = new List <ShareUsageData>(); ShareUsageData currentData; while (EvidenceCollection.TryTake(out currentData, TakeTimeout) && allData.Count < MinEntriesPerMessage * 2) { allData.Add(currentData); } // Create the zip stream and XML writer. using (MemoryStream memory = new MemoryStream()) { using (GZipStream compressedStream = new GZipStream( memory, CompressionMode.Compress, true)) using (XmlWriter writer = XmlWriter.Create(compressedStream, WriterSettings)) { writer.WriteStartElement("Devices"); // Write each element in turn. foreach (var data in allData) { WriteData(writer, data); } writer.WriteEndElement(); } memory.Position = 0; using (var content = new StreamContent(memory)) { content.Headers.Add("content-encoding", "gzip"); content.Headers.Add("content-type", "text/xml"); var res = HttpClient.PostAsync(ShareUsageUri, content).Result; if (res.StatusCode != HttpStatusCode.OK) { throw new HttpRequestException( $"HTTP response was {res.StatusCode}: " + $"{res.Content.ToString()}."); } } } }
[System.Security.SecurityCritical] // auto-generated private static object PrepareDataForSetup(String friendlyName, AppDomainSetup setup, Evidence providedSecurityInfo, Evidence creatorsSecurityInfo, IntPtr parentSecurityDescriptor, string sandboxName, string[] propertyNames, string[] propertyValues) { byte[] serializedEvidence = null; bool generateDefaultEvidence = false; #if FEATURE_CAS_POLICY // serialize evidence EvidenceCollection evidenceCollection = null; if (providedSecurityInfo != null || creatorsSecurityInfo != null) { // If we're just passing through AppDomain.CurrentDomain.Evidence, and that evidence is just // using the standard runtime AppDomainEvidenceFactory, don't waste time serializing it and // deserializing it back -- instead, we can recreate a new AppDomainEvidenceFactory in the new // domain. We only want to do this if there is no HostSecurityManager, otherwise the // HostSecurityManager could have added additional evidence on top of our standard factory. HostSecurityManager hsm = CurrentDomain.DomainManager != null ? CurrentDomain.DomainManager.HostSecurityManager : null; bool hostMayContributeEvidence = hsm != null && hsm.GetType() != typeof(HostSecurityManager) && (hsm.Flags & HostSecurityManagerOptions.HostAppDomainEvidence) == HostSecurityManagerOptions.HostAppDomainEvidence; if (!hostMayContributeEvidence) { if (providedSecurityInfo != null && providedSecurityInfo.IsUnmodified && providedSecurityInfo.Target != null && providedSecurityInfo.Target is AppDomainEvidenceFactory) { providedSecurityInfo = null; generateDefaultEvidence = true; } if (creatorsSecurityInfo != null && creatorsSecurityInfo.IsUnmodified && creatorsSecurityInfo.Target != null && creatorsSecurityInfo.Target is AppDomainEvidenceFactory) { creatorsSecurityInfo = null; generateDefaultEvidence = true; } } } if ((providedSecurityInfo != null) || (creatorsSecurityInfo != null)) { evidenceCollection = new EvidenceCollection(); evidenceCollection.ProvidedSecurityInfo = providedSecurityInfo; evidenceCollection.CreatorsSecurityInfo = creatorsSecurityInfo; } if (evidenceCollection != null) { serializedEvidence = CrossAppDomainSerializer.SerializeObject(evidenceCollection).GetBuffer(); } #endif // FEATURE_CAS_POLICY AppDomainInitializerInfo initializerInfo = null; if (setup!=null && setup.AppDomainInitializer!=null) initializerInfo=new AppDomainInitializerInfo(setup.AppDomainInitializer); // will travel x-Ad, drop non-agile data AppDomainSetup newSetup = new AppDomainSetup(setup, false); #if FEATURE_CORECLR // Remove the special AppDomainCompatSwitch entries from the set of name value pairs // And add them to the AppDomainSetup // // This is only supported on CoreCLR through ICLRRuntimeHost2.CreateAppDomainWithManager // Desktop code should use System.AppDomain.CreateDomain() or // System.AppDomainManager.CreateDomain() and add the flags to the AppDomainSetup List<String> compatList = new List<String>(); if(propertyNames!=null && propertyValues != null) { for (int i=0; i<propertyNames.Length; i++) { if(String.Compare(propertyNames[i], "AppDomainCompatSwitch", StringComparison.OrdinalIgnoreCase) == 0) { compatList.Add(propertyValues[i]); propertyNames[i] = null; propertyValues[i] = null; } } if (compatList.Count > 0) { newSetup.SetCompatibilitySwitches(compatList); } } #endif // FEATURE_CORECLR return new Object[] { friendlyName, newSetup, parentSecurityDescriptor, generateDefaultEvidence, serializedEvidence, initializerInfo, sandboxName, propertyNames, propertyValues }; } // PrepareDataForSetup
private static object RemotelySetupRemoteDomain(AppDomain appDomainProxy, string friendlyName, AppDomainSetup setup, System.Security.Policy.Evidence providedSecurityInfo, System.Security.Policy.Evidence creatorsSecurityInfo, IntPtr parentSecurityDescriptor) { IntPtr ptr; int num; RemotingServices.GetServerContextAndDomainIdForProxy(appDomainProxy, out ptr, out num); if (ptr == IntPtr.Zero) { throw new AppDomainUnloadedException(); } EvidenceCollection evidences = null; if ((providedSecurityInfo != null) || (creatorsSecurityInfo != null)) { evidences = new EvidenceCollection { ProvidedSecurityInfo = providedSecurityInfo, CreatorsSecurityInfo = creatorsSecurityInfo }; } bool flag = false; char[] serProvidedEvidence = null; char[] serCreatorEvidence = null; byte[] serializedEvidence = null; AppDomainInitializerInfo initializerInfo = null; if (providedSecurityInfo != null) { serProvidedEvidence = PolicyManager.MakeEvidenceArray(providedSecurityInfo, true); if (serProvidedEvidence == null) { flag = true; } } if ((creatorsSecurityInfo != null) && !flag) { serCreatorEvidence = PolicyManager.MakeEvidenceArray(creatorsSecurityInfo, true); if (serCreatorEvidence == null) { flag = true; } } if ((evidences != null) && flag) { serProvidedEvidence = (char[]) (serCreatorEvidence = null); serializedEvidence = CrossAppDomainSerializer.SerializeObject(evidences).GetBuffer(); } if ((setup != null) && (setup.AppDomainInitializer != null)) { initializerInfo = new AppDomainInitializerInfo(setup.AppDomainInitializer); } return InternalRemotelySetupRemoteDomain(ptr, num, friendlyName, setup, parentSecurityDescriptor, serProvidedEvidence, serCreatorEvidence, serializedEvidence, initializerInfo); }
private static object PrepareDataForSetup(string friendlyName, AppDomainSetup setup, System.Security.Policy.Evidence providedSecurityInfo, System.Security.Policy.Evidence creatorsSecurityInfo, IntPtr parentSecurityDescriptor, string securityZone, string[] propertyNames, string[] propertyValues) { byte[] buffer = null; bool flag = false; EvidenceCollection evidences = null; if ((providedSecurityInfo != null) || (creatorsSecurityInfo != null)) { System.Security.HostSecurityManager manager = (CurrentDomain.DomainManager != null) ? CurrentDomain.DomainManager.HostSecurityManager : null; if (((manager == null) || (manager.GetType() == typeof(System.Security.HostSecurityManager))) || ((manager.Flags & HostSecurityManagerOptions.HostAppDomainEvidence) != HostSecurityManagerOptions.HostAppDomainEvidence)) { if (((providedSecurityInfo != null) && providedSecurityInfo.IsUnmodified) && ((providedSecurityInfo.Target != null) && (providedSecurityInfo.Target is AppDomainEvidenceFactory))) { providedSecurityInfo = null; flag = true; } if (((creatorsSecurityInfo != null) && creatorsSecurityInfo.IsUnmodified) && ((creatorsSecurityInfo.Target != null) && (creatorsSecurityInfo.Target is AppDomainEvidenceFactory))) { creatorsSecurityInfo = null; flag = true; } } } if ((providedSecurityInfo != null) || (creatorsSecurityInfo != null)) { evidences = new EvidenceCollection { ProvidedSecurityInfo = providedSecurityInfo, CreatorsSecurityInfo = creatorsSecurityInfo }; } if (evidences != null) { buffer = CrossAppDomainSerializer.SerializeObject(evidences).GetBuffer(); } AppDomainInitializerInfo info = null; if ((setup != null) && (setup.AppDomainInitializer != null)) { info = new AppDomainInitializerInfo(setup.AppDomainInitializer); } AppDomainSetup setup2 = new AppDomainSetup(setup, false); return new object[] { friendlyName, setup2, parentSecurityDescriptor, flag, buffer, info, securityZone, propertyNames, propertyValues }; }
// Used to switch into other AppDomain and call SetupRemoteDomain. // We cannot simply call through the proxy, because if there // are any remoting sinks registered, they can add non-mscorlib // objects to the message (causing an assembly load exception when // we try to deserialize it on the other side) private static object RemotelySetupRemoteDomain(AppDomain appDomainProxy, String friendlyName, AppDomainSetup setup, Evidence providedSecurityInfo, Evidence creatorsSecurityInfo, IntPtr parentSecurityDescriptor) { BCLDebug.Assert(RemotingServices.IsTransparentProxy(appDomainProxy), "Expected a proxy to the AppDomain."); // get context and appdomain id IntPtr contextId; int domainId; RemotingServices.GetServerContextAndDomainIdForProxy( appDomainProxy, out contextId, out domainId); if (contextId==IntPtr.Zero) throw new AppDomainUnloadedException(); // serialize evidence EvidenceCollection evidenceCollection = null; if ((providedSecurityInfo != null) || (creatorsSecurityInfo != null)) { evidenceCollection = new EvidenceCollection(); evidenceCollection.ProvidedSecurityInfo = providedSecurityInfo; evidenceCollection.CreatorsSecurityInfo = creatorsSecurityInfo; } bool bNeedGenericFormatter = false; char[] serProvidedEvidence = null, serCreatorEvidence = null; byte[] serializedEvidence = null; AppDomainInitializerInfo initializerInfo=null; if (providedSecurityInfo != null) { serProvidedEvidence = PolicyManager.MakeEvidenceArray(providedSecurityInfo, true); if (serProvidedEvidence == null) bNeedGenericFormatter = true; } if (creatorsSecurityInfo != null && !bNeedGenericFormatter) { serCreatorEvidence = PolicyManager.MakeEvidenceArray(creatorsSecurityInfo, true); if (serCreatorEvidence == null) bNeedGenericFormatter = true; } if (evidenceCollection != null && bNeedGenericFormatter) { serProvidedEvidence = serCreatorEvidence = null; serializedEvidence = CrossAppDomainSerializer.SerializeObject(evidenceCollection).GetBuffer(); } if (setup!=null && setup.AppDomainInitializer!=null) initializerInfo=new AppDomainInitializerInfo(setup.AppDomainInitializer); return InternalRemotelySetupRemoteDomain(contextId, domainId, friendlyName, setup, parentSecurityDescriptor, serProvidedEvidence, serCreatorEvidence, serializedEvidence, initializerInfo); } // RemotelySetupRemoteDomain