Таблица 4.6.2.12. Процедура формирования цифровой подписи
Шаг |
Действие |
1 |
Инициализировать тип SignedData, введя код версии, идентификатор алгоритма и тип содержимого, подлежащего подписанию |
2 |
Преобразовать информацию, подлежащую подписанию в формат DER |
3 |
Использовать результат шага 2 для инициализации компонента content из ContentInfo. |
4 |
Инициализировать тип SignerInfo, введя код версии, идентификаторы алгоритмов вычисления и шифрования дайджеста |
5 |
Вычислить дайджест сообщения, используя SHA-1 для результата шага 3 |
6 |
Инициализировать структуру authenticatedAttributes и занести в структуру атрибуты contentType и messageDigest. Установить компоненты type атрибутов равными идентификаторам этих атрибутов |
7 |
Инициализировать компонент values первого атрибута типа кодом содержимого, подлежащего подписанию, а второго атрибута – значением дайджеста, вычисленного на этапе 5 |
8 |
Закодировать аутентифицированные атрибуты и зашифровать результат, используя секретный ключ отправителя. Поместить результат в SignedData |
9 |
Выбрать соответствующие сертификаты Х.509 и CRL, необходимые для верификации подписи, и включить их в SignedData |
10 |
Если тип сообщения требует двух подписей, повторить шаги с 4 по 9 |
Оператор ключевого хэширования HMAC(t,k) соответствует 160-битовому хэшу HMAC-SHA-1 для группы t при использовании секретного ключа k. Эта функция нужна для сокрытия номера счета в сертификате владельца карты. Секретный ключ известен только владельцу карты и эмитенту. Процедура ключевого хэширования представлена в таблице 4.6.2.13.