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
- DnsPermission.cs
- BinaryParser.cs
- HandlerWithFactory.cs
- Timeline.cs
- BatchParser.cs
- OutputCacheSettingsSection.cs
- DrawingCollection.cs
- UnsafeNativeMethods.cs
- Operator.cs
- _CommandStream.cs
- securitycriticaldata.cs
- HttpCookiesSection.cs
- ProviderCollection.cs
- LogManagementAsyncResult.cs
- GuidelineSet.cs
- Statements.cs
- ClosableStream.cs
- _NTAuthentication.cs
- IndexOutOfRangeException.cs
- MaskedTextBox.cs
- ComplusTypeValidator.cs
- OleDbSchemaGuid.cs
- FrameworkContentElementAutomationPeer.cs
- HostingEnvironment.cs
- WmlSelectionListAdapter.cs
- BaseDataBoundControl.cs
- TextServicesCompartment.cs
- JavaScriptObjectDeserializer.cs
- XmlWrappingReader.cs
- TextRangeAdaptor.cs
- ChildrenQuery.cs
- XmlDataDocument.cs
- CorruptStoreException.cs
- TextFormatter.cs
- BrowserTree.cs
- NameTable.cs
- ZipArchive.cs
- CaseInsensitiveHashCodeProvider.cs
- SqlConnectionHelper.cs
- XmlCDATASection.cs
- ChannelSinkStacks.cs
- SizeF.cs
- ZoomPercentageConverter.cs
- GridLengthConverter.cs
- HttpPostServerProtocol.cs
- WaitHandleCannotBeOpenedException.cs
- BrowserCapabilitiesCodeGenerator.cs
- ProfileBuildProvider.cs
- PartManifestEntry.cs
- CodeArrayCreateExpression.cs
- DocumentGridContextMenu.cs
- Activity.cs
- FileDialogPermission.cs
- TextServicesCompartmentContext.cs
- WpfKnownMemberInvoker.cs
- MetadataItemEmitter.cs
- AdjustableArrowCap.cs
- ServiceNameCollection.cs
- HttpChannelHelper.cs
- TextTabProperties.cs
- ToolStripContainerDesigner.cs
- StorageAssociationTypeMapping.cs
- ListViewEditEventArgs.cs
- AttributeUsageAttribute.cs
- MobileCategoryAttribute.cs
- SQLBoolean.cs
- XmlILConstructAnalyzer.cs
- EventTask.cs
- ISAPIRuntime.cs
- UnsafeNativeMethodsCLR.cs
- DataFormat.cs
- Pair.cs
- CommonDialog.cs
- NCryptSafeHandles.cs
- OptimizerPatterns.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ServiceInstallComponent.cs
- KeySpline.cs
- WorkflowServiceInstance.cs
- CultureInfoConverter.cs
- PingOptions.cs
- PiiTraceSource.cs
- ProcessInfo.cs
- ScriptingRoleServiceSection.cs
- BaseProcessor.cs
- AttributeData.cs
- Comparer.cs
- TraceContext.cs
- NavigateEvent.cs
- XmlEventCache.cs
- SupportingTokenBindingElement.cs
- DoubleStorage.cs
- InputEventArgs.cs
- ControlBuilderAttribute.cs
- BorderGapMaskConverter.cs
- MimeXmlReflector.cs
- StringConverter.cs
- ForceCopyBuildProvider.cs
- OdbcPermission.cs
- TransactionFormatter.cs