Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / CanonicalizationDriver.cs / 1305376 / CanonicalizationDriver.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Security.Cryptography; using System.Text; using System.Xml; sealed class CanonicalizationDriver { bool closeReadersAfterProcessing; XmlReader reader; string[] inclusivePrefixes; bool includeComments; public bool CloseReadersAfterProcessing { get { return this.closeReadersAfterProcessing; } set { this.closeReadersAfterProcessing = value; } } public bool IncludeComments { get { return this.includeComments; } set { this.includeComments = value; } } public string[] GetInclusivePrefixes() { return this.inclusivePrefixes; } public void Reset() { this.reader = null; } public void SetInclusivePrefixes(string[] inclusivePrefixes) { this.inclusivePrefixes = inclusivePrefixes; } public void SetInput(Stream stream) { if (stream == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream"); } this.reader = XmlReader.Create(stream); } public void SetInput(XmlReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } this.reader = reader; } public byte[] GetBytes() { return GetMemoryStream().ToArray(); } public MemoryStream GetMemoryStream() { MemoryStream stream = new MemoryStream(); WriteTo(stream); stream.Seek(0, SeekOrigin.Begin); return stream; } public void WriteTo(HashAlgorithm hashAlgorithm) { WriteTo(new HashStream(hashAlgorithm)); } public void WriteTo(Stream canonicalStream) { if (this.reader != null) { XmlDictionaryReader dicReader = this.reader as XmlDictionaryReader; if ((dicReader != null) && (dicReader.CanCanonicalize)) { dicReader.MoveToContent(); dicReader.StartCanonicalization(canonicalStream, this.includeComments, this.inclusivePrefixes); dicReader.Skip(); dicReader.EndCanonicalization(); } else { XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(Stream.Null); if (this.inclusivePrefixes != null) { // Add a dummy element at the top and populate the namespace // declaration of all the inclusive prefixes. writer.WriteStartElement("a", reader.LookupNamespace(String.Empty)); for (int i = 0; i < this.inclusivePrefixes.Length; ++i) { string ns = reader.LookupNamespace(this.inclusivePrefixes[i]); if (ns != null) { writer.WriteXmlnsAttribute(this.inclusivePrefixes[i], ns); } } } writer.StartCanonicalization(canonicalStream, this.includeComments, this.inclusivePrefixes); writer.WriteNode(reader, false); writer.Flush(); writer.EndCanonicalization(); if (this.inclusivePrefixes != null) writer.WriteEndElement(); writer.Close(); } if (this.closeReadersAfterProcessing) { this.reader.Close(); } this.reader = null; } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.NoInputIsSetForCanonicalization))); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Security.Cryptography; using System.Text; using System.Xml; sealed class CanonicalizationDriver { bool closeReadersAfterProcessing; XmlReader reader; string[] inclusivePrefixes; bool includeComments; public bool CloseReadersAfterProcessing { get { return this.closeReadersAfterProcessing; } set { this.closeReadersAfterProcessing = value; } } public bool IncludeComments { get { return this.includeComments; } set { this.includeComments = value; } } public string[] GetInclusivePrefixes() { return this.inclusivePrefixes; } public void Reset() { this.reader = null; } public void SetInclusivePrefixes(string[] inclusivePrefixes) { this.inclusivePrefixes = inclusivePrefixes; } public void SetInput(Stream stream) { if (stream == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream"); } this.reader = XmlReader.Create(stream); } public void SetInput(XmlReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } this.reader = reader; } public byte[] GetBytes() { return GetMemoryStream().ToArray(); } public MemoryStream GetMemoryStream() { MemoryStream stream = new MemoryStream(); WriteTo(stream); stream.Seek(0, SeekOrigin.Begin); return stream; } public void WriteTo(HashAlgorithm hashAlgorithm) { WriteTo(new HashStream(hashAlgorithm)); } public void WriteTo(Stream canonicalStream) { if (this.reader != null) { XmlDictionaryReader dicReader = this.reader as XmlDictionaryReader; if ((dicReader != null) && (dicReader.CanCanonicalize)) { dicReader.MoveToContent(); dicReader.StartCanonicalization(canonicalStream, this.includeComments, this.inclusivePrefixes); dicReader.Skip(); dicReader.EndCanonicalization(); } else { XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(Stream.Null); if (this.inclusivePrefixes != null) { // Add a dummy element at the top and populate the namespace // declaration of all the inclusive prefixes. writer.WriteStartElement("a", reader.LookupNamespace(String.Empty)); for (int i = 0; i < this.inclusivePrefixes.Length; ++i) { string ns = reader.LookupNamespace(this.inclusivePrefixes[i]); if (ns != null) { writer.WriteXmlnsAttribute(this.inclusivePrefixes[i], ns); } } } writer.StartCanonicalization(canonicalStream, this.includeComments, this.inclusivePrefixes); writer.WriteNode(reader, false); writer.Flush(); writer.EndCanonicalization(); if (this.inclusivePrefixes != null) writer.WriteEndElement(); writer.Close(); } if (this.closeReadersAfterProcessing) { this.reader.Close(); } this.reader = null; } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.NoInputIsSetForCanonicalization))); } } } } // 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
- Point4DValueSerializer.cs
- ExceptionUtil.cs
- SystemResources.cs
- bidPrivateBase.cs
- TransformedBitmap.cs
- DBSqlParserColumn.cs
- DayRenderEvent.cs
- Parser.cs
- DataServiceKeyAttribute.cs
- Clock.cs
- QuotedPrintableStream.cs
- relpropertyhelper.cs
- TextProperties.cs
- XamlReader.cs
- SoapConverter.cs
- XmlQueryRuntime.cs
- CroppedBitmap.cs
- BaseCodePageEncoding.cs
- OleDbDataAdapter.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- HandlerFactoryCache.cs
- ContainerControlDesigner.cs
- ConditionCollection.cs
- WebBaseEventKeyComparer.cs
- PeerNameResolver.cs
- StatusBarAutomationPeer.cs
- Identity.cs
- AssociationEndMember.cs
- WindowsListViewSubItem.cs
- RtfControls.cs
- TypeDescriptor.cs
- BamlResourceSerializer.cs
- DataObjectPastingEventArgs.cs
- DetailsViewRow.cs
- HtmlWindow.cs
- PermissionAttributes.cs
- UInt32Converter.cs
- SoapReflector.cs
- MissingFieldException.cs
- RadioButtonAutomationPeer.cs
- TrackingStringDictionary.cs
- DataViewSetting.cs
- SqlExpander.cs
- ObjectItemLoadingSessionData.cs
- DrawingCollection.cs
- CodeNamespaceCollection.cs
- RenderDataDrawingContext.cs
- VectorValueSerializer.cs
- ListItemCollection.cs
- StateDesigner.CommentLayoutGlyph.cs
- ButtonChrome.cs
- TextServicesDisplayAttribute.cs
- SoapBinding.cs
- RepeatBehaviorConverter.cs
- EnvironmentPermission.cs
- SemaphoreFullException.cs
- WindowsToolbar.cs
- CfgParser.cs
- EntityDataSourceState.cs
- GenericUI.cs
- MessagePropertyDescription.cs
- PingReply.cs
- XmlEncodedRawTextWriter.cs
- SqlRowUpdatedEvent.cs
- TimeSpanOrInfiniteValidator.cs
- WebPartVerbCollection.cs
- DesignTimeHTMLTextWriter.cs
- ListCollectionView.cs
- JoinTreeSlot.cs
- MetadataArtifactLoader.cs
- SkewTransform.cs
- ManagedFilter.cs
- ToolStripContentPanel.cs
- oledbmetadatacolumnnames.cs
- SafeSecurityHandles.cs
- DefaultValidator.cs
- XamlSerializationHelper.cs
- SHA1.cs
- MetadataSource.cs
- Connector.cs
- TraceHandlerErrorFormatter.cs
- BinaryNode.cs
- Attributes.cs
- GridViewSortEventArgs.cs
- HyperLink.cs
- EncodingTable.cs
- CalendarBlackoutDatesCollection.cs
- _KerberosClient.cs
- SRef.cs
- BeginEvent.cs
- ExpressionBuilder.cs
- BeginEvent.cs
- SequenceRange.cs
- VersionedStreamOwner.cs
- ExtendedPropertyCollection.cs
- SourceChangedEventArgs.cs
- NavigationProperty.cs
- FeatureSupport.cs
- MarshalByRefObject.cs
- NameTable.cs