Разработка 64-битных приложений, использующих MS CryptoAPI - PullRequest
4 голосов
/ 22 февраля 2012

Я разработчик на C ++, но не имею большого опыта разработки Windows.

Мой основной вопрос касается использования Crypto API . Я буду использовать такие функции, как CryptAcquireContext . Во время исследования об этом API, описывается только как «Win32 Crypto API». Интересно, есть ли Win64 Crypto API?

Если нет, если я разработаю приложение, использующее «Win32 Crypto API» в Visual Studio, и скомпилирую в 64-битном режиме. Было бы лучше, если бы я скомпилировал в 32 бит?

Что мне нужно сделать для разработки 64-битного приложения, использующего Crypto API?

Если возможно, сообщайте о любых проблемах, возникающих при разработке приложений для 64-битных систем при использовании крипто-API, извлекайте сертификаты, переносите подписи и т. Д.

Статьи очень приветствуются.

Ответы [ 3 ]

5 голосов
/ 22 февраля 2012

Crypto API прекрасно работает в 64-битной среде, просто используйте %ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib\x64 в качестве вашей библиотеки вместо %ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib, и она будет работать нормально, не должно быть различий между 32-битной и 64-битной библиотекой, которая не обрабатываетсяиспользование правильных типов данных для вызовов (в частности, ширина указателя)

3 голосов
/ 22 февраля 2012

Термин «Win32» означает его отличие от API криптографии .Net, а не 64-битного API.Ваши исследовательские ресурсы, вероятно, просто не были обновлены, чтобы использовать более новые термины, такие как «Win64» или «нативный».Однако MSDN не допускает такой ошибки.

Не должно быть проблем с его использованием с 64-разрядным приложением (кроме CAPICOM, который на самом деле является только 32-разрядным).

2 голосов
/ 22 февраля 2012

Crypto API находится в ADVAPI DLL. Но вы не должны использовать ссылку на CAPICOM, которая устарела и является 32-битной.

CryptAcquireContext () - это ADVAPI, который существует как в 64-битной, так и в 32-битной Windows.

...