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
- GenerateScriptTypeAttribute.cs
- ControlPersister.cs
- RunWorkerCompletedEventArgs.cs
- EdmSchemaError.cs
- SafePipeHandle.cs
- SQLBinary.cs
- _SslStream.cs
- IsolatedStorageSecurityState.cs
- SymbolUsageManager.cs
- PocoEntityKeyStrategy.cs
- RTLAwareMessageBox.cs
- ButtonFieldBase.cs
- WindowsAltTab.cs
- InstanceValue.cs
- ChameleonKey.cs
- TransformedBitmap.cs
- RelativeSource.cs
- BufferedGraphics.cs
- TemplateBindingExtensionConverter.cs
- HashMembershipCondition.cs
- DbConnectionStringBuilder.cs
- ReferenceEqualityComparer.cs
- Visitors.cs
- HttpResponseHeader.cs
- BlobPersonalizationState.cs
- ConfigurationStrings.cs
- DataFormats.cs
- WMICapabilities.cs
- Stroke2.cs
- SchemaCollectionPreprocessor.cs
- ColorMatrix.cs
- ToolStripContentPanelRenderEventArgs.cs
- ToolStripSystemRenderer.cs
- IteratorDescriptor.cs
- JapaneseLunisolarCalendar.cs
- ExpressionBindingCollection.cs
- oledbmetadatacolumnnames.cs
- RSACryptoServiceProvider.cs
- PointCollectionValueSerializer.cs
- TextTreeRootTextBlock.cs
- DataContractJsonSerializer.cs
- SQLMembershipProvider.cs
- HttpProtocolImporter.cs
- WebResourceUtil.cs
- XmlNodeComparer.cs
- StringConcat.cs
- ClientEventManager.cs
- TransformationRules.cs
- SqlHelper.cs
- SecurityNegotiationException.cs
- XmlHelper.cs
- GenericUriParser.cs
- XmlSequenceWriter.cs
- DataGridViewColumnEventArgs.cs
- ExpressionHelper.cs
- SecUtil.cs
- SingleAnimation.cs
- VerticalAlignConverter.cs
- PropertyRef.cs
- Error.cs
- AttributeCollection.cs
- NativeMethods.cs
- OledbConnectionStringbuilder.cs
- EmptyCollection.cs
- ActivityWithResultValueSerializer.cs
- TypedTableBase.cs
- HttpTransportElement.cs
- InstanceCreationEditor.cs
- WebBrowserPermission.cs
- WebEventCodes.cs
- ConfigurationCollectionAttribute.cs
- ConfigurationManagerHelper.cs
- OLEDB_Util.cs
- PageParser.cs
- UnsignedPublishLicense.cs
- UriExt.cs
- DataViewManagerListItemTypeDescriptor.cs
- AnnotationObservableCollection.cs
- CodeMethodReturnStatement.cs
- QuerySettings.cs
- GraphicsPath.cs
- NGCSerializationManagerAsync.cs
- HandleRef.cs
- Subset.cs
- SqlDataSourceEnumerator.cs
- PowerEase.cs
- SerializationFieldInfo.cs
- XmlElement.cs
- PrintPreviewGraphics.cs
- XmlElementList.cs
- WindowsContainer.cs
- EventsTab.cs
- DataGrid.cs
- ImageAnimator.cs
- AssertFilter.cs
- Hash.cs
- ServiceModelInstallComponent.cs
- EdmFunction.cs
- ToolStripContentPanel.cs
- HyperLinkField.cs