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
- _ScatterGatherBuffers.cs
- FormViewPageEventArgs.cs
- SqlUDTStorage.cs
- ServiceNotStartedException.cs
- PeerNameRecord.cs
- WorkerRequest.cs
- ButtonBaseAutomationPeer.cs
- IndexedString.cs
- SamlAssertion.cs
- RegistrationServices.cs
- DataControlPagerLinkButton.cs
- ControlCachePolicy.cs
- ServiceDescriptionReflector.cs
- MatrixAnimationUsingKeyFrames.cs
- CodeMemberMethod.cs
- Button.cs
- SessionPageStateSection.cs
- ExcCanonicalXml.cs
- CutCopyPasteHelper.cs
- ObjectRef.cs
- WinFormsSecurity.cs
- ToolStripItemDataObject.cs
- DataBindingCollection.cs
- IntSecurity.cs
- WindowsFormsHelpers.cs
- SubpageParaClient.cs
- SerializationSectionGroup.cs
- AspNetSynchronizationContext.cs
- SecurityTokenSerializer.cs
- CommandLibraryHelper.cs
- DataGridViewAutoSizeModeEventArgs.cs
- FormViewInsertEventArgs.cs
- ByteAnimationBase.cs
- TailPinnedEventArgs.cs
- TextElement.cs
- ColumnMapProcessor.cs
- DispatcherExceptionEventArgs.cs
- X509CertificateCollection.cs
- XhtmlStyleClass.cs
- CodeIterationStatement.cs
- PackageDigitalSignature.cs
- ValidationHelper.cs
- New.cs
- InternalCache.cs
- DrawingImage.cs
- PeerTransportElement.cs
- WebPartMenuStyle.cs
- ElementHostPropertyMap.cs
- RichTextBoxConstants.cs
- GenericRootAutomationPeer.cs
- SerialPort.cs
- FileSystemWatcher.cs
- RIPEMD160.cs
- TaskFactory.cs
- IdentitySection.cs
- QueryableDataSourceView.cs
- shaperfactoryquerycacheentry.cs
- XPathArrayIterator.cs
- HostedElements.cs
- MonthCalendar.cs
- HttpServerUtilityBase.cs
- CalloutQueueItem.cs
- ComponentChangedEvent.cs
- SafeNativeMethodsMilCoreApi.cs
- SafePEFileHandle.cs
- DataGridRowAutomationPeer.cs
- ClosableStream.cs
- TraceInternal.cs
- CounterCreationData.cs
- ToolStripItemDataObject.cs
- PanelStyle.cs
- HighlightComponent.cs
- SystemUnicastIPAddressInformation.cs
- TypeFieldSchema.cs
- JumpPath.cs
- Typography.cs
- DataRelationPropertyDescriptor.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- UnitySerializationHolder.cs
- Vector3D.cs
- ServicePoint.cs
- Point3DValueSerializer.cs
- AddressUtility.cs
- Comparer.cs
- SqlFacetAttribute.cs
- MultipleCopiesCollection.cs
- MemberInfoSerializationHolder.cs
- PagerSettings.cs
- CompModSwitches.cs
- AnimationStorage.cs
- ConstraintEnumerator.cs
- ProcessRequestArgs.cs
- AnnotationAdorner.cs
- XmlSerializerVersionAttribute.cs
- TemplatingOptionsDialog.cs
- ControlDesigner.cs
- CheckBoxField.cs
- TCEAdapterGenerator.cs
- EncoderNLS.cs
- XmlSchemaSequence.cs