Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Security / Permissions / URLIdentityPermission.cs / 1 / URLIdentityPermission.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // UrlIdentityPermission.cs // namespace System.Security.Permissions { using System; using SecurityElement = System.Security.SecurityElement; using System.Security.Util; using System.IO; using System.Text; using System.Collections; using System.Globalization; using System.Runtime.Serialization; [System.Runtime.InteropServices.ComVisible(true)] [Serializable] sealed public class UrlIdentityPermission : CodeAccessPermission, IBuiltInPermission { //------------------------------------------------------ // // PRIVATE STATE DATA // //----------------------------------------------------- [OptionalField(VersionAdded = 2)] private bool m_unrestricted; [OptionalField(VersionAdded = 2)] private URLString[] m_urls; // This field will be populated only for non X-AD scenarios where we create a XML-ised string of the Permission [OptionalField(VersionAdded = 2)] private String m_serializedPermission; // This field is legacy info from v1.x and is never used in v2.0 and beyond: purely for serialization purposes private URLString m_url; [OnDeserialized] private void OnDeserialized(StreamingContext ctx) { // v2.0 and beyond XML case if (m_serializedPermission != null) { FromXml(SecurityElement.FromString(m_serializedPermission)); m_serializedPermission = null; } else if (m_url != null) //v1.x case where we read the m_site value { m_unrestricted = false; m_urls = new URLString[1]; m_urls[0] = m_url; m_url = null; } } [OnSerializing] private void OnSerializing(StreamingContext ctx) { if ((ctx.State & ~(StreamingContextStates.Clone|StreamingContextStates.CrossAppDomain)) != 0) { m_serializedPermission = ToXml().ToString(); //for the v2 and beyond case if (m_urls != null && m_urls.Length == 1) // for the v1.x case m_url = m_urls[0]; } } [OnSerialized] private void OnSerialized(StreamingContext ctx) { if ((ctx.State & ~(StreamingContextStates.Clone|StreamingContextStates.CrossAppDomain)) != 0) { m_serializedPermission = null; m_url = null; } } //----------------------------------------------------- // // PUBLIC CONSTRUCTORS // //----------------------------------------------------- public UrlIdentityPermission(PermissionState state) { if (state == PermissionState.Unrestricted) { if(CodeAccessSecurityEngine.DoesFullTrustMeanFullTrust()) m_unrestricted = true; else throw new ArgumentException(Environment.GetResourceString("Argument_UnrestrictedIdentityPermission")); } else if (state == PermissionState.None) { m_unrestricted = false; } else { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState")); } } public UrlIdentityPermission( String site ) { if (site == null) throw new ArgumentNullException( "site" ); Url = site; } internal UrlIdentityPermission( URLString site ) { m_unrestricted = false; m_urls = new URLString[1]; m_urls[0] = site; } //------------------------------------------------------ // // PUBLIC ACCESSOR METHODS // //----------------------------------------------------- public String Url { set { m_unrestricted = false; if(value == null || value.Length == 0) m_urls = null; else { m_urls = new URLString[1]; m_urls[0] = new URLString( value ); } } get { if(m_urls == null) return ""; if(m_urls.Length == 1) return m_urls[0].ToString(); throw new NotSupportedException(Environment.GetResourceString("NotSupported_AmbiguousIdentity")); } } //------------------------------------------------------ // // PRIVATE AND PROTECTED HELPERS FOR ACCESSORS AND CONSTRUCTORS // //------------------------------------------------------ //----------------------------------------------------- // // CODEACCESSPERMISSION IMPLEMENTATION // //------------------------------------------------------ //----------------------------------------------------- // // IPERMISSION IMPLEMENTATION // //----------------------------------------------------- public override IPermission Copy() { UrlIdentityPermission perm = new UrlIdentityPermission( PermissionState.None ); perm.m_unrestricted = this.m_unrestricted; if (this.m_urls != null) { perm.m_urls = new URLString[this.m_urls.Length]; int n; for(n = 0; n < this.m_urls.Length; n++) perm.m_urls[n] = (URLString)this.m_urls[n].Copy(); } return perm; } public override bool IsSubsetOf(IPermission target) { if (target == null) { if(m_unrestricted) return false; if(m_urls == null) return true; if(m_urls.Length == 0) return true; return false; } UrlIdentityPermission that = target as UrlIdentityPermission; if(that == null) throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)); if(that.m_unrestricted) return true; if(m_unrestricted) return false; if(this.m_urls != null) { foreach(URLString usThis in this.m_urls) { bool bOK = false; if(that.m_urls != null) { foreach(URLString usThat in that.m_urls) { if(usThis.IsSubsetOf(usThat)) { bOK = true; break; } } } if(!bOK) return false; } } return true; } public override IPermission Intersect(IPermission target) { if (target == null) return null; UrlIdentityPermission that = target as UrlIdentityPermission; if(that == null) throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)); if(this.m_unrestricted && that.m_unrestricted) { UrlIdentityPermission res = new UrlIdentityPermission(PermissionState.None); res.m_unrestricted = true; return res; } if(this.m_unrestricted) return that.Copy(); if(that.m_unrestricted) return this.Copy(); if(this.m_urls == null || that.m_urls == null || this.m_urls.Length == 0 || that.m_urls.Length == 0) return null; ArrayList alUrls = new ArrayList(); foreach(URLString usThis in this.m_urls) { foreach(URLString usThat in that.m_urls) { URLString usInt = (URLString)usThis.Intersect(usThat); if(usInt != null) alUrls.Add(usInt); } } if(alUrls.Count == 0) return null; UrlIdentityPermission result = new UrlIdentityPermission(PermissionState.None); result.m_urls = (URLString[])alUrls.ToArray(typeof(URLString)); return result; } public override IPermission Union(IPermission target) { if (target == null) { if((this.m_urls == null || this.m_urls.Length == 0) && !this.m_unrestricted) return null; return this.Copy(); } UrlIdentityPermission that = target as UrlIdentityPermission; if(that == null) throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)); if(this.m_unrestricted || that.m_unrestricted) { UrlIdentityPermission res = new UrlIdentityPermission(PermissionState.None); res.m_unrestricted = true; return res; } if (this.m_urls == null || this.m_urls.Length == 0) { if(that.m_urls == null || that.m_urls.Length == 0) return null; return that.Copy(); } if(that.m_urls == null || that.m_urls.Length == 0) return this.Copy(); ArrayList alUrls = new ArrayList(); foreach(URLString usThis in this.m_urls) alUrls.Add(usThis); foreach(URLString usThat in that.m_urls) { bool bDupe = false; foreach(URLString us in alUrls) { if(usThat.Equals(us)) { bDupe = true; break; } } if(!bDupe) alUrls.Add(usThat); } UrlIdentityPermission result = new UrlIdentityPermission(PermissionState.None); result.m_urls = (URLString[])alUrls.ToArray(typeof(URLString)); return result; } public override void FromXml(SecurityElement esd) { m_unrestricted = false; m_urls = null; CodeAccessPermission.ValidateElement( esd, this ); String unr = esd.Attribute( "Unrestricted" ); if(unr != null && String.Compare(unr, "true", StringComparison.OrdinalIgnoreCase) == 0) { m_unrestricted = true; return; } String elem = esd.Attribute( "Url" ); ArrayList al = new ArrayList(); if(elem != null) al.Add(new URLString( elem, true )); ArrayList alChildren = esd.Children; if(alChildren != null) { foreach(SecurityElement child in alChildren) { elem = child.Attribute( "Url" ); if(elem != null) al.Add(new URLString( elem, true )); } } if(al.Count != 0) m_urls = (URLString[])al.ToArray(typeof(URLString)); } public override SecurityElement ToXml() { SecurityElement esd = CodeAccessPermission.CreatePermissionElement( this, "System.Security.Permissions.UrlIdentityPermission" ); if (m_unrestricted) esd.AddAttribute( "Unrestricted", "true" ); else if (m_urls != null) { if (m_urls.Length == 1) esd.AddAttribute( "Url", m_urls[0].ToString() ); else { int n; for(n = 0; n < m_urls.Length; n++) { SecurityElement child = new SecurityElement("Url"); child.AddAttribute( "Url", m_urls[n].ToString() ); esd.AddChild(child); } } } return esd; } ///int IBuiltInPermission.GetTokenIndex() { return UrlIdentityPermission.GetTokenIndex(); } internal static int GetTokenIndex() { return BuiltInPermissionIndex.UrlIdentityPermissionIndex; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // UrlIdentityPermission.cs // namespace System.Security.Permissions { using System; using SecurityElement = System.Security.SecurityElement; using System.Security.Util; using System.IO; using System.Text; using System.Collections; using System.Globalization; using System.Runtime.Serialization; [System.Runtime.InteropServices.ComVisible(true)] [Serializable] sealed public class UrlIdentityPermission : CodeAccessPermission, IBuiltInPermission { //------------------------------------------------------ // // PRIVATE STATE DATA // //----------------------------------------------------- [OptionalField(VersionAdded = 2)] private bool m_unrestricted; [OptionalField(VersionAdded = 2)] private URLString[] m_urls; // This field will be populated only for non X-AD scenarios where we create a XML-ised string of the Permission [OptionalField(VersionAdded = 2)] private String m_serializedPermission; // This field is legacy info from v1.x and is never used in v2.0 and beyond: purely for serialization purposes private URLString m_url; [OnDeserialized] private void OnDeserialized(StreamingContext ctx) { // v2.0 and beyond XML case if (m_serializedPermission != null) { FromXml(SecurityElement.FromString(m_serializedPermission)); m_serializedPermission = null; } else if (m_url != null) //v1.x case where we read the m_site value { m_unrestricted = false; m_urls = new URLString[1]; m_urls[0] = m_url; m_url = null; } } [OnSerializing] private void OnSerializing(StreamingContext ctx) { if ((ctx.State & ~(StreamingContextStates.Clone|StreamingContextStates.CrossAppDomain)) != 0) { m_serializedPermission = ToXml().ToString(); //for the v2 and beyond case if (m_urls != null && m_urls.Length == 1) // for the v1.x case m_url = m_urls[0]; } } [OnSerialized] private void OnSerialized(StreamingContext ctx) { if ((ctx.State & ~(StreamingContextStates.Clone|StreamingContextStates.CrossAppDomain)) != 0) { m_serializedPermission = null; m_url = null; } } //----------------------------------------------------- // // PUBLIC CONSTRUCTORS // //----------------------------------------------------- public UrlIdentityPermission(PermissionState state) { if (state == PermissionState.Unrestricted) { if(CodeAccessSecurityEngine.DoesFullTrustMeanFullTrust()) m_unrestricted = true; else throw new ArgumentException(Environment.GetResourceString("Argument_UnrestrictedIdentityPermission")); } else if (state == PermissionState.None) { m_unrestricted = false; } else { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState")); } } public UrlIdentityPermission( String site ) { if (site == null) throw new ArgumentNullException( "site" ); Url = site; } internal UrlIdentityPermission( URLString site ) { m_unrestricted = false; m_urls = new URLString[1]; m_urls[0] = site; } //------------------------------------------------------ // // PUBLIC ACCESSOR METHODS // //----------------------------------------------------- public String Url { set { m_unrestricted = false; if(value == null || value.Length == 0) m_urls = null; else { m_urls = new URLString[1]; m_urls[0] = new URLString( value ); } } get { if(m_urls == null) return ""; if(m_urls.Length == 1) return m_urls[0].ToString(); throw new NotSupportedException(Environment.GetResourceString("NotSupported_AmbiguousIdentity")); } } //------------------------------------------------------ // // PRIVATE AND PROTECTED HELPERS FOR ACCESSORS AND CONSTRUCTORS // //------------------------------------------------------ //----------------------------------------------------- // // CODEACCESSPERMISSION IMPLEMENTATION // //------------------------------------------------------ //----------------------------------------------------- // // IPERMISSION IMPLEMENTATION // //----------------------------------------------------- public override IPermission Copy() { UrlIdentityPermission perm = new UrlIdentityPermission( PermissionState.None ); perm.m_unrestricted = this.m_unrestricted; if (this.m_urls != null) { perm.m_urls = new URLString[this.m_urls.Length]; int n; for(n = 0; n < this.m_urls.Length; n++) perm.m_urls[n] = (URLString)this.m_urls[n].Copy(); } return perm; } public override bool IsSubsetOf(IPermission target) { if (target == null) { if(m_unrestricted) return false; if(m_urls == null) return true; if(m_urls.Length == 0) return true; return false; } UrlIdentityPermission that = target as UrlIdentityPermission; if(that == null) throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)); if(that.m_unrestricted) return true; if(m_unrestricted) return false; if(this.m_urls != null) { foreach(URLString usThis in this.m_urls) { bool bOK = false; if(that.m_urls != null) { foreach(URLString usThat in that.m_urls) { if(usThis.IsSubsetOf(usThat)) { bOK = true; break; } } } if(!bOK) return false; } } return true; } public override IPermission Intersect(IPermission target) { if (target == null) return null; UrlIdentityPermission that = target as UrlIdentityPermission; if(that == null) throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)); if(this.m_unrestricted && that.m_unrestricted) { UrlIdentityPermission res = new UrlIdentityPermission(PermissionState.None); res.m_unrestricted = true; return res; } if(this.m_unrestricted) return that.Copy(); if(that.m_unrestricted) return this.Copy(); if(this.m_urls == null || that.m_urls == null || this.m_urls.Length == 0 || that.m_urls.Length == 0) return null; ArrayList alUrls = new ArrayList(); foreach(URLString usThis in this.m_urls) { foreach(URLString usThat in that.m_urls) { URLString usInt = (URLString)usThis.Intersect(usThat); if(usInt != null) alUrls.Add(usInt); } } if(alUrls.Count == 0) return null; UrlIdentityPermission result = new UrlIdentityPermission(PermissionState.None); result.m_urls = (URLString[])alUrls.ToArray(typeof(URLString)); return result; } public override IPermission Union(IPermission target) { if (target == null) { if((this.m_urls == null || this.m_urls.Length == 0) && !this.m_unrestricted) return null; return this.Copy(); } UrlIdentityPermission that = target as UrlIdentityPermission; if(that == null) throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)); if(this.m_unrestricted || that.m_unrestricted) { UrlIdentityPermission res = new UrlIdentityPermission(PermissionState.None); res.m_unrestricted = true; return res; } if (this.m_urls == null || this.m_urls.Length == 0) { if(that.m_urls == null || that.m_urls.Length == 0) return null; return that.Copy(); } if(that.m_urls == null || that.m_urls.Length == 0) return this.Copy(); ArrayList alUrls = new ArrayList(); foreach(URLString usThis in this.m_urls) alUrls.Add(usThis); foreach(URLString usThat in that.m_urls) { bool bDupe = false; foreach(URLString us in alUrls) { if(usThat.Equals(us)) { bDupe = true; break; } } if(!bDupe) alUrls.Add(usThat); } UrlIdentityPermission result = new UrlIdentityPermission(PermissionState.None); result.m_urls = (URLString[])alUrls.ToArray(typeof(URLString)); return result; } public override void FromXml(SecurityElement esd) { m_unrestricted = false; m_urls = null; CodeAccessPermission.ValidateElement( esd, this ); String unr = esd.Attribute( "Unrestricted" ); if(unr != null && String.Compare(unr, "true", StringComparison.OrdinalIgnoreCase) == 0) { m_unrestricted = true; return; } String elem = esd.Attribute( "Url" ); ArrayList al = new ArrayList(); if(elem != null) al.Add(new URLString( elem, true )); ArrayList alChildren = esd.Children; if(alChildren != null) { foreach(SecurityElement child in alChildren) { elem = child.Attribute( "Url" ); if(elem != null) al.Add(new URLString( elem, true )); } } if(al.Count != 0) m_urls = (URLString[])al.ToArray(typeof(URLString)); } public override SecurityElement ToXml() { SecurityElement esd = CodeAccessPermission.CreatePermissionElement( this, "System.Security.Permissions.UrlIdentityPermission" ); if (m_unrestricted) esd.AddAttribute( "Unrestricted", "true" ); else if (m_urls != null) { if (m_urls.Length == 1) esd.AddAttribute( "Url", m_urls[0].ToString() ); else { int n; for(n = 0; n < m_urls.Length; n++) { SecurityElement child = new SecurityElement("Url"); child.AddAttribute( "Url", m_urls[n].ToString() ); esd.AddChild(child); } } } return esd; } /// int IBuiltInPermission.GetTokenIndex() { return UrlIdentityPermission.GetTokenIndex(); } internal static int GetTokenIndex() { return BuiltInPermissionIndex.UrlIdentityPermissionIndex; } } } // 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
- WindowsToolbarAsMenu.cs
- MsmqInputChannelListener.cs
- TemplateControl.cs
- EncodingDataItem.cs
- AttachedPropertyBrowsableAttribute.cs
- CurrencyWrapper.cs
- LocatorManager.cs
- GridPattern.cs
- XmlAttributeAttribute.cs
- DataGridViewSelectedCellCollection.cs
- ModelTreeEnumerator.cs
- CodeAccessPermission.cs
- FontSourceCollection.cs
- TextElement.cs
- DoubleCollectionConverter.cs
- SqlTriggerContext.cs
- TouchPoint.cs
- ContactManager.cs
- XmlSchemaDocumentation.cs
- XmlSubtreeReader.cs
- PropertyStore.cs
- MessageSmuggler.cs
- StyleSheet.cs
- Certificate.cs
- RowToParametersTransformer.cs
- CodePageEncoding.cs
- SqlDataSourceQuery.cs
- ValueType.cs
- TableLayoutStyle.cs
- DiscoveryDocumentSearchPattern.cs
- WebPartZoneBase.cs
- SendingRequestEventArgs.cs
- ResourceProviderFactory.cs
- BinaryUtilClasses.cs
- OrderedDictionary.cs
- TypeNameConverter.cs
- HashUtility.cs
- DoubleCollection.cs
- Triangle.cs
- SecureConversationSecurityTokenParameters.cs
- ReaderOutput.cs
- WebPart.cs
- DataIdProcessor.cs
- XmlMtomReader.cs
- ExpressionBuilderCollection.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- DoubleLinkListEnumerator.cs
- WorkflowItemsPresenter.cs
- CounterCreationDataCollection.cs
- InvalidOperationException.cs
- sqlmetadatafactory.cs
- EventLogPermissionEntryCollection.cs
- InvokeWebService.cs
- ModelUtilities.cs
- MasterPage.cs
- QilPatternVisitor.cs
- SingleAnimationBase.cs
- StringKeyFrameCollection.cs
- ComboBoxRenderer.cs
- CodeSpit.cs
- DataGridViewCellCollection.cs
- ProfileSettingsCollection.cs
- ConstNode.cs
- AppDomainFactory.cs
- KeyValuePairs.cs
- IssuedSecurityTokenProvider.cs
- DBCommand.cs
- SmiEventSink_DeferedProcessing.cs
- CommittableTransaction.cs
- TextOutput.cs
- ValidatorUtils.cs
- Sql8ExpressionRewriter.cs
- FormsAuthenticationModule.cs
- ComponentEvent.cs
- DataBindEngine.cs
- ChtmlTextBoxAdapter.cs
- OrderedDictionary.cs
- Timer.cs
- CombinedGeometry.cs
- RenderTargetBitmap.cs
- TrackingStringDictionary.cs
- FreezableOperations.cs
- CodeDOMUtility.cs
- GenericTypeParameterConverter.cs
- WebPartDisplayMode.cs
- MsdtcWrapper.cs
- SQLChars.cs
- LayoutEditorPart.cs
- TextTreeRootTextBlock.cs
- InternalConfigSettingsFactory.cs
- ValidationEventArgs.cs
- Effect.cs
- AbandonedMutexException.cs
- MouseOverProperty.cs
- LinkLabelLinkClickedEvent.cs
- XPathMultyIterator.cs
- XmlWellformedWriter.cs
- XamlDesignerSerializationManager.cs
- DesignerImageAdapter.cs
- SessionStateContainer.cs