void SignAttribute(XmlSigningNodeWriter writer, XmlAttributeNode attributeNode) { QNameType qnameType = attributeNode.QNameType; if (qnameType == QNameType.Normal) { int prefixOffset, prefixLength; byte[] prefixBuffer = attributeNode.Prefix.GetString(out prefixOffset, out prefixLength); int localNameOffset, localNameLength; byte[] localNameBuffer = attributeNode.LocalName.GetString(out localNameOffset, out localNameLength); writer.WriteStartAttribute(prefixBuffer, prefixOffset, prefixLength, localNameBuffer, localNameOffset, localNameLength); attributeNode.Value.Sign(writer); writer.WriteEndAttribute(); } else { Fx.Assert(qnameType == QNameType.Xmlns, ""); int prefixOffset, prefixLength; byte[] prefixBuffer = attributeNode.Namespace.Prefix.GetString(out prefixOffset, out prefixLength); int nsOffset, nsLength; byte[] nsBuffer = attributeNode.Namespace.Uri.GetString(out nsOffset, out nsLength); writer.WriteXmlnsAttribute(prefixBuffer, prefixOffset, prefixLength, nsBuffer, nsOffset, nsLength); } }