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
- __TransparentProxy.cs
- BitmapMetadataBlob.cs
- HashSet.cs
- CleanUpVirtualizedItemEventArgs.cs
- SerializationInfo.cs
- Screen.cs
- StylusPointPropertyId.cs
- WebResponse.cs
- ViewStateModeByIdAttribute.cs
- UriSchemeKeyedCollection.cs
- WebPartEditorOkVerb.cs
- FileDialogCustomPlaces.cs
- DataGridItem.cs
- AssemblyInfo.cs
- Int16Converter.cs
- RefExpr.cs
- ButtonFlatAdapter.cs
- BaseInfoTable.cs
- UrlMappingCollection.cs
- CngProvider.cs
- PrimitiveXmlSerializers.cs
- ColumnBinding.cs
- FileClassifier.cs
- TokenBasedSetEnumerator.cs
- Point3DAnimationUsingKeyFrames.cs
- ProjectionPruner.cs
- SymbolTable.cs
- PolicyStatement.cs
- PolyBezierSegmentFigureLogic.cs
- XPathNavigatorReader.cs
- SystemIcons.cs
- InfoCardTrace.cs
- WindowProviderWrapper.cs
- OracleParameterCollection.cs
- NoPersistScope.cs
- UIHelper.cs
- StaticResourceExtension.cs
- FolderBrowserDialog.cs
- RegexCompilationInfo.cs
- Size3D.cs
- SiteMapNode.cs
- UnauthorizedAccessException.cs
- StringArrayConverter.cs
- FileStream.cs
- JsonReaderDelegator.cs
- PrimaryKeyTypeConverter.cs
- DataRowComparer.cs
- ZipIOFileItemStream.cs
- TaskFileService.cs
- RegistrySecurity.cs
- CopyAction.cs
- EventEntry.cs
- TreePrinter.cs
- XmlIlVisitor.cs
- ApplicationException.cs
- WriterOutput.cs
- RangeBase.cs
- GenericAuthenticationEventArgs.cs
- EditCommandColumn.cs
- BuildDependencySet.cs
- COM2ComponentEditor.cs
- InvalidWorkflowException.cs
- MaskDesignerDialog.cs
- CertificateReferenceElement.cs
- DesignerDataConnection.cs
- MSHTMLHost.cs
- Int64Animation.cs
- WorkflowRuntimeServiceElement.cs
- KeyInterop.cs
- MethodBuilder.cs
- EventDescriptorCollection.cs
- MoveSizeWinEventHandler.cs
- ColorConverter.cs
- ReferentialConstraint.cs
- DataGridHelper.cs
- DomainConstraint.cs
- TaskFormBase.cs
- Vector3DAnimationBase.cs
- Int64KeyFrameCollection.cs
- StrongNamePublicKeyBlob.cs
- ByeMessageCD1.cs
- SiteMapNode.cs
- CompensatableTransactionScopeActivity.cs
- SafeNativeMethods.cs
- Vector3DCollectionValueSerializer.cs
- StorageMappingFragment.cs
- CodeTypeReferenceExpression.cs
- IriParsingElement.cs
- RawAppCommandInputReport.cs
- ActiveDocumentEvent.cs
- ToolboxDataAttribute.cs
- HTMLTagNameToTypeMapper.cs
- WindowsFormsHost.cs
- TransformProviderWrapper.cs
- SynchronizedInputPattern.cs
- SizeAnimationBase.cs
- autovalidator.cs
- XPathNodeInfoAtom.cs
- PathGeometry.cs
- LabelInfo.cs