Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Serialization / System / Xml / XmlSigningNodeWriter.cs / 1 / XmlSigningNodeWriter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Xml { using System.IO; using System.Text; class XmlSigningNodeWriter : XmlNodeWriter { XmlNodeWriter writer; XmlCanonicalWriter signingWriter; byte[] chars; byte[] base64Chars; bool text; public XmlSigningNodeWriter(bool text) { this.text = text; } public void SetOutput(XmlNodeWriter writer, Stream stream, bool includeComments, string[] inclusivePrefixes) { this.writer = writer; if (signingWriter == null) signingWriter = new XmlCanonicalWriter(); this.signingWriter.SetOutput(stream, includeComments, inclusivePrefixes); this.chars = new byte[XmlConverter.MaxPrimitiveChars]; this.base64Chars = null; } public XmlNodeWriter NodeWriter { get { return writer; } set { writer = value; } } public XmlCanonicalWriter CanonicalWriter { get { return signingWriter; } } public override void Flush() { writer.Flush(); signingWriter.Flush(); } public override void Close() { writer.Close(); signingWriter.Close(); } public override void WriteDeclaration() { writer.WriteDeclaration(); signingWriter.WriteDeclaration(); } public override void WriteComment(string text) { writer.WriteComment(text); signingWriter.WriteComment(text); } public override void WriteCData(string text) { writer.WriteCData(text); signingWriter.WriteEscapedText(text); } public override void WriteStartElement(string prefix, string localName) { writer.WriteStartElement(prefix, localName); signingWriter.WriteStartElement(prefix, localName); } public override void WriteStartElement(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength) { writer.WriteStartElement(prefixBuffer, prefixOffset, prefixLength, localNameBuffer, localNameOffset, localNameLength); signingWriter.WriteStartElement(prefixBuffer, prefixOffset, prefixLength, localNameBuffer, localNameOffset, localNameLength); } public override void WriteStartElement(string prefix, XmlDictionaryString localName) { writer.WriteStartElement(prefix, localName); signingWriter.WriteStartElement(prefix, localName.Value); } public override void WriteEndStartElement(bool isEmpty) { writer.WriteEndStartElement(isEmpty); signingWriter.WriteEndStartElement(isEmpty); } public override void WriteEndElement(string prefix, string localName) { writer.WriteEndElement(prefix, localName); signingWriter.WriteEndElement(prefix, localName); } public override void WriteXmlnsAttribute(string prefix, string ns) { writer.WriteXmlnsAttribute(prefix, ns); signingWriter.WriteXmlnsAttribute(prefix, ns); } public override void WriteXmlnsAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] nsBuffer, int nsOffset, int nsLength) { writer.WriteXmlnsAttribute(prefixBuffer, prefixOffset, prefixLength, nsBuffer, nsOffset, nsLength); signingWriter.WriteXmlnsAttribute(prefixBuffer, prefixOffset, prefixLength, nsBuffer, nsOffset, nsLength); } public override void WriteXmlnsAttribute(string prefix, XmlDictionaryString ns) { writer.WriteXmlnsAttribute(prefix, ns); signingWriter.WriteXmlnsAttribute(prefix, ns.Value); } public override void WriteStartAttribute(string prefix, string localName) { writer.WriteStartAttribute(prefix, localName); signingWriter.WriteStartAttribute(prefix, localName); } public override void WriteStartAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength) { writer.WriteStartAttribute(prefixBuffer, prefixOffset, prefixLength, localNameBuffer, localNameOffset, localNameLength); signingWriter.WriteStartAttribute(prefixBuffer, prefixOffset, prefixLength, localNameBuffer, localNameOffset, localNameLength); } public override void WriteStartAttribute(string prefix, XmlDictionaryString localName) { writer.WriteStartAttribute(prefix, localName); signingWriter.WriteStartAttribute(prefix, localName.Value); } public override void WriteEndAttribute() { writer.WriteEndAttribute(); signingWriter.WriteEndAttribute(); } public override void WriteCharEntity(int ch) { writer.WriteCharEntity(ch); signingWriter.WriteCharEntity(ch); } public override void WriteEscapedText(string value) { writer.WriteEscapedText(value); signingWriter.WriteEscapedText(value); } public override void WriteEscapedText(char[] chars, int offset, int count) { writer.WriteEscapedText(chars, offset, count); signingWriter.WriteEscapedText(chars, offset, count); } public override void WriteEscapedText(XmlDictionaryString value) { writer.WriteEscapedText(value); signingWriter.WriteEscapedText(value.Value); } public override void WriteEscapedText(byte[] chars, int offset, int count) { writer.WriteEscapedText(chars, offset, count); signingWriter.WriteEscapedText(chars, offset, count); } public override void WriteText(string value) { writer.WriteText(value); signingWriter.WriteText(value); } public override void WriteText(char[] chars, int offset, int count) { writer.WriteText(chars, offset, count); signingWriter.WriteText(chars, offset, count); } public override void WriteText(byte[] chars, int offset, int count) { writer.WriteText(chars, offset, count); signingWriter.WriteText(chars, offset, count); } public override void WriteText(XmlDictionaryString value) { writer.WriteText(value); signingWriter.WriteText(value.Value); } public override void WriteInt32Text(int value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteInt32Text(value); signingWriter.WriteText(chars, 0, count); } public override void WriteInt64Text(Int64 value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteInt64Text(value); signingWriter.WriteText(chars, 0, count); } public override void WriteBoolText(bool value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteBoolText(value); signingWriter.WriteText(chars, 0, count); } public override void WriteUInt64Text(UInt64 value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteUInt64Text(value); signingWriter.WriteText(chars, 0, count); } public override void WriteFloatText(float value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteFloatText(value); signingWriter.WriteText(chars, 0, count); } public override void WriteDoubleText(double value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteDoubleText(value); signingWriter.WriteText(chars, 0, count); } public override void WriteDecimalText(decimal value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteDecimalText(value); signingWriter.WriteText(chars, 0, count); } public override void WriteDateTimeText(DateTime value) { int count = XmlConverter.ToChars(value, chars, 0); if (text) writer.WriteText(chars, 0, count); else writer.WriteDateTimeText(value); signingWriter.WriteText(chars, 0, count); } public override void WriteUniqueIdText(UniqueId value) { string s = XmlConverter.ToString(value); if (text) writer.WriteText(s); else writer.WriteUniqueIdText(value); signingWriter.WriteText(s); } public override void WriteTimeSpanText(TimeSpan value) { string s = XmlConverter.ToString(value); if (text) writer.WriteText(s); else writer.WriteTimeSpanText(value); signingWriter.WriteText(s); } public override void WriteGuidText(Guid value) { string s = XmlConverter.ToString(value); if (text) writer.WriteText(s); else writer.WriteGuidText(value); signingWriter.WriteText(s); } public override void WriteStartListText() { writer.WriteStartListText(); } public override void WriteListSeparator() { writer.WriteListSeparator(); signingWriter.WriteText(' '); } public override void WriteEndListText() { writer.WriteEndListText(); } public override void WriteBase64Text(byte[] trailBytes, int trailByteCount, byte[] buffer, int offset, int count) { if (trailByteCount > 0) WriteBase64Text(trailBytes, 0, trailByteCount); WriteBase64Text(buffer, offset, count); if (!text) { writer.WriteBase64Text(trailBytes, trailByteCount, buffer, offset, count); } } void WriteBase64Text(byte[] buffer, int offset, int count) { if (base64Chars == null) base64Chars = new byte[512]; Base64Encoding encoding = XmlConverter.Base64Encoding; while (count >= 3) { int byteCount = Math.Min(base64Chars.Length / 4 * 3, count - count % 3); int charCount = byteCount / 3 * 4; encoding.GetChars(buffer, offset, byteCount, base64Chars, 0); signingWriter.WriteText(base64Chars, 0, charCount); if (text) { writer.WriteText(base64Chars, 0, charCount); } offset += byteCount; count -= byteCount; } if (count > 0) { encoding.GetChars(buffer, offset, count, base64Chars, 0); signingWriter.WriteText(base64Chars, 0, 4); if (text) { writer.WriteText(base64Chars, 0, 4); } } } public override void WriteQualifiedName(string prefix, XmlDictionaryString localName) { writer.WriteQualifiedName(prefix, localName); if (prefix.Length != 0) { signingWriter.WriteText(prefix); signingWriter.WriteText(":"); } signingWriter.WriteText(localName.Value); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextBounds.cs
- ProvidersHelper.cs
- SortQuery.cs
- CSharpCodeProvider.cs
- RC2.cs
- StorageFunctionMapping.cs
- PartitionResolver.cs
- XmlDataSourceView.cs
- SqlVersion.cs
- LicenseProviderAttribute.cs
- ContainerCodeDomSerializer.cs
- ComPlusInstanceProvider.cs
- ModuleConfigurationInfo.cs
- FillBehavior.cs
- QueryStringHandler.cs
- DataGridViewCellEventArgs.cs
- ObjectDataSourceMethodEventArgs.cs
- GenericWebPart.cs
- SafeTimerHandle.cs
- XamlStream.cs
- AnnotationHelper.cs
- PropertyExpression.cs
- EntityDataSourceState.cs
- PartialCachingControl.cs
- StreamReader.cs
- ProjectionRewriter.cs
- DnsPermission.cs
- DbBuffer.cs
- WeakReferenceList.cs
- TraceFilter.cs
- RelOps.cs
- PerformanceCounter.cs
- DocumentGrid.cs
- StyleTypedPropertyAttribute.cs
- LocalTransaction.cs
- TextBoxBase.cs
- CalloutQueueItem.cs
- KeyedHashAlgorithm.cs
- CompilerInfo.cs
- BaseConfigurationRecord.cs
- CompositeFontParser.cs
- BinHexEncoder.cs
- Certificate.cs
- Empty.cs
- CheckBoxField.cs
- ReadWriteObjectLock.cs
- ConnectionConsumerAttribute.cs
- SimpleRecyclingCache.cs
- XmlSchemaComplexType.cs
- WebRequest.cs
- TextCollapsingProperties.cs
- DirectoryNotFoundException.cs
- WebHttpSecurityElement.cs
- LinkConverter.cs
- Sql8ExpressionRewriter.cs
- CollectionChange.cs
- QuaternionAnimation.cs
- ListViewTableRow.cs
- DataControlImageButton.cs
- TypeDescriptorFilterService.cs
- DataMisalignedException.cs
- PartialTrustHelpers.cs
- DescendantOverDescendantQuery.cs
- StringInfo.cs
- DrawItemEvent.cs
- _ScatterGatherBuffers.cs
- DynamicDocumentPaginator.cs
- ConstructorBuilder.cs
- LongPath.cs
- BigInt.cs
- EventInfo.cs
- Types.cs
- HelpProvider.cs
- GridViewRow.cs
- ChannelSinkStacks.cs
- ControlPropertyNameConverter.cs
- Bitmap.cs
- ReflectPropertyDescriptor.cs
- InkCanvasFeedbackAdorner.cs
- BaseCodePageEncoding.cs
- SqlBuffer.cs
- FixedFlowMap.cs
- DataGridViewCellFormattingEventArgs.cs
- rsa.cs
- DesignSurfaceEvent.cs
- SqlConnection.cs
- NavigationPropertyAccessor.cs
- EmissiveMaterial.cs
- RegularExpressionValidator.cs
- CatalogUtil.cs
- Section.cs
- ObjectDisposedException.cs
- SplitterPanel.cs
- EventProxy.cs
- MdImport.cs
- PowerStatus.cs
- CodeDomComponentSerializationService.cs
- ModuleConfigurationInfo.cs
- AsyncContentLoadedEventArgs.cs
- ObjectDataSourceMethodEventArgs.cs