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
- DataGridViewRowErrorTextNeededEventArgs.cs
- GroupBoxRenderer.cs
- XmlStreamNodeWriter.cs
- XslCompiledTransform.cs
- SqlProcedureAttribute.cs
- IPipelineRuntime.cs
- ListControl.cs
- ApplicationDirectoryMembershipCondition.cs
- XsdSchemaFileEditor.cs
- JsonXmlDataContract.cs
- SizeF.cs
- CheckBoxDesigner.cs
- PrintingPermissionAttribute.cs
- KeyFrames.cs
- OLEDB_Enum.cs
- MethodAccessException.cs
- ProtectedConfiguration.cs
- WebException.cs
- SingleAnimationUsingKeyFrames.cs
- RuntimeConfigLKG.cs
- DecimalConstantAttribute.cs
- ToolBarTray.cs
- SchemaSetCompiler.cs
- ThreadStartException.cs
- DataGridViewBand.cs
- InstanceKeyNotReadyException.cs
- DictionarySurrogate.cs
- FontConverter.cs
- UnsafeNativeMethods.cs
- CodeGotoStatement.cs
- EmbossBitmapEffect.cs
- DataTemplate.cs
- RangeValidator.cs
- SimpleLine.cs
- DataSourceXmlElementAttribute.cs
- DeviceFiltersSection.cs
- MenuAdapter.cs
- SizeConverter.cs
- WebPartHelpVerb.cs
- DataGridViewDataErrorEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- LogSwitch.cs
- SoapCodeExporter.cs
- BridgeDataReader.cs
- ProcessModuleCollection.cs
- HttpCachePolicy.cs
- ApplicationSecurityInfo.cs
- ComponentCommands.cs
- WindowsFormsLinkLabel.cs
- DropTarget.cs
- Error.cs
- Visual.cs
- SwitchAttribute.cs
- XNodeValidator.cs
- TaskHelper.cs
- WebChannelFactory.cs
- CommandEventArgs.cs
- PublisherMembershipCondition.cs
- SecurityContext.cs
- DatePickerTextBox.cs
- EdmProviderManifest.cs
- SafeNativeMethods.cs
- Crypto.cs
- StrokeDescriptor.cs
- RowToParametersTransformer.cs
- SHA384Cng.cs
- ExpandButtonVisibilityConverter.cs
- PostBackOptions.cs
- RegistryPermission.cs
- OperandQuery.cs
- CustomPopupPlacement.cs
- SelectionRange.cs
- FactoryId.cs
- OdbcInfoMessageEvent.cs
- ContentPlaceHolder.cs
- ConfigDefinitionUpdates.cs
- EncoderBestFitFallback.cs
- ToolboxComponentsCreatedEventArgs.cs
- DataGridViewRowCollection.cs
- FontUnit.cs
- TreeNodeConverter.cs
- sitestring.cs
- Dictionary.cs
- StatusBar.cs
- SplitContainerDesigner.cs
- BuildProvider.cs
- TypeSchema.cs
- XmlBinaryReader.cs
- RecipientInfo.cs
- TrackingProfile.cs
- InnerItemCollectionView.cs
- Unit.cs
- SamlAttribute.cs
- InkSerializer.cs
- OutputCacheModule.cs
- DirectoryObjectSecurity.cs
- SerialPinChanges.cs
- EdmScalarPropertyAttribute.cs
- RawAppCommandInputReport.cs
- PropertyEmitter.cs