Я уже задавал вопрос об этом раньше, но все еще не понимаю, что делать.
Мне нужно сделать канонизированный заголовок и текст для письма. Я прочитал эту часть документации много раз. Может ли кто-нибудь привести пример, потому что я не могу обернуть голову вокруг этого:
3.4.1. «Простой» алгоритм канонизации заголовка
«Простой» алгоритм канонизации заголовка никак не меняет поля заголовка. Поля заголовка ДОЛЖНЫ быть представлены алгоритму подписи или проверки в точности так, как они есть в сообщении, которое подписывается или проверяется. В частности, имена полей заголовка НЕ ДОЛЖНЫ быть сложены в регистр, а пробел НЕ ДОЛЖЕН изменяться.
3.4.2. Алгоритм канонизации "расслабленного" заголовка
Алгоритм канонизации "расслабленного" заголовка ДОЛЖЕН применять следующие шаги по порядку:
Преобразование всех имен полей заголовка (не поля заголовка)значения) в нижнем регистре. Например, преобразуйте «SUBJect: AbC» в «subject: AbC».
Разверните все строки продолжения поля заголовка, как описано в [RFC5322];в частности, строки с терминаторами, встроенными в продолженные значения полей заголовка (то есть последовательности CRLF, за которыми следует WSP), ДОЛЖНЫ интерпретироваться без CRLF. Реализации НЕ ДОЛЖНЫ удалять CRLF в конце значения поля заголовка.
Преобразовать все последовательности одного или нескольких символов WSP в один символ SP. Символы WSP здесь включают символы до и после границы сгиба строки.
Удалите все символы WSP в конце каждого развернутого поля заголовка.
Удалите все символы WSP, оставшиеся до и после двоеточия, отделяющего имя поля заголовка от значения поля заголовка. НЕОБХОДИМО, чтобы разделитель двоеточия был сохранен.
3.4.3. «Простой» алгоритм канонизации тела
«Простой» алгоритм канонизации тела игнорирует все пустые строки в конце тела сообщения. Пустая строка - это строка нулевой длины после удаления ограничителя строки. Если в теле сообщения отсутствует тело или нет завершающего CRLF, то добавляется CRLF. Он не вносит никаких других изменений в тело сообщения. В более формальных терминах «простой» алгоритм канонизации тела преобразует «* CRLF» в конце тела в один «CRLF».
Обратите внимание, что полностью пустое или отсутствующее тело канонизируется как одно »CRLF ";то есть канонизированная длина будет 2 октета.
Значение SHA-1 (в base64) для пустого тела (канонизированное для "CRLF"):
uoq1oCgLlTqpdDX/iUbLy7J1Wic=
Значение SHA-256:
frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=
3.4.4. Алгоритм канонизации "расслабленного" тела
Алгоритм канонизации "расслабленного" тела ДОЛЖЕН применять следующие шаги (1) и (2) по порядку:
Сокращение пробелов:
Игнорировать все пустые строки в конце тела сообщения. «Пустая строка» определена в разделе 3.4.3. Если тело не пустое, но не заканчивается CRLF, добавляется CRLF. (Для электронной почты это возможно только при использовании расширений для механизмов транспорта SMTP или не-SMTP.)
Значение SHA-1 (в base64) для пустого тела (канонизировано длянулевой ввод):
2jmj7l5rSw0yVb/vlWAYkK/YBwk=
Значение SHA-256:
47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
3.4.5. Примеры канонизации (INFORMATIVE)
В следующих примерах фактические пробелы используются только для ясности. Фактический входной и выходной текст обозначается дескрипторами в квадратных скобках: "<SP>"
для пробела, "<HTAB>"
для символа табуляции и "<CRLF>"
для последовательности возврата каретки / перевода строки. Например, "X <SP> Y"
и "X<SP>Y"
представляют три одинаковых символа.
Пример 1: чтение сообщения:
A: <SP> X <CRLF>
B <SP> : <SP> Y <HTAB><CRLF>
<HTAB> Z <SP><SP><CRLF>
<CRLF>
<SP> C <SP><CRLF>
D <SP><HTAB><SP> E <CRLF>
<CRLF>
<CRLF>
при канонизации с использованием упрощенной канонизации для заголовка и тела приводит к чтению заголовка:
a:X <CRLF>
b:Y <SP> Z <CRLF>
и чтению тела:
<SP> C <CRLF>
D <SP> E <CRLF>
Пример 2. Одно и то же сообщение, канонизированное с использованием простой канонизации заголовка и основного текста, приводит к чтению заголовка:
A: <SP> X <CRLF>
B <SP> : <SP> Y <HTAB><CRLF>
<HTAB> Z <SP><SP><CRLF>
и чтению основного текста:
<SP> C <SP><CRLF>
D <SP><HTAB><SP> E <CRLF>
Пример 3: при обработке с использованием канонизации расслабленного заголовка и простой канонизации тела, канонизированная версия имеет заголовок:
a:X <CRLF>
b:Y <SP> Z <CRLF>
и чтение тела:
<SP> C <SP><CRLF>
D <SP><HTAB><SP> E <CRLF>