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
- UrlMapping.cs
- TextUtf8RawTextWriter.cs
- StretchValidation.cs
- FileDialog_Vista_Interop.cs
- AttributedMetaModel.cs
- ContextMenu.cs
- ThicknessAnimationBase.cs
- FieldNameLookup.cs
- ValidatedControlConverter.cs
- ChildTable.cs
- GrammarBuilderWildcard.cs
- ProtectedConfigurationSection.cs
- Journal.cs
- FormViewUpdateEventArgs.cs
- WinOEToolBoxItem.cs
- ButtonFlatAdapter.cs
- MimeBasePart.cs
- SiteMapNodeItemEventArgs.cs
- EntitySqlQueryCacheEntry.cs
- DefaultValueTypeConverter.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- AppLevelCompilationSectionCache.cs
- ScalarType.cs
- X509KeyIdentifierClauseType.cs
- XmlExceptionHelper.cs
- FixedDocumentSequencePaginator.cs
- TreeNodeCollection.cs
- ToolStripArrowRenderEventArgs.cs
- EntityProxyFactory.cs
- AuthenticatingEventArgs.cs
- DataGridHeaderBorder.cs
- assertwrapper.cs
- AttachedPropertyInfo.cs
- QueryOutputWriter.cs
- SettingsPropertyCollection.cs
- MissingFieldException.cs
- SafeBitVector32.cs
- DbConnectionPoolIdentity.cs
- EntityModelBuildProvider.cs
- NamedPermissionSet.cs
- Column.cs
- RewritingProcessor.cs
- ExpandCollapseProviderWrapper.cs
- PeerCollaboration.cs
- DynamicDataRoute.cs
- SelectionBorderGlyph.cs
- DataGridViewRowConverter.cs
- ControlParameter.cs
- Bitmap.cs
- HttpPostServerProtocol.cs
- DesignerProperties.cs
- XmlArrayAttribute.cs
- RootNamespaceAttribute.cs
- BamlTreeNode.cs
- SerializationInfoEnumerator.cs
- BinaryUtilClasses.cs
- TableLayoutStyle.cs
- PenThreadPool.cs
- ConfigPathUtility.cs
- StateWorkerRequest.cs
- Label.cs
- InheritanceContextHelper.cs
- SchemaTableOptionalColumn.cs
- CertificateElement.cs
- MetadataUtilsSmi.cs
- LineServicesCallbacks.cs
- DeploymentExceptionMapper.cs
- ComplexTypeEmitter.cs
- CommandDevice.cs
- TranslateTransform.cs
- DataSpaceManager.cs
- SlotInfo.cs
- ReferenceSchema.cs
- ToolStripTemplateNode.cs
- SudsCommon.cs
- DataGridRow.cs
- _ListenerRequestStream.cs
- AsyncCompletedEventArgs.cs
- DataTable.cs
- LogRecordSequence.cs
- NativeMethods.cs
- Console.cs
- BitmapEffectState.cs
- Button.cs
- AdapterUtil.cs
- Pen.cs
- MetadataArtifactLoaderComposite.cs
- EncodingInfo.cs
- CustomValidator.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- DbProviderFactory.cs
- SqlTypesSchemaImporter.cs
- ApplicationTrust.cs
- TreeNodeMouseHoverEvent.cs
- FloaterBaseParaClient.cs
- HttpHeaderCollection.cs
- DataServiceEntityAttribute.cs
- AuthStoreRoleProvider.cs
- GeneralTransform3DTo2DTo3D.cs
- LayoutEvent.cs