Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RequestCachePolicy.cs
- QilStrConcat.cs
- PaintEvent.cs
- PeerTransportCredentialType.cs
- Page.cs
- InvokeMethod.cs
- SqlOuterApplyReducer.cs
- SystemThemeKey.cs
- WorkflowInlining.cs
- PagesSection.cs
- ITextView.cs
- UInt32.cs
- VisualStyleTypesAndProperties.cs
- NegotiationTokenAuthenticatorStateCache.cs
- Internal.cs
- DuplicateDetector.cs
- MessageSecurityOverMsmq.cs
- FileUtil.cs
- GeneralTransformGroup.cs
- XPathParser.cs
- XmlRawWriterWrapper.cs
- DesignerTextViewAdapter.cs
- PostBackOptions.cs
- MultilineStringConverter.cs
- ThrowHelper.cs
- QilInvoke.cs
- DataGridCaption.cs
- FieldBuilder.cs
- ValueOfAction.cs
- NativeMethods.cs
- Util.cs
- FreezableOperations.cs
- OleDbException.cs
- JapaneseCalendar.cs
- ReadContentAsBinaryHelper.cs
- ObfuscationAttribute.cs
- SqlXmlStorage.cs
- IncrementalReadDecoders.cs
- InplaceBitmapMetadataWriter.cs
- ExpressionBinding.cs
- EllipticalNodeOperations.cs
- HttpListenerContext.cs
- FormViewDeleteEventArgs.cs
- StorageAssociationSetMapping.cs
- GlyphCollection.cs
- WarningException.cs
- Font.cs
- SessionStateUtil.cs
- EditorPartCollection.cs
- Activity.cs
- CipherData.cs
- StoreAnnotationsMap.cs
- TypeTypeConverter.cs
- StringSorter.cs
- OrderingExpression.cs
- ImmutableCollection.cs
- EventLogEntry.cs
- ValidationSummary.cs
- ByteStorage.cs
- SecurityIdentifierElement.cs
- UserControlBuildProvider.cs
- WhitespaceSignificantCollectionAttribute.cs
- QilBinary.cs
- TreeNode.cs
- DbDataAdapter.cs
- LayoutEngine.cs
- namescope.cs
- Intellisense.cs
- SystemIcmpV6Statistics.cs
- WorkflowInstance.cs
- SHA512CryptoServiceProvider.cs
- CompileXomlTask.cs
- AstNode.cs
- NamedPipeTransportSecurity.cs
- OpenFileDialog.cs
- MergeFilterQuery.cs
- _FixedSizeReader.cs
- ExpandCollapseProviderWrapper.cs
- HierarchicalDataBoundControl.cs
- TreeBuilder.cs
- OleDbCommand.cs
- Timer.cs
- WorkflowMarkupSerializerMapping.cs
- PersianCalendar.cs
- ColorAnimation.cs
- ReadOnlyCollectionBuilder.cs
- SubstitutionList.cs
- TextFormatterContext.cs
- DoubleCollectionValueSerializer.cs
- ScrollBarRenderer.cs
- SecurityContext.cs
- NameValuePair.cs
- ActivityIdHeader.cs
- Lasso.cs
- PolygonHotSpot.cs
- WebMessageFormatHelper.cs
- ToolStripItemEventArgs.cs
- DoubleKeyFrameCollection.cs
- DuplicateContext.cs
- IsolatedStorageFilePermission.cs