Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / NamedPermissionSet.cs / 1305376 / NamedPermissionSet.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // NamedPermissionSet.cs // //[....] // // Extends PermissionSet to allow an associated name and description // namespace System.Security { using System; using System.Security.Util; using System.Security.Permissions; using System.Runtime.Serialization; using System.Diagnostics.Contracts; #if !FEATURE_CAS_POLICY using Microsoft.Win32; using System.Collections; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.Runtime.Versioning; using System.Text; #else // FEATURE_CAS_POLICY using System.Threading; #endif // FEATURE_CAS_POLICY [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class NamedPermissionSet : PermissionSet { #if FEATURE_CAS_POLICY // The name of this PermissionSet private String m_name; // The description of this PermissionSet private String m_description; [OptionalField(VersionAdded = 2)] internal String m_descrResource; internal NamedPermissionSet() : base() { } public NamedPermissionSet( String name ) : base() { CheckName( name ); m_name = name; } public NamedPermissionSet( String name, PermissionState state) : base( state ) { CheckName( name ); m_name = name; } public NamedPermissionSet( String name, PermissionSet permSet ) : base( permSet ) { CheckName( name ); m_name = name; } public NamedPermissionSet( NamedPermissionSet permSet ) : base( permSet ) { m_name = permSet.m_name; m_description = permSet.Description; } internal NamedPermissionSet(SecurityElement permissionSetXml) : base(PermissionState.None) { Contract.Assert(permissionSetXml != null); FromXml(permissionSetXml); } public String Name { get { return m_name; } set { CheckName( value ); m_name = value; } } private static void CheckName( String name ) { if (name == null || name.Equals( "" )) throw new ArgumentException( Environment.GetResourceString( "Argument_NPMSInvalidName" )); Contract.EndContractBlock(); } public String Description { get { if(m_descrResource != null) { m_description = Environment.GetResourceString(m_descrResource); m_descrResource = null; } return m_description; } set { m_description = value; m_descrResource = null; } } public override PermissionSet Copy() { return new NamedPermissionSet( this ); } public NamedPermissionSet Copy( String name ) { NamedPermissionSet set = new NamedPermissionSet( this ); set.Name = name; return set; } [System.Security.SecuritySafeCritical] // auto-generated public override SecurityElement ToXml() { SecurityElement elem = base.ToXml("System.Security.NamedPermissionSet"); // If you hit this assert then most likely you are trying to change the name of this class. // This is ok as long as you change the hard coded string above and change the assert below. Contract.Assert( this.GetType().FullName.Equals( "System.Security.NamedPermissionSet" ), "Class name changed!" ); if (m_name != null && !m_name.Equals( "" )) { elem.AddAttribute( "Name", SecurityElement.Escape( m_name ) ); } if (Description != null && !Description.Equals( "" )) { elem.AddAttribute( "Description", SecurityElement.Escape( Description ) ); } return elem; } public override void FromXml( SecurityElement et ) { FromXml( et, false, false ); } internal override void FromXml( SecurityElement et, bool allowInternalOnly, bool ignoreTypeLoadFailures ) { if (et == null) throw new ArgumentNullException( "et" ); Contract.EndContractBlock(); String elem; elem = et.Attribute( "Name" ); m_name = elem == null ? null : elem; elem = et.Attribute( "Description" ); m_description = (elem == null ? "" : elem); m_descrResource = null; base.FromXml( et, allowInternalOnly, ignoreTypeLoadFailures ); } internal void FromXmlNameOnly( SecurityElement et ) { // This function gets only the name for the permission set, ignoring all other info. String elem; elem = et.Attribute( "Name" ); m_name = (elem == null ? null : elem); } // NamedPermissionSet Equals should have the exact semantic as PermissionSet. // We explicitly override them here to make sure that no one accidently // changes this. [System.Runtime.InteropServices.ComVisible(false)] public override bool Equals( Object obj ) { return base.Equals( obj ); } [System.Runtime.InteropServices.ComVisible(false)] public override int GetHashCode() { return base.GetHashCode(); } private static Object s_InternalSyncObject; private static Object InternalSyncObject { get { if (s_InternalSyncObject == null) { Object o = new Object(); Interlocked.CompareExchange(ref s_InternalSyncObject, o, null); } return s_InternalSyncObject; } } #else // FEATURE_CAS_POLICY internal static PermissionSet GetBuiltInSet(string name) { // Used by PermissionSetAttribute to create one of the built-in, // immutable permission sets. if (name == null) return null; else if (name.Equals("FullTrust")) return CreateFullTrustSet(); else if (name.Equals("Nothing")) return CreateNothingSet(); else if (name.Equals("Execution")) return CreateExecutionSet(); else if (name.Equals("SkipVerification")) return CreateSkipVerificationSet(); else if (name.Equals("Internet")) return CreateInternetSet(); else return null; } private static PermissionSet CreateFullTrustSet() { return new PermissionSet(PermissionState.Unrestricted); } private static PermissionSet CreateNothingSet() { return new PermissionSet(PermissionState.None); } private static PermissionSet CreateExecutionSet() { PermissionSet permSet = new PermissionSet(PermissionState.None); permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); return permSet; } private static PermissionSet CreateSkipVerificationSet() { PermissionSet permSet = new PermissionSet(PermissionState.None); permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.SkipVerification)); return permSet; } private static PermissionSet CreateInternetSet() { PermissionSet permSet = new PermissionSet(PermissionState.None); permSet.AddPermission(new FileDialogPermission(FileDialogPermissionAccess.Open)); permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); permSet.AddPermission(new UIPermission(UIPermissionWindow.SafeTopLevelWindows, UIPermissionClipboard.OwnClipboard)); return permSet; } #endif // !FEATURE_CAS_POLICY } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // NamedPermissionSet.cs // //[....] // // Extends PermissionSet to allow an associated name and description // namespace System.Security { using System; using System.Security.Util; using System.Security.Permissions; using System.Runtime.Serialization; using System.Diagnostics.Contracts; #if !FEATURE_CAS_POLICY using Microsoft.Win32; using System.Collections; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.Runtime.Versioning; using System.Text; #else // FEATURE_CAS_POLICY using System.Threading; #endif // FEATURE_CAS_POLICY [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class NamedPermissionSet : PermissionSet { #if FEATURE_CAS_POLICY // The name of this PermissionSet private String m_name; // The description of this PermissionSet private String m_description; [OptionalField(VersionAdded = 2)] internal String m_descrResource; internal NamedPermissionSet() : base() { } public NamedPermissionSet( String name ) : base() { CheckName( name ); m_name = name; } public NamedPermissionSet( String name, PermissionState state) : base( state ) { CheckName( name ); m_name = name; } public NamedPermissionSet( String name, PermissionSet permSet ) : base( permSet ) { CheckName( name ); m_name = name; } public NamedPermissionSet( NamedPermissionSet permSet ) : base( permSet ) { m_name = permSet.m_name; m_description = permSet.Description; } internal NamedPermissionSet(SecurityElement permissionSetXml) : base(PermissionState.None) { Contract.Assert(permissionSetXml != null); FromXml(permissionSetXml); } public String Name { get { return m_name; } set { CheckName( value ); m_name = value; } } private static void CheckName( String name ) { if (name == null || name.Equals( "" )) throw new ArgumentException( Environment.GetResourceString( "Argument_NPMSInvalidName" )); Contract.EndContractBlock(); } public String Description { get { if(m_descrResource != null) { m_description = Environment.GetResourceString(m_descrResource); m_descrResource = null; } return m_description; } set { m_description = value; m_descrResource = null; } } public override PermissionSet Copy() { return new NamedPermissionSet( this ); } public NamedPermissionSet Copy( String name ) { NamedPermissionSet set = new NamedPermissionSet( this ); set.Name = name; return set; } [System.Security.SecuritySafeCritical] // auto-generated public override SecurityElement ToXml() { SecurityElement elem = base.ToXml("System.Security.NamedPermissionSet"); // If you hit this assert then most likely you are trying to change the name of this class. // This is ok as long as you change the hard coded string above and change the assert below. Contract.Assert( this.GetType().FullName.Equals( "System.Security.NamedPermissionSet" ), "Class name changed!" ); if (m_name != null && !m_name.Equals( "" )) { elem.AddAttribute( "Name", SecurityElement.Escape( m_name ) ); } if (Description != null && !Description.Equals( "" )) { elem.AddAttribute( "Description", SecurityElement.Escape( Description ) ); } return elem; } public override void FromXml( SecurityElement et ) { FromXml( et, false, false ); } internal override void FromXml( SecurityElement et, bool allowInternalOnly, bool ignoreTypeLoadFailures ) { if (et == null) throw new ArgumentNullException( "et" ); Contract.EndContractBlock(); String elem; elem = et.Attribute( "Name" ); m_name = elem == null ? null : elem; elem = et.Attribute( "Description" ); m_description = (elem == null ? "" : elem); m_descrResource = null; base.FromXml( et, allowInternalOnly, ignoreTypeLoadFailures ); } internal void FromXmlNameOnly( SecurityElement et ) { // This function gets only the name for the permission set, ignoring all other info. String elem; elem = et.Attribute( "Name" ); m_name = (elem == null ? null : elem); } // NamedPermissionSet Equals should have the exact semantic as PermissionSet. // We explicitly override them here to make sure that no one accidently // changes this. [System.Runtime.InteropServices.ComVisible(false)] public override bool Equals( Object obj ) { return base.Equals( obj ); } [System.Runtime.InteropServices.ComVisible(false)] public override int GetHashCode() { return base.GetHashCode(); } private static Object s_InternalSyncObject; private static Object InternalSyncObject { get { if (s_InternalSyncObject == null) { Object o = new Object(); Interlocked.CompareExchange(ref s_InternalSyncObject, o, null); } return s_InternalSyncObject; } } #else // FEATURE_CAS_POLICY internal static PermissionSet GetBuiltInSet(string name) { // Used by PermissionSetAttribute to create one of the built-in, // immutable permission sets. if (name == null) return null; else if (name.Equals("FullTrust")) return CreateFullTrustSet(); else if (name.Equals("Nothing")) return CreateNothingSet(); else if (name.Equals("Execution")) return CreateExecutionSet(); else if (name.Equals("SkipVerification")) return CreateSkipVerificationSet(); else if (name.Equals("Internet")) return CreateInternetSet(); else return null; } private static PermissionSet CreateFullTrustSet() { return new PermissionSet(PermissionState.Unrestricted); } private static PermissionSet CreateNothingSet() { return new PermissionSet(PermissionState.None); } private static PermissionSet CreateExecutionSet() { PermissionSet permSet = new PermissionSet(PermissionState.None); permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); return permSet; } private static PermissionSet CreateSkipVerificationSet() { PermissionSet permSet = new PermissionSet(PermissionState.None); permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.SkipVerification)); return permSet; } private static PermissionSet CreateInternetSet() { PermissionSet permSet = new PermissionSet(PermissionState.None); permSet.AddPermission(new FileDialogPermission(FileDialogPermissionAccess.Open)); permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); permSet.AddPermission(new UIPermission(UIPermissionWindow.SafeTopLevelWindows, UIPermissionClipboard.OwnClipboard)); return permSet; } #endif // !FEATURE_CAS_POLICY } } // 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
- OracleBFile.cs
- XmlValidatingReader.cs
- ControlEvent.cs
- ListViewCancelEventArgs.cs
- DeclaredTypeElement.cs
- RootAction.cs
- Trace.cs
- RemoteWebConfigurationHost.cs
- Task.cs
- IDReferencePropertyAttribute.cs
- SymDocumentType.cs
- DocumentSequence.cs
- ConstantSlot.cs
- PackWebRequestFactory.cs
- BitmapData.cs
- QuaternionIndependentAnimationStorage.cs
- MethodSignatureGenerator.cs
- ListViewItemSelectionChangedEvent.cs
- TextServicesContext.cs
- OleDbError.cs
- WebServiceFault.cs
- TracingConnectionListener.cs
- EventMappingSettingsCollection.cs
- CacheSection.cs
- HttpRuntime.cs
- SponsorHelper.cs
- ListViewCancelEventArgs.cs
- OracleMonthSpan.cs
- TransformPattern.cs
- InternalResources.cs
- FileSystemInfo.cs
- CreateRefExpr.cs
- CapabilitiesPattern.cs
- SamlEvidence.cs
- Column.cs
- TrackingDataItem.cs
- SerializationEventsCache.cs
- RefExpr.cs
- SoapInteropTypes.cs
- Walker.cs
- EditorResources.cs
- CryptoConfig.cs
- VisualStyleInformation.cs
- UrlMappingsModule.cs
- WebDescriptionAttribute.cs
- Image.cs
- MailWebEventProvider.cs
- Point3D.cs
- XamlSerializerUtil.cs
- StandardToolWindows.cs
- HtmlInputRadioButton.cs
- Lasso.cs
- XmlSchemaGroupRef.cs
- FunctionQuery.cs
- FixedElement.cs
- SignerInfo.cs
- dataprotectionpermission.cs
- WebPart.cs
- SerializationInfo.cs
- XmlCodeExporter.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- AnnotationResourceChangedEventArgs.cs
- MSAANativeProvider.cs
- FormViewPageEventArgs.cs
- ApplicationContext.cs
- ComboBoxRenderer.cs
- DataBindingExpressionBuilder.cs
- entitydatasourceentitysetnameconverter.cs
- ErrorFormatterPage.cs
- SymmetricSecurityBindingElement.cs
- ModelVisual3D.cs
- DataControlFieldsEditor.cs
- RayMeshGeometry3DHitTestResult.cs
- Soap.cs
- WindowsEditBox.cs
- SqlGatherConsumedAliases.cs
- WmlObjectListAdapter.cs
- ApplicationProxyInternal.cs
- XmlSubtreeReader.cs
- DataGridViewAdvancedBorderStyle.cs
- ExpressionTextBoxAutomationPeer.cs
- JsonServiceDocumentSerializer.cs
- NonClientArea.cs
- LineBreak.cs
- ToolStripComboBox.cs
- LogReservationCollection.cs
- PassportAuthenticationModule.cs
- TemplateBindingExpressionConverter.cs
- ItemCollection.cs
- AddInIpcChannel.cs
- UserControlCodeDomTreeGenerator.cs
- Brush.cs
- ApplicationDirectory.cs
- ImageResources.Designer.cs
- ValuePatternIdentifiers.cs
- BuildProviderInstallComponent.cs
- SqlServices.cs
- StringFunctions.cs
- EncoderExceptionFallback.cs
- selecteditemcollection.cs