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
- TextServicesLoader.cs
- basemetadatamappingvisitor.cs
- MeshGeometry3D.cs
- WebPartCollection.cs
- QilList.cs
- FocusManager.cs
- EventLogEntryCollection.cs
- UIHelper.cs
- SingleResultAttribute.cs
- GridViewDeletedEventArgs.cs
- CreateUserWizardStep.cs
- XmlSchemaAppInfo.cs
- SecurityState.cs
- PrintDialog.cs
- RemotingException.cs
- TextEffect.cs
- MethodExpr.cs
- CodeAccessSecurityEngine.cs
- EmptyEnumerable.cs
- SignatureHelper.cs
- CompilerLocalReference.cs
- FileDataSource.cs
- ZoneLinkButton.cs
- ArrangedElement.cs
- Barrier.cs
- ListViewHitTestInfo.cs
- rsa.cs
- WebPartMovingEventArgs.cs
- OdbcHandle.cs
- WindowsScroll.cs
- GenericWebPart.cs
- ElementFactory.cs
- ClientSession.cs
- TextEffect.cs
- AutomationPropertyInfo.cs
- AppDomainInfo.cs
- NamedElement.cs
- ButtonBaseAutomationPeer.cs
- WebBrowserHelper.cs
- SqlRowUpdatingEvent.cs
- EventLogPermissionEntry.cs
- ObjectDisposedException.cs
- TypeBinaryExpression.cs
- SessionStateUtil.cs
- UpdateTracker.cs
- TableAutomationPeer.cs
- TextContainerHelper.cs
- Perspective.cs
- PingOptions.cs
- wgx_commands.cs
- Evaluator.cs
- PreparingEnlistment.cs
- FlowPanelDesigner.cs
- AttributeEmitter.cs
- TreeBuilderBamlTranslator.cs
- SpellerHighlightLayer.cs
- StrongNameKeyPair.cs
- InvalidWMPVersionException.cs
- ResourcePermissionBaseEntry.cs
- FamilyMapCollection.cs
- TreeView.cs
- DbConnectionFactory.cs
- MulticastNotSupportedException.cs
- MetadataFile.cs
- BindingMAnagerBase.cs
- CrossAppDomainChannel.cs
- SqlDuplicator.cs
- SmiConnection.cs
- StorageEntityTypeMapping.cs
- listitem.cs
- HostedImpersonationContext.cs
- EdmType.cs
- OdbcErrorCollection.cs
- AttributeProviderAttribute.cs
- MetadataSource.cs
- DbMetaDataColumnNames.cs
- ChangePassword.cs
- DataGridViewRowStateChangedEventArgs.cs
- SolidColorBrush.cs
- WindowsListViewItemStartMenu.cs
- ScriptDescriptor.cs
- BadImageFormatException.cs
- TemplateXamlParser.cs
- ServiceErrorHandler.cs
- CodeValidator.cs
- CurrentChangedEventManager.cs
- PointHitTestParameters.cs
- LocalBuilder.cs
- ToolStripPanelRenderEventArgs.cs
- InfoCardUIAgent.cs
- CodeBinaryOperatorExpression.cs
- XmlEntityReference.cs
- CharacterHit.cs
- LinkArea.cs
- SchemeSettingElement.cs
- ServiceChannelManager.cs
- CaseCqlBlock.cs
- DataBindingCollection.cs
- RectIndependentAnimationStorage.cs
- AttributeCollection.cs