Поделиться через


Проверка подписанного сообщения

Эти действия проверяют подпись подписанных данных. На следующем рисунке показаны отдельные задачи, которые необходимо выполнить, как показано в следующем списке.

проверка подписанного сообщения

Проверка подписи подписанного сообщения

  1. Получение указателя на подписанное сообщение.

  2. Откройте хранилище сертификатов.

  3. Используя идентификатор подписывателя, содержащийся в сообщении, получите сертификат отправителя и дескриптор его открытого ключа.

    В качестве альтернативы шагам 2 и 3 можно использовать сертификат, содержащийся в сообщении, для получения открытого ключа подписывателя.

  4. С помощью открытого ключа подписывателя расшифрует цифровую подпись, создав исходный дайджест данных в сообщении.

  5. С помощью хэш-алгоритма, содержащегося в сообщении, хэшируются данные, содержащиеся в сообщении, что приводит к получению нового дайджеста.

  6. Сравните хэш, полученный из сообщения, с новым хэшом, только что созданным.

  7. Если два дайджеста совпадают, подпись проверяется. Это означает, что закрытый ключ , который использовался для подписывания данных, соответствует открытому ключу, который только что использовался для расшифровки подписи, и что данные не изменились с момента подписания данных.

    Если два хэша не совпадают, подпись не проверяется, либо закрытые и открытые ключи не совпадают, либо данные были изменены с момента подписания данных, либо и то, и другое.

Для проверки подписи можно использовать одну функцию CryptVerifyMessageSignature, как показано в следующей процедуре.

Проверка подписанного сообщения

  1. Получение указателя на подписанное сообщение.
  2. Получение размера подписанного сообщения.
  3. Получение дескриптора для поставщика шифрования.
  4. Инициализируйте структуру CRYPT_VERIFY_MESSAGE_PARA .
  5. Вызовите CryptVerifyMessageSignature , чтобы проверить подпись.

Код, реализующий эту процедуру, включен в пример программы C: подписывание сообщения и проверка подписи сообщения.