Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / ReferenceList.cs / 1 / ReferenceList.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Security { using System.Xml; using System.ServiceModel.Security.Tokens; using DictionaryManager = System.IdentityModel.DictionaryManager; using ISecurityElement = System.IdentityModel.ISecurityElement; sealed class ReferenceList : ISecurityElement { internal static readonly XmlDictionaryString ElementName = XD.XmlEncryptionDictionary.ReferenceList; const string NamespacePrefix = XmlEncryptionStrings.Prefix; internal static readonly XmlDictionaryString NamespaceUri = EncryptedType.NamespaceUri; internal static readonly XmlDictionaryString UriAttribute = XD.XmlEncryptionDictionary.URI; MostlySingletonListreferredIds; public ReferenceList() { } public int DataReferenceCount { get { return this.referredIds.Count; } } public bool HasId { get { return false; } } public string Id { get { // PreSharp Bug: Property get methods should not throw exceptions. #pragma warning suppress 56503 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } public void AddReferredId(string id) { if (id == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("id")); } this.referredIds.Add(id); } public bool ContainsReferredId(string id) { if (id == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("id")); } return this.referredIds.Contains(id); } public string GetReferredId(int index) { return this.referredIds[index]; } public void ReadFrom(XmlDictionaryReader reader) { reader.ReadStartElement(ElementName, NamespaceUri); while (reader.IsStartElement()) { string id = DataReference.ReadFrom(reader); if (this.referredIds.Contains(id)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new MessageSecurityException(SR.GetString(SR.InvalidDataReferenceInReferenceList, "#" + id))); } this.referredIds.Add(id); } reader.ReadEndElement(); // ReferenceList if (this.DataReferenceCount == 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.ReferenceListCannotBeEmpty))); } } public bool TryRemoveReferredId(string id) { if (id == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("id")); } return this.referredIds.Remove(id); } public void WriteTo(XmlDictionaryWriter writer, DictionaryManager dictionaryManager) { if (this.DataReferenceCount == 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ReferenceListCannotBeEmpty))); } writer.WriteStartElement(NamespacePrefix, ElementName, NamespaceUri); for (int i = 0; i < this.DataReferenceCount; i++) { DataReference.WriteTo(writer, this.referredIds[i]); } writer.WriteEndElement(); // ReferenceList } static class DataReference { internal static readonly XmlDictionaryString ElementName = XD.XmlEncryptionDictionary.DataReference; internal static readonly XmlDictionaryString NamespaceUri = EncryptedType.NamespaceUri; public static string ReadFrom(XmlDictionaryReader reader) { string prefix; string uri = XmlHelper.ReadEmptyElementAndRequiredAttribute(reader, ElementName, NamespaceUri, ReferenceList.UriAttribute, out prefix); if (uri.Length < 2 || uri[0] != '#') { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new MessageSecurityException(SR.GetString(SR.InvalidDataReferenceInReferenceList, uri))); } return uri.Substring(1); } public static void WriteTo(XmlDictionaryWriter writer, string referredId) { writer.WriteStartElement(XD.XmlEncryptionDictionary.Prefix.Value, ElementName, NamespaceUri); writer.WriteStartAttribute(ReferenceList.UriAttribute, null); writer.WriteString("#"); writer.WriteString(referredId); writer.WriteEndAttribute(); writer.WriteEndElement(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HelpInfo.cs
- InvariantComparer.cs
- XPathNodeList.cs
- CodePageUtils.cs
- ListViewUpdateEventArgs.cs
- ResourcePool.cs
- UnitySerializationHolder.cs
- _ListenerAsyncResult.cs
- SoapExtensionTypeElementCollection.cs
- ValidationService.cs
- TextModifierScope.cs
- Model3DGroup.cs
- SByte.cs
- SchemaTableColumn.cs
- DbConnectionHelper.cs
- PropertyMapper.cs
- SupportsEventValidationAttribute.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- SecurityException.cs
- FormsAuthenticationUserCollection.cs
- Rectangle.cs
- WebScriptClientGenerator.cs
- ObjectPersistData.cs
- MergeFilterQuery.cs
- ResourceDictionaryCollection.cs
- TypeUsageBuilder.cs
- HitTestWithPointDrawingContextWalker.cs
- WebPartsSection.cs
- ConfigurationSchemaErrors.cs
- ProfileSection.cs
- _HeaderInfoTable.cs
- DbMetaDataFactory.cs
- NetworkInformationException.cs
- PropertyGridEditorPart.cs
- CodeTypeMember.cs
- AutoSizeToolBoxItem.cs
- LoginName.cs
- PenContext.cs
- RenderCapability.cs
- DbUpdateCommandTree.cs
- _NTAuthentication.cs
- X509Certificate.cs
- DataFieldConverter.cs
- TextModifierScope.cs
- XsdDuration.cs
- MenuItem.cs
- ImageAutomationPeer.cs
- SortQuery.cs
- PopOutPanel.cs
- WebPartConnectVerb.cs
- XmlSchemaNotation.cs
- ObjectViewEntityCollectionData.cs
- ExpandSegment.cs
- XmlBinaryReader.cs
- GrammarBuilderRuleRef.cs
- StateMachineSubscription.cs
- DataGridViewButtonCell.cs
- XhtmlStyleClass.cs
- ImpersonationContext.cs
- TemplateControlParser.cs
- OutputWindow.cs
- HttpApplication.cs
- CommandDevice.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- Attributes.cs
- ReturnValue.cs
- Stack.cs
- XmlWrappingWriter.cs
- PackageDigitalSignature.cs
- Cursors.cs
- GridView.cs
- controlskin.cs
- BaseParaClient.cs
- ObjectDataSource.cs
- Decimal.cs
- XmlWriterSettings.cs
- ValidationErrorCollection.cs
- RemotingServices.cs
- GridViewDeleteEventArgs.cs
- HwndHost.cs
- XmlParserContext.cs
- StrokeNode.cs
- SecUtil.cs
- RowSpanVector.cs
- ZipArchive.cs
- ComPlusInstanceProvider.cs
- CommandExpr.cs
- ControlBuilderAttribute.cs
- ReaderWriterLock.cs
- InputChannelBinder.cs
- ControlIdConverter.cs
- AdPostCacheSubstitution.cs
- DataGridViewSelectedCellCollection.cs
- UniqueID.cs
- BufferBuilder.cs
- ObjectItemNoOpAssemblyLoader.cs
- RectangleConverter.cs
- AttributeSetAction.cs
- TypeDescriptor.cs
- ComplexTypeEmitter.cs