Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / SystemNet / Net / PeerToPeer / PnrpPermission.cs / 1 / PnrpPermission.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Net.PeerToPeer
{
using System.Security;
using System.Security.Permissions;
using System.Globalization;
///
/// PnrpPermission atrribute
///
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor |
AttributeTargets.Class | AttributeTargets.Struct |
AttributeTargets.Assembly,
AllowMultiple = true, Inherited = false)]
[Serializable()]
public sealed class PnrpPermissionAttribute : CodeAccessSecurityAttribute
{
///
/// Just call base constructor
///
///
public PnrpPermissionAttribute(SecurityAction action) : base(action) { }
///
/// As required by the SecurityAttribute class.
///
///
public override IPermission CreatePermission() {
if (Unrestricted) {
return new PnrpPermission(PermissionState.Unrestricted);
}
else {
return new PnrpPermission(PermissionState.None);
}
}
}
///
/// Currently we only support two levels - Unrestrictred or none
///
[Serializable]
public sealed class PnrpPermission : CodeAccessPermission, IUnrestrictedPermission
{
private bool m_noRestriction;
internal static readonly PnrpPermission UnrestrictedPnrpPermission = new PnrpPermission(PermissionState.Unrestricted);
///
///
/// Creates a new instance of the
/// class that passes all demands or that fails all demands.
///
///
public PnrpPermission(PermissionState state)
{
m_noRestriction = (state == PermissionState.Unrestricted);
}
internal PnrpPermission(bool free)
{
m_noRestriction = free;
}
// IUnrestrictedPermission interface methods
///
///
/// Checks the overall permission state of the object.
///
///
public bool IsUnrestricted()
{
return m_noRestriction;
}
// IPermission interface methods
///
///
/// Creates a copy of a instance.
///
///
public override IPermission Copy()
{
return new PnrpPermission(m_noRestriction);
}
///
/// Returns the logical union between two instances.
///
public override IPermission Union(IPermission target)
{
// Pattern suggested by Security engine
if (target == null) {
return this.Copy();
}
PnrpPermission other = target as PnrpPermission;
if (other == null) {
throw new ArgumentException( SR.GetString(SR.PnrpPermission_CantUnionWithNonPnrpPermission), "target");
}
return new PnrpPermission(m_noRestriction || other.m_noRestriction);
}
///
/// Returns the logical intersection between two instances.
///
public override IPermission Intersect(IPermission target)
{
// Pattern suggested by Security engine
if (target == null) {
return null;
}
PnrpPermission other = target as PnrpPermission;
if (other == null) {
throw new ArgumentException(SR.GetString(SR.PnrpPermission_CantIntersectWithNonPnrpPermission), "target");
}
// return null if resulting permission is restricted and empty
// Hence, the only way for a bool permission will be.
if (this.m_noRestriction && other.m_noRestriction) {
return new PnrpPermission(true);
}
return null;
}
///
/// Compares two instances.
///
public override bool IsSubsetOf(IPermission target)
{
// Pattern suggested by Security engine
if (target == null) {
return m_noRestriction == false;
}
PnrpPermission other = target as PnrpPermission;
if (other == null) {
throw new ArgumentException(SR.GetString(SR.PnrpPermission_TargetNotAPnrpPermission), "target");
}
//Here is the matrix of result based on m_noRestriction for me and she
// me.noRestriction she.noRestriction me.isSubsetOf(she)
// 0 0 1
// 0 1 1
// 1 0 0
// 1 1 1
return (!m_noRestriction || other.m_noRestriction);
}
///
/// Cinstrcy from a security element
///
///
public override void FromXml(SecurityElement e)
{
if (e == null) {
throw new ArgumentNullException(SR.GetString(SR.InvalidSecurityElem));
}
// SecurityElement must be a permission element
if (!e.Tag.Equals("IPermission")) {
throw new ArgumentException(SR.GetString(SR.InvalidSecurityElem), "securityElement");
}
string className = e.Attribute("class");
// SecurityElement must be a permission element for this type
if (className == null) {
throw new ArgumentException(SR.GetString(SR.InvalidSecurityElem), "securityElement");
}
if (className.IndexOf(this.GetType().FullName, StringComparison.Ordinal) < 0) {
throw new ArgumentException(SR.GetString(SR.InvalidSecurityElem), "securityElement");
}
string str = e.Attribute("Unrestricted");
m_noRestriction = (str != null ? (0 == string.Compare(str, "true", StringComparison.OrdinalIgnoreCase)) : false);
}
///
/// Copyto a security element
///
///
public override SecurityElement ToXml()
{
SecurityElement securityElement = new SecurityElement("IPermission");
securityElement.AddAttribute("class", this.GetType().FullName + ", " + this.GetType().Module.Assembly.FullName.Replace('\"', '\''));
securityElement.AddAttribute("version", "1");
if (m_noRestriction) {
securityElement.AddAttribute("Unrestricted", "true");
}
return securityElement;
}
} // class PnrpPermission
} // namespace System.Net.PeerToPeer
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Net.PeerToPeer
{
using System.Security;
using System.Security.Permissions;
using System.Globalization;
///
/// PnrpPermission atrribute
///
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor |
AttributeTargets.Class | AttributeTargets.Struct |
AttributeTargets.Assembly,
AllowMultiple = true, Inherited = false)]
[Serializable()]
public sealed class PnrpPermissionAttribute : CodeAccessSecurityAttribute
{
///
/// Just call base constructor
///
///
public PnrpPermissionAttribute(SecurityAction action) : base(action) { }
///
/// As required by the SecurityAttribute class.
///
///
public override IPermission CreatePermission() {
if (Unrestricted) {
return new PnrpPermission(PermissionState.Unrestricted);
}
else {
return new PnrpPermission(PermissionState.None);
}
}
}
///
/// Currently we only support two levels - Unrestrictred or none
///
[Serializable]
public sealed class PnrpPermission : CodeAccessPermission, IUnrestrictedPermission
{
private bool m_noRestriction;
internal static readonly PnrpPermission UnrestrictedPnrpPermission = new PnrpPermission(PermissionState.Unrestricted);
///
///
/// Creates a new instance of the
/// class that passes all demands or that fails all demands.
///
///
public PnrpPermission(PermissionState state)
{
m_noRestriction = (state == PermissionState.Unrestricted);
}
internal PnrpPermission(bool free)
{
m_noRestriction = free;
}
// IUnrestrictedPermission interface methods
///
///
/// Checks the overall permission state of the object.
///
///
public bool IsUnrestricted()
{
return m_noRestriction;
}
// IPermission interface methods
///
///
/// Creates a copy of a instance.
///
///
public override IPermission Copy()
{
return new PnrpPermission(m_noRestriction);
}
///
/// Returns the logical union between two instances.
///
public override IPermission Union(IPermission target)
{
// Pattern suggested by Security engine
if (target == null) {
return this.Copy();
}
PnrpPermission other = target as PnrpPermission;
if (other == null) {
throw new ArgumentException( SR.GetString(SR.PnrpPermission_CantUnionWithNonPnrpPermission), "target");
}
return new PnrpPermission(m_noRestriction || other.m_noRestriction);
}
///
/// Returns the logical intersection between two instances.
///
public override IPermission Intersect(IPermission target)
{
// Pattern suggested by Security engine
if (target == null) {
return null;
}
PnrpPermission other = target as PnrpPermission;
if (other == null) {
throw new ArgumentException(SR.GetString(SR.PnrpPermission_CantIntersectWithNonPnrpPermission), "target");
}
// return null if resulting permission is restricted and empty
// Hence, the only way for a bool permission will be.
if (this.m_noRestriction && other.m_noRestriction) {
return new PnrpPermission(true);
}
return null;
}
///
/// Compares two instances.
///
public override bool IsSubsetOf(IPermission target)
{
// Pattern suggested by Security engine
if (target == null) {
return m_noRestriction == false;
}
PnrpPermission other = target as PnrpPermission;
if (other == null) {
throw new ArgumentException(SR.GetString(SR.PnrpPermission_TargetNotAPnrpPermission), "target");
}
//Here is the matrix of result based on m_noRestriction for me and she
// me.noRestriction she.noRestriction me.isSubsetOf(she)
// 0 0 1
// 0 1 1
// 1 0 0
// 1 1 1
return (!m_noRestriction || other.m_noRestriction);
}
///
/// Cinstrcy from a security element
///
///
public override void FromXml(SecurityElement e)
{
if (e == null) {
throw new ArgumentNullException(SR.GetString(SR.InvalidSecurityElem));
}
// SecurityElement must be a permission element
if (!e.Tag.Equals("IPermission")) {
throw new ArgumentException(SR.GetString(SR.InvalidSecurityElem), "securityElement");
}
string className = e.Attribute("class");
// SecurityElement must be a permission element for this type
if (className == null) {
throw new ArgumentException(SR.GetString(SR.InvalidSecurityElem), "securityElement");
}
if (className.IndexOf(this.GetType().FullName, StringComparison.Ordinal) < 0) {
throw new ArgumentException(SR.GetString(SR.InvalidSecurityElem), "securityElement");
}
string str = e.Attribute("Unrestricted");
m_noRestriction = (str != null ? (0 == string.Compare(str, "true", StringComparison.OrdinalIgnoreCase)) : false);
}
///
/// Copyto a security element
///
///
public override SecurityElement ToXml()
{
SecurityElement securityElement = new SecurityElement("IPermission");
securityElement.AddAttribute("class", this.GetType().FullName + ", " + this.GetType().Module.Assembly.FullName.Replace('\"', '\''));
securityElement.AddAttribute("version", "1");
if (m_noRestriction) {
securityElement.AddAttribute("Unrestricted", "true");
}
return securityElement;
}
} // class PnrpPermission
} // namespace System.Net.PeerToPeer
// 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
- TextEditorParagraphs.cs
- GridViewUpdateEventArgs.cs
- Membership.cs
- TransactionsSectionGroup.cs
- CustomCategoryAttribute.cs
- TemplateControlCodeDomTreeGenerator.cs
- WebSysDefaultValueAttribute.cs
- CodeGen.cs
- HttpWebRequest.cs
- PropertyTabAttribute.cs
- FixedSOMElement.cs
- SevenBitStream.cs
- DataGridViewCheckBoxCell.cs
- TriggerActionCollection.cs
- DefaultShape.cs
- AlternateView.cs
- DataGridViewColumn.cs
- VersionedStreamOwner.cs
- PropertyCondition.cs
- VisualBasic.cs
- WsrmFault.cs
- TraceFilter.cs
- InvalidStoreProtectionKeyException.cs
- MultiSelectRootGridEntry.cs
- TypeDescriptor.cs
- OSFeature.cs
- StyleCollection.cs
- BufferModeSettings.cs
- CheckBox.cs
- DriveInfo.cs
- BindingSource.cs
- EntityDataSourceWrapperCollection.cs
- Point4D.cs
- XmlUtilWriter.cs
- TextEditorSelection.cs
- DragDeltaEventArgs.cs
- PartialCachingAttribute.cs
- InstalledFontCollection.cs
- PEFileReader.cs
- PropertyPushdownHelper.cs
- TextStore.cs
- WebEventTraceProvider.cs
- DesignerAttribute.cs
- StringKeyFrameCollection.cs
- CodeEventReferenceExpression.cs
- DataGridLinkButton.cs
- MenuItem.cs
- UpdateManifestForBrowserApplication.cs
- ErrorWebPart.cs
- Utility.cs
- UpDownEvent.cs
- Int16Storage.cs
- Converter.cs
- HandlerBase.cs
- MimeMapping.cs
- SerialReceived.cs
- HttpDictionary.cs
- SmiEventSink_Default.cs
- IPPacketInformation.cs
- CorrelationToken.cs
- Int16KeyFrameCollection.cs
- DistinctQueryOperator.cs
- ClipboardProcessor.cs
- XsdBuilder.cs
- EntityType.cs
- WebBrowserNavigatingEventHandler.cs
- QueueProcessor.cs
- VariableDesigner.xaml.cs
- CurrentChangedEventManager.cs
- Page.cs
- DbConnectionStringCommon.cs
- TextRunProperties.cs
- DbTypeMap.cs
- XmlILStorageConverter.cs
- OracleNumber.cs
- NegotiationTokenAuthenticator.cs
- EntityClientCacheEntry.cs
- GetPageNumberCompletedEventArgs.cs
- OperationFormatStyle.cs
- ConfigXmlWhitespace.cs
- DrawListViewColumnHeaderEventArgs.cs
- ValidationSummaryDesigner.cs
- RegexWorker.cs
- TextFormatterHost.cs
- SecurityHelper.cs
- EndpointFilterProvider.cs
- LocalBuilder.cs
- DirectoryObjectSecurity.cs
- Normalization.cs
- SrgsRulesCollection.cs
- SqlTypeConverter.cs
- ButtonAutomationPeer.cs
- DirectoryGroupQuery.cs
- TransportReplyChannelAcceptor.cs
- TouchesOverProperty.cs
- StateMachineSubscriptionManager.cs
- HttpServerVarsCollection.cs
- __Filters.cs
- ClickablePoint.cs
- KeysConverter.cs