Можно ли повторно использовать хэш-объект CryptVerifySignature ()? - PullRequest
0 голосов
/ 23 сентября 2011

MSDN говорит, что после CryptVerifySignature() вы не можете повторно использовать HCRYPTHASH объект, чтобы попытаться хэшировать больше данных, вместо этого он говорит, что вам нужно воссоздать его с CryptDestroyHash() и CryptCreateHash(). Повторное использование действительно не удается.

Кто-нибудь знаком с хаком, который может сохранить эти вызовы, или это действительно невозможно?

1 Ответ

1 голос
/ 23 сентября 2011

Я думаю, что структура данных HCRYPTHASH более гибкая, чем просто использование для вызова с CryptVerifySignature(). Он предназначен для работы с (возможно, прерывистым) потоком данных (через CryptHashData()), что означает, что он сохраняет некоторое состояние внутри него на текущих значениях хеша. Поэтому, как только вы используете его в потоке (даже частичном), состояние безвозвратно изменяется, поэтому вы не можете использовать его в другом потоке.

Полагаю, они могли бы предоставить reset функцию для структуры HCRYPTHASH ... но они этого не сделали!

...