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
- SolidBrush.cs
- ProtocolsConfigurationEntry.cs
- PropertyRecord.cs
- TextBlock.cs
- PropertyNames.cs
- CleanUpVirtualizedItemEventArgs.cs
- CodeSnippetCompileUnit.cs
- CustomAttribute.cs
- NativeMethods.cs
- EventProviderWriter.cs
- Content.cs
- DecoderReplacementFallback.cs
- SQLCharsStorage.cs
- SqlMethods.cs
- SvcMapFileLoader.cs
- UserControlParser.cs
- CodeGen.cs
- MimeMapping.cs
- PhysicalAddress.cs
- EnvelopedSignatureTransform.cs
- ActionMessageFilter.cs
- WebPartHeaderCloseVerb.cs
- ClientScriptItemCollection.cs
- RequestCachePolicy.cs
- UseManagedPresentationBindingElement.cs
- SystemIcons.cs
- AssemblyHash.cs
- HwndSubclass.cs
- X509CertificateStore.cs
- COM2PictureConverter.cs
- DataGridViewComboBoxEditingControl.cs
- ContentPresenter.cs
- EventSetterHandlerConverter.cs
- Resources.Designer.cs
- HttpConfigurationContext.cs
- ListBindingConverter.cs
- DataGridColumn.cs
- XmlSerializerVersionAttribute.cs
- dataprotectionpermission.cs
- Module.cs
- EditingCommands.cs
- CreateUserErrorEventArgs.cs
- XmlAnyElementAttributes.cs
- ComponentTray.cs
- CodeExporter.cs
- IntSecurity.cs
- ClientOptions.cs
- Mouse.cs
- XmlDictionaryString.cs
- CreateUserWizardStep.cs
- TextDataBindingHandler.cs
- SemanticResultValue.cs
- EdmTypeAttribute.cs
- EndpointNotFoundException.cs
- StrokeIntersection.cs
- Baml2006SchemaContext.cs
- WebHostUnsafeNativeMethods.cs
- RecognizerStateChangedEventArgs.cs
- Vector3DAnimation.cs
- SelectedGridItemChangedEvent.cs
- TemplateControlCodeDomTreeGenerator.cs
- WebPartCatalogAddVerb.cs
- ParserExtension.cs
- RotateTransform.cs
- NamespaceImport.cs
- SetterBase.cs
- GenericQueueSurrogate.cs
- ThumbButtonInfo.cs
- RecommendedAsConfigurableAttribute.cs
- DetailsViewCommandEventArgs.cs
- MenuItemBinding.cs
- TdsEnums.cs
- ProcessHostFactoryHelper.cs
- FigureParagraph.cs
- Soap12ProtocolImporter.cs
- GC.cs
- WebBrowserProgressChangedEventHandler.cs
- NavigationHelper.cs
- BaseValidatorDesigner.cs
- BrowserCapabilitiesFactory.cs
- Dump.cs
- DataViewListener.cs
- Control.cs
- Delay.cs
- WindowsRichEdit.cs
- RightsManagementEncryptionTransform.cs
- ImageListStreamer.cs
- StylusDevice.cs
- BindingCompleteEventArgs.cs
- HtmlInputReset.cs
- EdmProperty.cs
- ProfileParameter.cs
- AndCondition.cs
- PointValueSerializer.cs
- DesignerTransactionCloseEvent.cs
- PairComparer.cs
- XmlSchemaAttributeGroupRef.cs
- SqlBuffer.cs
- WebPartsPersonalizationAuthorization.cs
- ImageMap.cs