*/\r
nsAutoString& onlyOneWhiteSpace(nsAutoString& s){\r
s.ReplaceSubstring(NS_LITERAL_STRING("\t"), NS_LITERAL_STRING(" "));\r
- s.ReplaceSubstring(NS_LITERAL_STRING(" "), NS_LITERAL_STRING(" "));\r
- \r
+ s.ReplaceSubstring(NS_LITERAL_STRING(" "), NS_LITERAL_STRING(" ")); \r
return s;\r
}\r
\r
\r
-nsAutoString& canonilizeHeaderValue(nsAutoString &hdrval)\r
+nsAutoString& canonilizeHeaderValue(nsAutoString &hdrval, PRInt32 iCanonAlgorithme)\r
{\r
- removeJumpSymb(hdrval);\r
- onlyOneWhiteSpace(hdrval);\r
- hdrval.CompressWhitespace(PR_TRUE,PR_TRUE);\r
+ if(iCanonAlgorithme){\r
+ // relaxed canonicalization algorithm\r
+ removeJumpSymb(hdrval);\r
+ onlyOneWhiteSpace(hdrval);\r
+ hdrval.CompressWhitespace(PR_TRUE,PR_TRUE);\r
+ }else{\r
+ // simple canonicalization algorithm\r
+ hdrval.StripChar(PRUnichar('\n'), hdrval.Length()-4);\r
+ hdrval.StripChar(PRUnichar('\r'), hdrval.Length()-4);\r
+ }\r
return hdrval;\r
}\r
\r
-nsAutoString& canonilizeHeaderName(nsAutoString &hdrname)\r
+nsAutoString& canonilizeHeaderName(nsAutoString &hdrname, PRInt32 iCanonAlgorithme)\r
{\r
- nsCAutoString utf8str = NS_ConvertUTF16toUTF8(hdrname);\r
- ToLowerCase(utf8str);\r
- hdrname = NS_ConvertUTF8toUTF16(utf8str);\r
- onlyOneWhiteSpace(hdrname);\r
- hdrname.CompressWhitespace(PR_TRUE,PR_TRUE);\r
+ if(iCanonAlgorithme){\r
+ // relaxed canonicalization algorithm\r
+ nsCAutoString utf8str = NS_ConvertUTF16toUTF8(hdrname);\r
+ ToLowerCase(utf8str);\r
+ hdrname = NS_ConvertUTF8toUTF16(utf8str);\r
+ onlyOneWhiteSpace(hdrname);\r
+ hdrname.CompressWhitespace(PR_TRUE,PR_TRUE);\r
+ }\r
return hdrname;\r
}\r
\r
_secureHeader->GetHeaderName(_headerName);\r
GetValueHeader(_headerName,aComposeFields,_headerValue);\r
if(!_headerValue.IsEmpty()){\r
-\r
- if(mCanonAlgorithme){\r
- canonilizeHeaderName(_headerName);\r
- canonilizeHeaderValue(_headerValue);\r
- }\r
+ \r
+ canonilizeHeaderName(_headerName, mCanonAlgorithme);\r
+ canonilizeHeaderValue(_headerValue, mCanonAlgorithme);\r
+ \r
_secureHeader->SetHeaderName(_headerName);\r
_secureHeader->SetHeaderValue(_headerValue);\r
mSecureHeaders->AppendElement(_secureHeader,PR_FALSE);\r