Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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")); } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Sentence.cs
- CodeParameterDeclarationExpressionCollection.cs
- StreamInfo.cs
- CodeIdentifiers.cs
- IDispatchConstantAttribute.cs
- HtmlContainerControl.cs
- Publisher.cs
- DataGridViewDataConnection.cs
- _FixedSizeReader.cs
- SByteConverter.cs
- Buffer.cs
- RawStylusInput.cs
- WebResourceAttribute.cs
- LinearGradientBrush.cs
- RuntimeCompatibilityAttribute.cs
- OdbcParameterCollection.cs
- Timer.cs
- _HeaderInfoTable.cs
- COM2EnumConverter.cs
- AuthenticationModuleElement.cs
- Point3DCollection.cs
- Operand.cs
- QueryNode.cs
- DbParameterCollectionHelper.cs
- SiblingIterators.cs
- control.ime.cs
- PrinterSettings.cs
- SoapElementAttribute.cs
- WebServiceTypeData.cs
- RefType.cs
- BamlRecordHelper.cs
- DesignerActionKeyboardBehavior.cs
- StorageInfo.cs
- WebPartDisplayModeCancelEventArgs.cs
- EndpointDesigner.cs
- DBSchemaRow.cs
- DefaultCommandExtensionCallback.cs
- NameSpaceExtractor.cs
- BuildProviderCollection.cs
- ReadOnlyActivityGlyph.cs
- FirewallWrapper.cs
- HostUtils.cs
- ButtonRenderer.cs
- ConsoleTraceListener.cs
- DesigntimeLicenseContext.cs
- XmlSignatureManifest.cs
- ConfigXmlCDataSection.cs
- safelinkcollection.cs
- ClientScriptManager.cs
- SimpleWorkerRequest.cs
- CommandHelpers.cs
- WmpBitmapEncoder.cs
- PopOutPanel.cs
- ZoneLinkButton.cs
- SecurityException.cs
- MSG.cs
- WebWorkflowRole.cs
- GradientStop.cs
- DataGridTableCollection.cs
- Currency.cs
- DeclaredTypeElementCollection.cs
- QueryStringParameter.cs
- BindingNavigatorDesigner.cs
- ApplicationHost.cs
- DoubleConverter.cs
- IdentitySection.cs
- SqlDataSourceFilteringEventArgs.cs
- CheckBoxStandardAdapter.cs
- HttpResponseInternalBase.cs
- DocumentPaginator.cs
- FilterEventArgs.cs
- EntityWrapperFactory.cs
- WebConfigurationHostFileChange.cs
- TreeViewAutomationPeer.cs
- Accessible.cs
- XmlSchemas.cs
- HttpRequestMessageProperty.cs
- DelegatingTypeDescriptionProvider.cs
- DataGridCaption.cs
- SqlDelegatedTransaction.cs
- ComPlusServiceHost.cs
- HeaderedItemsControl.cs
- ListViewSelectEventArgs.cs
- NumberFormatInfo.cs
- SessionStateSection.cs
- ImageMapEventArgs.cs
- FilterableAttribute.cs
- DbDataSourceEnumerator.cs
- ContextMenu.cs
- MetaModel.cs
- MatrixStack.cs
- TextRangeEditTables.cs
- SchemaReference.cs
- TraceRecord.cs
- CmsInterop.cs
- RequestQueryParser.cs
- ContentFileHelper.cs
- FixUp.cs
- ReachVisualSerializerAsync.cs
- SplineKeyFrames.cs