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
- ReadOnlyHierarchicalDataSourceView.cs
- InputScopeAttribute.cs
- Vector3DKeyFrameCollection.cs
- ISO2022Encoding.cs
- ELinqQueryState.cs
- NetMsmqSecurityMode.cs
- DropShadowEffect.cs
- XmlEntityReference.cs
- ProjectionPlanCompiler.cs
- ListViewItemEventArgs.cs
- basecomparevalidator.cs
- VariantWrapper.cs
- UpdatePanelTrigger.cs
- ScrollableControl.cs
- TrackingMemoryStreamFactory.cs
- DesignerHelpers.cs
- Encoder.cs
- BinaryObjectWriter.cs
- ActiveXHost.cs
- X509Certificate2Collection.cs
- AsnEncodedData.cs
- ToolStripDropDown.cs
- RelatedImageListAttribute.cs
- DateTimePicker.cs
- WebUtil.cs
- DefinitionBase.cs
- TextTreeText.cs
- QilLiteral.cs
- PropertyToken.cs
- CodeThrowExceptionStatement.cs
- AssemblySettingAttributes.cs
- BaseProcessor.cs
- StickyNoteAnnotations.cs
- MessagePropertyDescription.cs
- WebPartDescription.cs
- XPathNavigatorKeyComparer.cs
- ServiceBuildProvider.cs
- ClosableStream.cs
- __ComObject.cs
- XmlAttribute.cs
- InstanceValue.cs
- Debug.cs
- AssemblyNameProxy.cs
- Column.cs
- MimePart.cs
- NullableFloatAverageAggregationOperator.cs
- util.cs
- HttpRequestWrapper.cs
- ExpressionEditorAttribute.cs
- MaskDescriptor.cs
- TreeNodeCollection.cs
- FormattedTextSymbols.cs
- PropertyMapper.cs
- SHA384Cng.cs
- SourceChangedEventArgs.cs
- MsmqProcessProtocolHandler.cs
- CodeDirectiveCollection.cs
- MemberHolder.cs
- DocumentOrderQuery.cs
- GradientBrush.cs
- Effect.cs
- BamlLocalizableResource.cs
- SamlAuthenticationStatement.cs
- TraceContext.cs
- SpeechEvent.cs
- TrustLevel.cs
- ActivityWithResultConverter.cs
- EditorPartChrome.cs
- UIInitializationException.cs
- ClientScriptManagerWrapper.cs
- WizardStepBase.cs
- SafeFileMappingHandle.cs
- BoundsDrawingContextWalker.cs
- codemethodreferenceexpression.cs
- ButtonColumn.cs
- SQLMoneyStorage.cs
- RegexCompiler.cs
- InputScope.cs
- BindUriHelper.cs
- HtmlTernaryTree.cs
- WithStatement.cs
- DataFormat.cs
- TreeNodeEventArgs.cs
- PnrpPermission.cs
- GridLengthConverter.cs
- IPHostEntry.cs
- Int32EqualityComparer.cs
- StatusBarItemAutomationPeer.cs
- BitmapEffect.cs
- SocketInformation.cs
- Keywords.cs
- IListConverters.cs
- TextContainerHelper.cs
- TreeViewTemplateSelector.cs
- MetaTableHelper.cs
- WebHeaderCollection.cs
- AttachedProperty.cs
- WriteableBitmap.cs
- Pick.cs
- XpsPackagingPolicy.cs