diff --git a/lib/utils.js b/lib/utils.js
index 914965bb..bab75333 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -55,7 +55,6 @@ var xml_special_to_encoded_text = {
function encodeSpecialCharactersInAttribute(attributeValue){
return attributeValue
- .replace(/[\r\n\t ]+/g, ' ') // White space normalization (Note: this should normally be done by the xml parser) See: https://www.w3.org/TR/xml/#AVNormalize
.replace(/([&<"\r\n\t])/g, function(str, item){
// Special character normalization. See:
// - https://www.w3.org/TR/xml-c14n#ProcessingModel (Attribute Nodes)
@@ -66,7 +65,6 @@ function encodeSpecialCharactersInAttribute(attributeValue){
function encodeSpecialCharactersInText(text){
return text
- .replace(/\r\n?/g, '\n') // Line ending normalization (Note: this should normally be done by the xml parser). See: https://www.w3.org/TR/xml/#sec-line-ends
.replace(/([&<>\r])/g, function(str, item){
// Special character normalization. See:
// - https://www.w3.org/TR/xml-c14n#ProcessingModel (Text Nodes)
diff --git a/test/c14nWithComments-unit-tests.js b/test/c14nWithComments-unit-tests.js
index a259ad8d..4f112c67 100644
--- a/test/c14nWithComments-unit-tests.js
+++ b/test/c14nWithComments-unit-tests.js
@@ -274,72 +274,72 @@ module.exports = {
"Exclusive canonicalization works on complex xml": function (test) {
compare(test,
- "\r" +
- "\r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " ererer\r" +
- " dfdf\r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " erer\r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
+ "\n" +
+ "\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " ererer\n" +
+ " dfdf\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " erer\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
" \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
"",
"//*[local-name(.)='Body']",
- "
\n \n \n \n \n \n \n \n \n \n \n \n \n ererer\n dfdf\n \n \n \n \n \n \n \n \n \n erer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ")
+ "\n \n \n \n \n \n \n \n \n \n \n \n \n ererer\n dfdf\n \n \n \n \n \n \n \n \n \n erer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n ")
},
"Multiple Canonicalization with namespace definition outside of signed element": function (test) {
diff --git a/test/canonicalization-unit-tests.js b/test/canonicalization-unit-tests.js
index c0316ec8..b7f0fb36 100644
--- a/test/canonicalization-unit-tests.js
+++ b/test/canonicalization-unit-tests.js
@@ -13,7 +13,7 @@ var compare = function(test, xml, xpath, expected, inclusiveNamespacesPrefixList
inclusiveNamespacesPrefixList: inclusiveNamespacesPrefixList,
defaultNsForPrefix: defaultNsForPrefix
}).toString()
-
+
test.equal(expected, result)
test.done()
}
@@ -181,23 +181,23 @@ module.exports = {
"Exclusive canonicalization works on xml with attribute values with special characters": function (test) {
compare(test,
- ""11\" attrUnencoded='&>\"11'>11",
+ ""11
\" attrUnencoded='&>\"11\r\n'>11",
"//*[local-name(.)='child']",
- ""11\" attrUnencoded=\"&>"11\">11")
+ ""11
\" attrUnencoded=\"&>"11
\">11")
},
- "Exclusive canonicalization normalizes whitespace characters into single spaces": function (test) {
+ "Exclusive canonicalization does not normalize whitespace characters into single spaces": function (test) {
compare(test,
"11",
"//*[local-name(.)='child']",
- "11")
+ "11")
},
"Exclusive canonicalization works on xml with element values with special characters": function (test) {
compare(test,
- "&<>"11&>\"11\",
+ "&<>"11
&>\"11\r\",
"//*[local-name(.)='child']",
- "&<>\"11&>\"11")
+ "&<>\"11
&>\"11
")
},
"Exclusive canonicalization preserves white space in values": function (test) {
@@ -207,18 +207,18 @@ module.exports = {
"12\n3\t")
},
- "Exclusive canonicalization turns CR-NL (windows line separator) into NL": function(test){
+ "Exclusive canonicalization does not alter CR-NL (windows line separator) sequences": function(test){
compare(test,
"123\r\n",
"//*[local-name(.)='child']",
- "123\n")
+ "123
\n")
},
- "Exclusive canonicalization turns CR into NL": function(test){
+ "Exclusive canonicalization preserves and encodes CR white space": function(test){
compare(test,
"\r12\r3\r",
"//*[local-name(.)='child']",
- "\n12\n3\n")
+ "
12
3
")
},
"Exclusive canonicalization preserves white space between elements": function (test) {
@@ -309,72 +309,72 @@ module.exports = {
"Exclusive canonicalization works on complex xml": function (test) {
compare(test,
- "\r" +
- "\r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " ererer\r" +
- " dfdf\r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " erer\r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
+ "\n" +
+ "\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " ererer\n" +
+ " dfdf\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " erer\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
" \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
- " \r" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
"",
"//*[local-name(.)='Body']",
- "\n \n \n \n \n \n \n \n \n \n \n \n \n ererer\n dfdf\n \n \n \n \n \n \n \n \n \n erer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ")
+ "\n \n \n \n \n \n \n \n \n \n \n \n \n ererer\n dfdf\n \n \n \n \n \n \n \n \n \n erer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n ")
},
"Multiple Canonicalization with namespace definition outside of signed element": function (test) {