Таблица 4.6.2.13. Процедура ключевого хэширования
Шаг |
Действие |
1 |
Установить ipad соответствующим буферу, который содержит 64 байта с кодами 0х36 |
2 |
Установить opad равным буферу, содержащему 64 байта с кодами 0х5С |
3 |
Добавить нули в конец k, чтобы размер строки стал равным 64 байтам. Например, если длина k равна 20 байт, то следует добавить 44 нуля. |
4 |
Осуществить операцию побитового исключающего ИЛИ для результата шага 3 и ipad |
5 |
Добавить данные группы t в 64-байтовый буфер, сформированный на этапе 4 |
6 |
Вычислить хэш SHA-1 для результата шага 5 с привлечением Hash-оператора |
7 |
Осуществить операцию побитового исключающего ИЛИ для результата шага 3 и opad |
8 |
Добавить результат SHA-1 шага 6 к 64-байтовому буферу, заполненному в результате шага 7 |
9 |
Вычислить хэш SHA-1 для результата шага 8 с привлечением Hash-оператора |
10 |
Прислать результат работы шага 9 |
Оператор хэширования H(t) соответствует 160-битовому хэшу SHA-1 для группы t. Этот оператор соответствует параметризованному типу ASN.1 H{}. Он используется только в обработке OAEP.
Оператор DigestedData DD(T) соответствует 160-битовому хэшу SHA-1 группы, вложенной в последовательность PKCS DigestedData. Протокол SET использует параметризованный тип DD{} (detached digests). Каждый тип содержимого типа дайджест в SET имеет имя, уникальный идентификатор объекта. Компонент contentType из ContentInfo делается равным значению этого идентификатора.
Компонент digest из DigestedData является результатом вычисления дайджеста сообщения. Он содержит дайджест сообщения типа SET, идентифицируемый компонентом contentType из contentInfo. Дайджест вычисляется с помощью алгоритма из перечня DigestAlgorithm. Вычисление производится для полного DER-представления, включая тэг, длину в октетах и типа ASN.1. Компонент digestAlgorithm из DigestedData устанавливается равным одному из значений кодов алгоритма. Код digestAlgorithm используется получателем для проверки дайджеста сообщения. Верификация осуществляется путем независимого вычисления дайджеста сообщения и сравнения его значения с компонентом digest из DigestedData. Последовательность действий показана в таблице 4.6.2.14.