Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Policy / ApplicationSecurityManager.cs / 1305376 / ApplicationSecurityManager.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // // // ApplicationSecurityManager.cs // namespace System.Security.Policy { using System.Deployment.Internal.Isolation; using System.Deployment.Internal.Isolation.Manifest; using System.IO; using System.Runtime.Versioning; using System.Security.Permissions; using System.Security.Util; using System.Diagnostics.Contracts; using System.Reflection; [System.Runtime.InteropServices.ComVisible(true)] public static class ApplicationSecurityManager { private static IApplicationTrustManager m_appTrustManager = null; // // Public static methods. // [System.Security.SecuritySafeCritical] // auto-generated static ApplicationSecurityManager() { } [System.Security.SecurityCritical] // auto-generated_required [SecurityPermissionAttribute(SecurityAction.Assert, Unrestricted=true)] public static bool DetermineApplicationTrust (ActivationContext activationContext, TrustManagerContext context) { if (activationContext == null) throw new ArgumentNullException("activationContext"); Contract.EndContractBlock(); ApplicationTrust appTrust = null; AppDomainManager domainManager = AppDomain.CurrentDomain.DomainManager; if (domainManager != null) { HostSecurityManager securityManager = domainManager.HostSecurityManager; if ((securityManager != null) && ((securityManager.Flags & HostSecurityManagerOptions.HostDetermineApplicationTrust) == HostSecurityManagerOptions.HostDetermineApplicationTrust)) { appTrust = securityManager.DetermineApplicationTrust(CmsUtils.MergeApplicationEvidence(null, activationContext.Identity, activationContext, null), null, context); if (appTrust == null) return false; return appTrust.IsApplicationTrustedToRun; } } appTrust = DetermineApplicationTrustInternal(activationContext, context); if (appTrust == null) return false; return appTrust.IsApplicationTrustedToRun; } // // Public static properties. // public static ApplicationTrustCollection UserApplicationTrusts { [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlPolicy)] get { return new ApplicationTrustCollection(true); } } public static IApplicationTrustManager ApplicationTrustManager { [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlPolicy)] get { if (m_appTrustManager == null) { m_appTrustManager = DecodeAppTrustManager(); if (m_appTrustManager == null) throw new PolicyException(Environment.GetResourceString("Policy_NoTrustManager")); } return m_appTrustManager; } } // // Internal // [System.Security.SecurityCritical] // auto-generated internal static ApplicationTrust DetermineApplicationTrustInternal (ActivationContext activationContext, TrustManagerContext context) { ApplicationTrust trust = null; ApplicationTrustCollection userTrusts = new ApplicationTrustCollection(true); // See if there is a persisted trust decision for this application. if ((context == null || !context.IgnorePersistedDecision)) { trust = userTrusts[activationContext.Identity.FullName]; if (trust != null) return trust; } // There is no cached trust decision so invoke the trust manager. trust = ApplicationTrustManager.DetermineApplicationTrust(activationContext, context); if (trust == null) trust = new ApplicationTrust(activationContext.Identity); // make sure the application identity is correctly set. trust.ApplicationIdentity = activationContext.Identity; if (trust.Persist) userTrusts.Add(trust); return trust; } // // Private. // private static string s_machineConfigFile = Config.MachineDirectory + "applicationtrust.config"; [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] private static IApplicationTrustManager DecodeAppTrustManager () { if (!File.InternalExists(s_machineConfigFile)) goto defaultTrustManager; // A config file exists. Decode the trust manager from its Xml. String configFileStr; using (FileStream contents = new FileStream(s_machineConfigFile, FileMode.Open, FileAccess.Read)) { configFileStr = new StreamReader(contents).ReadToEnd(); } SecurityElement elRoot = SecurityElement.FromString(configFileStr); SecurityElement elMscorlib = elRoot.SearchForChildByTag("mscorlib"); if (elMscorlib == null) goto defaultTrustManager; SecurityElement elSecurity = elMscorlib.SearchForChildByTag("security"); if (elSecurity == null) goto defaultTrustManager; SecurityElement elPolicy = elSecurity.SearchForChildByTag("policy"); if (elPolicy == null) goto defaultTrustManager; SecurityElement elSecurityManager = elPolicy.SearchForChildByTag("ApplicationSecurityManager"); if (elSecurityManager == null) goto defaultTrustManager; SecurityElement elTrustManager = elSecurityManager.SearchForChildByTag("IApplicationTrustManager"); if (elTrustManager == null) goto defaultTrustManager; IApplicationTrustManager appTrustManager = DecodeAppTrustManagerFromElement(elTrustManager); if (appTrustManager == null) goto defaultTrustManager; return appTrustManager; defaultTrustManager: return DecodeAppTrustManagerFromElement(CreateDefaultApplicationTrustManagerElement()); } [System.Security.SecurityCritical] // auto-generated private static SecurityElement CreateDefaultApplicationTrustManagerElement() { SecurityElement elTrustManager = new SecurityElement("IApplicationTrustManager"); elTrustManager.AddAttribute("class", "System.Security.Policy.TrustManager, System.Windows.Forms, Version=" + ((RuntimeAssembly)Assembly.GetExecutingAssembly()).GetVersion() + ", Culture=neutral, PublicKeyToken=" + AssemblyRef.EcmaPublicKeyToken); elTrustManager.AddAttribute("version", "1"); return elTrustManager; } [System.Security.SecurityCritical] // auto-generated private static IApplicationTrustManager DecodeAppTrustManagerFromElement (SecurityElement elTrustManager) { new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Assert(); string trustManagerName = elTrustManager.Attribute("class"); Type tmClass = Type.GetType(trustManagerName, false, false); if (tmClass == null) return null; IApplicationTrustManager appTrustManager = Activator.CreateInstance(tmClass) as IApplicationTrustManager; if (appTrustManager != null) appTrustManager.FromXml(elTrustManager); return appTrustManager; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // // // ApplicationSecurityManager.cs // namespace System.Security.Policy { using System.Deployment.Internal.Isolation; using System.Deployment.Internal.Isolation.Manifest; using System.IO; using System.Runtime.Versioning; using System.Security.Permissions; using System.Security.Util; using System.Diagnostics.Contracts; using System.Reflection; [System.Runtime.InteropServices.ComVisible(true)] public static class ApplicationSecurityManager { private static IApplicationTrustManager m_appTrustManager = null; // // Public static methods. // [System.Security.SecuritySafeCritical] // auto-generated static ApplicationSecurityManager() { } [System.Security.SecurityCritical] // auto-generated_required [SecurityPermissionAttribute(SecurityAction.Assert, Unrestricted=true)] public static bool DetermineApplicationTrust (ActivationContext activationContext, TrustManagerContext context) { if (activationContext == null) throw new ArgumentNullException("activationContext"); Contract.EndContractBlock(); ApplicationTrust appTrust = null; AppDomainManager domainManager = AppDomain.CurrentDomain.DomainManager; if (domainManager != null) { HostSecurityManager securityManager = domainManager.HostSecurityManager; if ((securityManager != null) && ((securityManager.Flags & HostSecurityManagerOptions.HostDetermineApplicationTrust) == HostSecurityManagerOptions.HostDetermineApplicationTrust)) { appTrust = securityManager.DetermineApplicationTrust(CmsUtils.MergeApplicationEvidence(null, activationContext.Identity, activationContext, null), null, context); if (appTrust == null) return false; return appTrust.IsApplicationTrustedToRun; } } appTrust = DetermineApplicationTrustInternal(activationContext, context); if (appTrust == null) return false; return appTrust.IsApplicationTrustedToRun; } // // Public static properties. // public static ApplicationTrustCollection UserApplicationTrusts { [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlPolicy)] get { return new ApplicationTrustCollection(true); } } public static IApplicationTrustManager ApplicationTrustManager { [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlPolicy)] get { if (m_appTrustManager == null) { m_appTrustManager = DecodeAppTrustManager(); if (m_appTrustManager == null) throw new PolicyException(Environment.GetResourceString("Policy_NoTrustManager")); } return m_appTrustManager; } } // // Internal // [System.Security.SecurityCritical] // auto-generated internal static ApplicationTrust DetermineApplicationTrustInternal (ActivationContext activationContext, TrustManagerContext context) { ApplicationTrust trust = null; ApplicationTrustCollection userTrusts = new ApplicationTrustCollection(true); // See if there is a persisted trust decision for this application. if ((context == null || !context.IgnorePersistedDecision)) { trust = userTrusts[activationContext.Identity.FullName]; if (trust != null) return trust; } // There is no cached trust decision so invoke the trust manager. trust = ApplicationTrustManager.DetermineApplicationTrust(activationContext, context); if (trust == null) trust = new ApplicationTrust(activationContext.Identity); // make sure the application identity is correctly set. trust.ApplicationIdentity = activationContext.Identity; if (trust.Persist) userTrusts.Add(trust); return trust; } // // Private. // private static string s_machineConfigFile = Config.MachineDirectory + "applicationtrust.config"; [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] private static IApplicationTrustManager DecodeAppTrustManager () { if (!File.InternalExists(s_machineConfigFile)) goto defaultTrustManager; // A config file exists. Decode the trust manager from its Xml. String configFileStr; using (FileStream contents = new FileStream(s_machineConfigFile, FileMode.Open, FileAccess.Read)) { configFileStr = new StreamReader(contents).ReadToEnd(); } SecurityElement elRoot = SecurityElement.FromString(configFileStr); SecurityElement elMscorlib = elRoot.SearchForChildByTag("mscorlib"); if (elMscorlib == null) goto defaultTrustManager; SecurityElement elSecurity = elMscorlib.SearchForChildByTag("security"); if (elSecurity == null) goto defaultTrustManager; SecurityElement elPolicy = elSecurity.SearchForChildByTag("policy"); if (elPolicy == null) goto defaultTrustManager; SecurityElement elSecurityManager = elPolicy.SearchForChildByTag("ApplicationSecurityManager"); if (elSecurityManager == null) goto defaultTrustManager; SecurityElement elTrustManager = elSecurityManager.SearchForChildByTag("IApplicationTrustManager"); if (elTrustManager == null) goto defaultTrustManager; IApplicationTrustManager appTrustManager = DecodeAppTrustManagerFromElement(elTrustManager); if (appTrustManager == null) goto defaultTrustManager; return appTrustManager; defaultTrustManager: return DecodeAppTrustManagerFromElement(CreateDefaultApplicationTrustManagerElement()); } [System.Security.SecurityCritical] // auto-generated private static SecurityElement CreateDefaultApplicationTrustManagerElement() { SecurityElement elTrustManager = new SecurityElement("IApplicationTrustManager"); elTrustManager.AddAttribute("class", "System.Security.Policy.TrustManager, System.Windows.Forms, Version=" + ((RuntimeAssembly)Assembly.GetExecutingAssembly()).GetVersion() + ", Culture=neutral, PublicKeyToken=" + AssemblyRef.EcmaPublicKeyToken); elTrustManager.AddAttribute("version", "1"); return elTrustManager; } [System.Security.SecurityCritical] // auto-generated private static IApplicationTrustManager DecodeAppTrustManagerFromElement (SecurityElement elTrustManager) { new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Assert(); string trustManagerName = elTrustManager.Attribute("class"); Type tmClass = Type.GetType(trustManagerName, false, false); if (tmClass == null) return null; IApplicationTrustManager appTrustManager = Activator.CreateInstance(tmClass) as IApplicationTrustManager; if (appTrustManager != null) appTrustManager.FromXml(elTrustManager); return appTrustManager; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SplitterPanel.cs
- TaskForm.cs
- FixedSOMImage.cs
- AnimationLayer.cs
- SerializationSectionGroup.cs
- RewritingSimplifier.cs
- DefaultValueTypeConverter.cs
- NullExtension.cs
- NullableConverter.cs
- InvalidFilterCriteriaException.cs
- OfTypeExpression.cs
- XsltArgumentList.cs
- PermissionToken.cs
- PointLightBase.cs
- MasterPageBuildProvider.cs
- XmlChoiceIdentifierAttribute.cs
- ThumbAutomationPeer.cs
- FilterQuery.cs
- AtomEntry.cs
- ManipulationPivot.cs
- FlowDocumentFormatter.cs
- ProfileProvider.cs
- BitArray.cs
- SyndicationSerializer.cs
- OleDbException.cs
- SoapMessage.cs
- ImplicitInputBrush.cs
- TextMarkerSource.cs
- LockRecursionException.cs
- SelfIssuedAuthRSACryptoProvider.cs
- SystemWebExtensionsSectionGroup.cs
- _AcceptOverlappedAsyncResult.cs
- XmlCharacterData.cs
- SR.cs
- UpDownEvent.cs
- ImmComposition.cs
- TemplateField.cs
- ChtmlCalendarAdapter.cs
- MetabaseServerConfig.cs
- DataServiceQueryProvider.cs
- ILGenerator.cs
- DataGridView.cs
- HtmlTitle.cs
- OdbcDataAdapter.cs
- GeneralTransform3DCollection.cs
- SettingsSavedEventArgs.cs
- DirectoryNotFoundException.cs
- StrongName.cs
- TrackingConditionCollection.cs
- GridViewRowPresenter.cs
- DbSource.cs
- SortKey.cs
- CreatingCookieEventArgs.cs
- ShimAsPublicXamlType.cs
- DataGridViewDataConnection.cs
- InputScope.cs
- BrushConverter.cs
- LoadWorkflowByInstanceKeyCommand.cs
- VBCodeProvider.cs
- EntityDataSourceWrapperCollection.cs
- NumericUpDownAccelerationCollection.cs
- EntityCommand.cs
- HelpProvider.cs
- Interlocked.cs
- DockProviderWrapper.cs
- RemotingServices.cs
- ReachSerializationUtils.cs
- StreamWithDictionary.cs
- SyndicationSerializer.cs
- XmlStreamStore.cs
- PropertyOverridesDialog.cs
- HttpCapabilitiesEvaluator.cs
- RawKeyboardInputReport.cs
- AppSecurityManager.cs
- AutomationIdentifierGuids.cs
- TrackingWorkflowEventArgs.cs
- ColorKeyFrameCollection.cs
- Point3DIndependentAnimationStorage.cs
- XPathNodeHelper.cs
- ZoneIdentityPermission.cs
- IconHelper.cs
- VectorConverter.cs
- TranslateTransform3D.cs
- Visitor.cs
- ButtonBaseAdapter.cs
- DataTableTypeConverter.cs
- ProgressBarRenderer.cs
- ObjectPropertyMapping.cs
- MemberAssignment.cs
- HttpGetProtocolImporter.cs
- RequestCachingSection.cs
- ProjectionCamera.cs
- WebZone.cs
- XmlObjectSerializerReadContextComplexJson.cs
- PowerStatus.cs
- TextSelectionHelper.cs
- DataGridViewColumnHeaderCell.cs
- AmbiguousMatchException.cs
- ComEventsInfo.cs
- ReferentialConstraint.cs