В XMPP RFC есть две директивы MUST
, устанавливающие, что XML, используемый для STARTTLS и SASL, не должен включать любые пробелы ради чего-то, что в спецификации указано как «точность байта уровня безопасности». Это что?
Соответствующие выдержки из RFC:
...
Во время согласования STARTTLS объекты НЕ ДОЛЖНЫ отправлять какие-либо пробелы в качестве разделителей между элементами XML (т. е. из последнего символа элемента первого уровня, определяемого пространством имен 'urn:ietf:params:xml:ns:xmpp-tls', как отправлено). инициирующим объектом до последнего символа элемента первого уровня, определенного пространством имен urn:ietf:params:xml:ns:xmpp-tls, отправленного принимающим объектом). Этот запрет помогает обеспечить надлежащую точность байтов на уровне безопасности.
... Во время согласования SASL объекты НЕ ДОЛЖНЫ отправлять какие-либо пробелы в качестве разделителей между элементами XML (т. е. из последнего символа элемента первого уровня, определяемого параметром 'urn:ietf:params:xml:ns:xmpp-sasl' пространство имен, отправленное инициирующим объектом, до последнего символа элемента первого уровня, квалифицированного пространством имен «urn:ietf:params:xml:ns:xmpp-sasl», отправленного принимающим объектом). Этот запрет помогает обеспечить надлежащую точность байтов на уровне безопасности.