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
- NetMsmqSecurityElement.cs
- InputLanguageEventArgs.cs
- EntityClientCacheEntry.cs
- SourceCollection.cs
- DESCryptoServiceProvider.cs
- PipeStream.cs
- RelativeSource.cs
- DesignSurface.cs
- EncoderParameter.cs
- EventLogPermissionAttribute.cs
- NodeFunctions.cs
- SoapEnvelopeProcessingElement.cs
- ResourceKey.cs
- TransactionProxy.cs
- HttpModuleCollection.cs
- DataSpaceManager.cs
- ActivityValidator.cs
- TypeReference.cs
- ScriptModule.cs
- TreeBuilderBamlTranslator.cs
- future.cs
- CompositeDataBoundControl.cs
- TypeBuilderInstantiation.cs
- SessionStateUtil.cs
- NestedContainer.cs
- EventMappingSettingsCollection.cs
- XPathSingletonIterator.cs
- ProtocolViolationException.cs
- JumpItem.cs
- SiteMapDataSource.cs
- XmlHierarchicalDataSourceView.cs
- CodeBlockBuilder.cs
- MobileFormsAuthentication.cs
- XPathChildIterator.cs
- CancellationTokenRegistration.cs
- CodeArrayIndexerExpression.cs
- SafeCryptoHandles.cs
- TransformConverter.cs
- SafeViewOfFileHandle.cs
- SiteMapDataSourceView.cs
- XPathDescendantIterator.cs
- StreamInfo.cs
- DataReceivedEventArgs.cs
- BulletChrome.cs
- WindowsContainer.cs
- AliasedExpr.cs
- PropertyTabChangedEvent.cs
- GACMembershipCondition.cs
- DetailsViewPagerRow.cs
- XPathSelfQuery.cs
- Debugger.cs
- SqlProfileProvider.cs
- SolidColorBrush.cs
- CompiledIdentityConstraint.cs
- DefinitionUpdate.cs
- TextBoxLine.cs
- TiffBitmapDecoder.cs
- URLAttribute.cs
- XmlObjectSerializerReadContext.cs
- TablePattern.cs
- BaseDataBoundControl.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- TempFiles.cs
- ActiveXHelper.cs
- Perspective.cs
- WebPartMenu.cs
- AddressAccessDeniedException.cs
- Rectangle.cs
- ConfigXmlText.cs
- DataTrigger.cs
- MethodRental.cs
- SafeFileHandle.cs
- HScrollBar.cs
- DataGridViewRowCancelEventArgs.cs
- XslAst.cs
- ManipulationDelta.cs
- DeriveBytes.cs
- SafeHandles.cs
- Typeface.cs
- AutomationAttributeInfo.cs
- Variable.cs
- TextDataBindingHandler.cs
- BatchStream.cs
- MD5CryptoServiceProvider.cs
- CodeExpressionCollection.cs
- DSACryptoServiceProvider.cs
- ConnectionStringsSection.cs
- Viewport3DVisual.cs
- StringDictionary.cs
- ExpressionConverter.cs
- NetworkInformationException.cs
- TextSyndicationContentKindHelper.cs
- GuidTagList.cs
- SponsorHelper.cs
- EntityDataSourceStatementEditorForm.cs
- TableLayoutPanelCellPosition.cs
- FixedTextContainer.cs
- DbRetry.cs
- TransformationRules.cs
- ElementNotAvailableException.cs