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
- ModelUIElement3D.cs
- HtmlInputControl.cs
- FocusTracker.cs
- CodeNamespace.cs
- Rights.cs
- BinaryParser.cs
- HttpContext.cs
- LayoutSettings.cs
- PartialCachingControl.cs
- ImportedNamespaceContextItem.cs
- MetaChildrenColumn.cs
- PointHitTestResult.cs
- JsonStringDataContract.cs
- ReaderWriterLockSlim.cs
- ReadOnlyDataSource.cs
- RootBrowserWindowProxy.cs
- ListViewGroupItemCollection.cs
- ProgressBar.cs
- MimeMapping.cs
- LongValidatorAttribute.cs
- AdRotator.cs
- Vector3DCollection.cs
- CopyCodeAction.cs
- NamespaceList.cs
- BinaryObjectWriter.cs
- XmlAnyAttributeAttribute.cs
- ImageCodecInfoPrivate.cs
- DbProviderConfigurationHandler.cs
- DbBuffer.cs
- FamilyTypefaceCollection.cs
- HtmlLiteralTextAdapter.cs
- ClientTargetCollection.cs
- Light.cs
- QuaternionAnimation.cs
- RegistryKey.cs
- FrameDimension.cs
- FontStyle.cs
- SessionEndingEventArgs.cs
- LocationUpdates.cs
- PersonalizableTypeEntry.cs
- FamilyCollection.cs
- BlurBitmapEffect.cs
- OverflowException.cs
- AutomationAttributeInfo.cs
- RuleCache.cs
- _AutoWebProxyScriptWrapper.cs
- TextSimpleMarkerProperties.cs
- DataTemplateSelector.cs
- HwndAppCommandInputProvider.cs
- VideoDrawing.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- VerticalAlignConverter.cs
- CodeAttributeArgumentCollection.cs
- PlainXmlWriter.cs
- Table.cs
- JsonQNameDataContract.cs
- X509Logo.cs
- FilterElement.cs
- CardSpacePolicyElement.cs
- PreviewKeyDownEventArgs.cs
- HttpFileCollectionWrapper.cs
- FillErrorEventArgs.cs
- LogicalExpr.cs
- SQLDouble.cs
- TreeNodeStyle.cs
- RefType.cs
- FastEncoderWindow.cs
- KeyBinding.cs
- ConfigurationElementCollection.cs
- RemotingSurrogateSelector.cs
- DependentList.cs
- BitmapScalingModeValidation.cs
- AttachedAnnotation.cs
- ControlBuilder.cs
- XmlMembersMapping.cs
- DetailsViewDeleteEventArgs.cs
- CommandHelpers.cs
- IncrementalReadDecoders.cs
- DataGridViewCellStyle.cs
- XPathQilFactory.cs
- HwndKeyboardInputProvider.cs
- Pens.cs
- HttpListenerException.cs
- DiffuseMaterial.cs
- ControlType.cs
- GridViewAutoFormat.cs
- NativeMethods.cs
- GcSettings.cs
- ToolStripRenderer.cs
- ApplicationInterop.cs
- SymbolMethod.cs
- altserialization.cs
- PixelFormat.cs
- StringAnimationBase.cs
- _HeaderInfoTable.cs
- DocumentSequence.cs
- FixedSOMContainer.cs
- RuntimeIdentifierPropertyAttribute.cs
- CaseStatementSlot.cs
- WebPart.cs