public void Sign(XmlSigningNodeWriter writer) { for (int i = 0; i < nsCount; i++) { PrefixHandle prefix = namespaces[i].Prefix; bool found = false; for (int j = i + 1; j < nsCount; j++) { if (Equals(prefix, namespaces[j].Prefix)) { found = true; break; } } if (!found) { int prefixOffset, prefixLength; byte[] prefixBuffer = prefix.GetString(out prefixOffset, out prefixLength); int nsOffset, nsLength; byte[] nsBuffer = namespaces[i].Uri.GetString(out nsOffset, out nsLength); writer.WriteXmlnsAttribute(prefixBuffer, prefixOffset, prefixLength, nsBuffer, nsOffset, nsLength); } } }
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); } }