private static Evidence UpgradeSecurityIdentity(Evidence peFileEvidence, RuntimeAssembly targetAssembly) { peFileEvidence.Target = new AssemblyEvidenceFactory(targetAssembly, peFileEvidence.Target as PEFileEvidenceFactory); HostSecurityManager hostSecurityManager = AppDomain.CurrentDomain.HostSecurityManager; if ((hostSecurityManager.Flags & HostSecurityManagerOptions.HostAssemblyEvidence) == HostSecurityManagerOptions.HostAssemblyEvidence) { peFileEvidence = hostSecurityManager.ProvideAssemblyEvidence(targetAssembly, peFileEvidence); if (peFileEvidence == null) { throw new InvalidOperationException(Environment.GetResourceString("Policy_NullHostEvidence", new object[] { hostSecurityManager.GetType().FullName, targetAssembly.FullName })); } } return(peFileEvidence); }
private static Evidence UpgradeSecurityIdentity(Evidence peFileEvidence, RuntimeAssembly targetAssembly) { Contract.Assert(peFileEvidence != null); Contract.Assert(targetAssembly != null); Contract.Assert(peFileEvidence.Target is PEFileEvidenceFactory, "Expected upgrade path is from PEFile to Assembly"); peFileEvidence.Target = new AssemblyEvidenceFactory(targetAssembly, peFileEvidence.Target as PEFileEvidenceFactory); // Whidbey hosts would provide evidence for assemblies up front rather than on demand. If there // is a HostSecurityManager which does want to provide evidence, then we should provide it the // opprotunity to do the same for compatibility. HostSecurityManager securityManager = AppDomain.CurrentDomain.HostSecurityManager; if ((securityManager.Flags & HostSecurityManagerOptions.HostAssemblyEvidence) == HostSecurityManagerOptions.HostAssemblyEvidence) { peFileEvidence = securityManager.ProvideAssemblyEvidence(targetAssembly, peFileEvidence); if (peFileEvidence == null) { throw new InvalidOperationException(Environment.GetResourceString("Policy_NullHostEvidence", securityManager.GetType().FullName, targetAssembly.FullName)); } } return(peFileEvidence); }