Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Security / Policy / ApplicationSecurityInfo.cs / 1 / ApplicationSecurityInfo.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // // ApplicationSecurityInfo.cs // // The application security info holds all the security related information pertinent // to the application. In some sense, it is the CLR public representation of the security // information held in the manifest. // namespace System.Security.Policy { using System.Collections; using System.Deployment.Internal.Isolation; using System.Deployment.Internal.Isolation.Manifest; using System.Globalization; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Security.Permissions; using System.Security.Policy; using System.Security.Util; using System.Threading; using System.Runtime.Versioning; using System.Runtime.Hosting; [SecurityPermissionAttribute(SecurityAction.Assert, Flags = SecurityPermissionFlag.UnmanagedCode)] [System.Runtime.InteropServices.ComVisible(true)] public sealed class ApplicationSecurityInfo { private ActivationContext m_context; private object m_appId; private object m_deployId; private object m_defaultRequest; private object m_appEvidence; internal ApplicationSecurityInfo () {} // // Public. // public ApplicationSecurityInfo (ActivationContext activationContext) { if (activationContext == null) throw new ArgumentNullException("activationContext"); m_context = activationContext; } public ApplicationId ApplicationId { get { if (m_appId == null && m_context != null) { ICMS appManifest = m_context.ApplicationComponentManifest; ApplicationId appId = ParseApplicationId(appManifest); Interlocked.CompareExchange(ref m_appId, appId, null); } return m_appId as ApplicationId; } set { if (value == null) throw new ArgumentNullException("value"); m_appId = value; } } public ApplicationId DeploymentId { get { if (m_deployId == null && m_context != null) { ICMS deplManifest = m_context.DeploymentComponentManifest; ApplicationId deplId = ParseApplicationId(deplManifest); Interlocked.CompareExchange(ref m_deployId, deplId, null); } return m_deployId as ApplicationId; } set { if (value == null) throw new ArgumentNullException("value"); m_deployId = value; } } public PermissionSet DefaultRequestSet { [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] get { if (m_defaultRequest == null) { PermissionSet defaultRequest = new PermissionSet(PermissionState.None); if (m_context != null) { // read the default request from the app manifest. ICMS appManifest = m_context.ApplicationComponentManifest; string defaultPSetId = ((IMetadataSectionEntry) appManifest.MetadataSectionEntry).defaultPermissionSetID; object permissionSetObj = null; if (defaultPSetId != null && defaultPSetId.Length > 0) { ((ISectionWithStringKey) appManifest.PermissionSetSection).Lookup(defaultPSetId, out permissionSetObj); IPermissionSetEntry defaultPSet = permissionSetObj as IPermissionSetEntry; if (defaultPSet != null) { SecurityElement seDefaultPS = SecurityElement.FromString(defaultPSet.AllData.XmlSegment); string unrestricted = seDefaultPS.Attribute("temp:Unrestricted"); if (unrestricted != null) seDefaultPS.AddAttribute("Unrestricted", unrestricted); defaultRequest = new PermissionSet(PermissionState.None); defaultRequest.FromXml(seDefaultPS); // Look for "SameSite" request. string sameSite = seDefaultPS.Attribute("SameSite"); if (String.Compare(sameSite, "Site", StringComparison.OrdinalIgnoreCase) == 0) { NetCodeGroup netCodeGroup = new NetCodeGroup(new AllMembershipCondition()); Url url = new Url(m_context.Identity.CodeBase); PolicyStatement ps = netCodeGroup.CalculatePolicy(url.GetURLString().Host, url.GetURLString().Scheme, url.GetURLString().Port); if (ps != null) { PermissionSet netPermissionSet = ps.PermissionSet; if (netPermissionSet != null) defaultRequest.InplaceUnion(netPermissionSet); } if (String.Compare("file:", 0, m_context.Identity.CodeBase, 0, 5, StringComparison.OrdinalIgnoreCase) == 0) { FileCodeGroup fileCodeGroup = new FileCodeGroup(new AllMembershipCondition(), FileIOPermissionAccess.Read | FileIOPermissionAccess.PathDiscovery); ps = fileCodeGroup.CalculatePolicy(url); if (ps != null) { PermissionSet filePermissionSet = ps.PermissionSet; if (filePermissionSet != null) defaultRequest.InplaceUnion(filePermissionSet); } } } } } } Interlocked.CompareExchange(ref m_defaultRequest, defaultRequest, null); } return m_defaultRequest as PermissionSet; } set { if (value == null) throw new ArgumentNullException("value"); m_defaultRequest = value; } } public Evidence ApplicationEvidence { get { if (m_appEvidence == null) { Evidence appEvidence = new Evidence(); if (m_context != null) { appEvidence = new Evidence(); Url deploymentUrl = new Url(m_context.Identity.CodeBase); appEvidence.AddHost(deploymentUrl); appEvidence.AddHost(Zone.CreateFromUrl(m_context.Identity.CodeBase)); if (String.Compare("file:", 0, m_context.Identity.CodeBase, 0, 5, StringComparison.OrdinalIgnoreCase) != 0) appEvidence.AddHost(Site.CreateFromUrl(m_context.Identity.CodeBase)); appEvidence.AddHost(new StrongName(new StrongNamePublicKeyBlob(DeploymentId.m_publicKeyToken), DeploymentId.Name, DeploymentId.Version)); appEvidence.AddHost(new ActivationArguments(m_context)); } Interlocked.CompareExchange(ref m_appEvidence, appEvidence, null); } return m_appEvidence as Evidence; } set { if (value == null) throw new ArgumentNullException("value"); m_appEvidence = value; } } // // Internal. // private static ApplicationId ParseApplicationId (ICMS manifest) { if (manifest.Identity == null) return null; return new ApplicationId(Hex.DecodeHexString(manifest.Identity.GetAttribute("", "publicKeyToken")), manifest.Identity.GetAttribute("", "name"), new Version(manifest.Identity.GetAttribute("", "version")), manifest.Identity.GetAttribute("", "processorArchitecture"), manifest.Identity.GetAttribute("", "culture")); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // // ApplicationSecurityInfo.cs // // The application security info holds all the security related information pertinent // to the application. In some sense, it is the CLR public representation of the security // information held in the manifest. // namespace System.Security.Policy { using System.Collections; using System.Deployment.Internal.Isolation; using System.Deployment.Internal.Isolation.Manifest; using System.Globalization; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Security.Permissions; using System.Security.Policy; using System.Security.Util; using System.Threading; using System.Runtime.Versioning; using System.Runtime.Hosting; [SecurityPermissionAttribute(SecurityAction.Assert, Flags = SecurityPermissionFlag.UnmanagedCode)] [System.Runtime.InteropServices.ComVisible(true)] public sealed class ApplicationSecurityInfo { private ActivationContext m_context; private object m_appId; private object m_deployId; private object m_defaultRequest; private object m_appEvidence; internal ApplicationSecurityInfo () {} // // Public. // public ApplicationSecurityInfo (ActivationContext activationContext) { if (activationContext == null) throw new ArgumentNullException("activationContext"); m_context = activationContext; } public ApplicationId ApplicationId { get { if (m_appId == null && m_context != null) { ICMS appManifest = m_context.ApplicationComponentManifest; ApplicationId appId = ParseApplicationId(appManifest); Interlocked.CompareExchange(ref m_appId, appId, null); } return m_appId as ApplicationId; } set { if (value == null) throw new ArgumentNullException("value"); m_appId = value; } } public ApplicationId DeploymentId { get { if (m_deployId == null && m_context != null) { ICMS deplManifest = m_context.DeploymentComponentManifest; ApplicationId deplId = ParseApplicationId(deplManifest); Interlocked.CompareExchange(ref m_deployId, deplId, null); } return m_deployId as ApplicationId; } set { if (value == null) throw new ArgumentNullException("value"); m_deployId = value; } } public PermissionSet DefaultRequestSet { [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] get { if (m_defaultRequest == null) { PermissionSet defaultRequest = new PermissionSet(PermissionState.None); if (m_context != null) { // read the default request from the app manifest. ICMS appManifest = m_context.ApplicationComponentManifest; string defaultPSetId = ((IMetadataSectionEntry) appManifest.MetadataSectionEntry).defaultPermissionSetID; object permissionSetObj = null; if (defaultPSetId != null && defaultPSetId.Length > 0) { ((ISectionWithStringKey) appManifest.PermissionSetSection).Lookup(defaultPSetId, out permissionSetObj); IPermissionSetEntry defaultPSet = permissionSetObj as IPermissionSetEntry; if (defaultPSet != null) { SecurityElement seDefaultPS = SecurityElement.FromString(defaultPSet.AllData.XmlSegment); string unrestricted = seDefaultPS.Attribute("temp:Unrestricted"); if (unrestricted != null) seDefaultPS.AddAttribute("Unrestricted", unrestricted); defaultRequest = new PermissionSet(PermissionState.None); defaultRequest.FromXml(seDefaultPS); // Look for "SameSite" request. string sameSite = seDefaultPS.Attribute("SameSite"); if (String.Compare(sameSite, "Site", StringComparison.OrdinalIgnoreCase) == 0) { NetCodeGroup netCodeGroup = new NetCodeGroup(new AllMembershipCondition()); Url url = new Url(m_context.Identity.CodeBase); PolicyStatement ps = netCodeGroup.CalculatePolicy(url.GetURLString().Host, url.GetURLString().Scheme, url.GetURLString().Port); if (ps != null) { PermissionSet netPermissionSet = ps.PermissionSet; if (netPermissionSet != null) defaultRequest.InplaceUnion(netPermissionSet); } if (String.Compare("file:", 0, m_context.Identity.CodeBase, 0, 5, StringComparison.OrdinalIgnoreCase) == 0) { FileCodeGroup fileCodeGroup = new FileCodeGroup(new AllMembershipCondition(), FileIOPermissionAccess.Read | FileIOPermissionAccess.PathDiscovery); ps = fileCodeGroup.CalculatePolicy(url); if (ps != null) { PermissionSet filePermissionSet = ps.PermissionSet; if (filePermissionSet != null) defaultRequest.InplaceUnion(filePermissionSet); } } } } } } Interlocked.CompareExchange(ref m_defaultRequest, defaultRequest, null); } return m_defaultRequest as PermissionSet; } set { if (value == null) throw new ArgumentNullException("value"); m_defaultRequest = value; } } public Evidence ApplicationEvidence { get { if (m_appEvidence == null) { Evidence appEvidence = new Evidence(); if (m_context != null) { appEvidence = new Evidence(); Url deploymentUrl = new Url(m_context.Identity.CodeBase); appEvidence.AddHost(deploymentUrl); appEvidence.AddHost(Zone.CreateFromUrl(m_context.Identity.CodeBase)); if (String.Compare("file:", 0, m_context.Identity.CodeBase, 0, 5, StringComparison.OrdinalIgnoreCase) != 0) appEvidence.AddHost(Site.CreateFromUrl(m_context.Identity.CodeBase)); appEvidence.AddHost(new StrongName(new StrongNamePublicKeyBlob(DeploymentId.m_publicKeyToken), DeploymentId.Name, DeploymentId.Version)); appEvidence.AddHost(new ActivationArguments(m_context)); } Interlocked.CompareExchange(ref m_appEvidence, appEvidence, null); } return m_appEvidence as Evidence; } set { if (value == null) throw new ArgumentNullException("value"); m_appEvidence = value; } } // // Internal. // private static ApplicationId ParseApplicationId (ICMS manifest) { if (manifest.Identity == null) return null; return new ApplicationId(Hex.DecodeHexString(manifest.Identity.GetAttribute("", "publicKeyToken")), manifest.Identity.GetAttribute("", "name"), new Version(manifest.Identity.GetAttribute("", "version")), manifest.Identity.GetAttribute("", "processorArchitecture"), manifest.Identity.GetAttribute("", "culture")); } } } // 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
- SerializationFieldInfo.cs
- SqlPersistenceProviderFactory.cs
- ReferencedCollectionType.cs
- SafeArrayTypeMismatchException.cs
- InfiniteTimeSpanConverter.cs
- RegexCompilationInfo.cs
- Decoder.cs
- x509utils.cs
- OciEnlistContext.cs
- ApplicationContext.cs
- XmlWriter.cs
- ExpandCollapsePattern.cs
- DataBindEngine.cs
- UInt32.cs
- EventsTab.cs
- EntitySqlQueryCacheEntry.cs
- MemoryFailPoint.cs
- DataGridViewRowConverter.cs
- AddInContractAttribute.cs
- TTSEngineTypes.cs
- XmlUtf8RawTextWriter.cs
- DeflateStreamAsyncResult.cs
- OleDbException.cs
- SqlSelectStatement.cs
- AssociatedControlConverter.cs
- PrintEvent.cs
- ManipulationVelocities.cs
- XmlNamedNodeMap.cs
- OleServicesContext.cs
- QueryCacheManager.cs
- HttpApplicationStateBase.cs
- DataControlFieldCell.cs
- CellTreeNode.cs
- UIPropertyMetadata.cs
- GraphicsContainer.cs
- FreeFormDesigner.cs
- CalendarTable.cs
- FixedTextContainer.cs
- Ticks.cs
- DbConnectionPoolCounters.cs
- ValidationErrorEventArgs.cs
- GenericPrincipal.cs
- InstallerTypeAttribute.cs
- GridView.cs
- ControlBindingsCollection.cs
- ThreadTrace.cs
- NotImplementedException.cs
- SvcMapFile.cs
- InvalidateEvent.cs
- AutoScrollExpandMessageFilter.cs
- ObjectKeyFrameCollection.cs
- PenLineCapValidation.cs
- EntityChangedParams.cs
- VirtualPath.cs
- XsltConvert.cs
- XmlUtil.cs
- Variant.cs
- EdmValidator.cs
- PortCache.cs
- RunClient.cs
- InstalledFontCollection.cs
- CLRBindingWorker.cs
- MetadataCacheItem.cs
- CacheAxisQuery.cs
- LicenseManager.cs
- XmlEntityReference.cs
- xmlfixedPageInfo.cs
- ExpanderAutomationPeer.cs
- ColorTranslator.cs
- Part.cs
- StdRegProviderWrapper.cs
- BitmapEffectRenderDataResource.cs
- HwndHost.cs
- LassoSelectionBehavior.cs
- SQLInt64Storage.cs
- AddIn.cs
- CompModHelpers.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- WmlLabelAdapter.cs
- SystemIPGlobalStatistics.cs
- XamlTypeMapper.cs
- TransportSecurityProtocolFactory.cs
- StreamReader.cs
- DataGridViewCellValueEventArgs.cs
- ApplicationHost.cs
- FlowchartSizeFeature.cs
- PartitionerStatic.cs
- CompilationPass2Task.cs
- DependencyPropertyDescriptor.cs
- DataGrid.cs
- RelatedPropertyManager.cs
- TrackingRecordPreFilter.cs
- ListItemConverter.cs
- DesignObjectWrapper.cs
- ReflectionServiceProvider.cs
- ObjectDataSourceStatusEventArgs.cs
- DataComponentNameHandler.cs
- TrustLevel.cs
- StylusPlugin.cs
- PartialCachingControl.cs