Desenvolvimento de aplicativos de 64 bits que usam MS CryptoAPI
-
29-10-2019 - |
Pergunta
Sou um desenvolvedor C ++, mas não tenho muita experiência em desenvolvimento do Windows.
Minha pergunta principal gira em torno do uso do Crypto API . Usarei funções como CryptAcquireContext . Ao pesquisar mais sobre esta API, descrita apenas como "Win32 Crypto API." Eu me pergunto se existe "Win64 Crypto API"?
Caso contrário, se eu desenvolver um aplicativo que usa "Win32 Crypto API" no Visual Studio e compilar no modo de 64 bits. Seria melhor se eu tivesse compilado em 32 bits?
O que devo fazer para desenvolver um aplicativo de 64 bits que usa a Crypto API?
Se possível, relate quaisquer problemas que você teve no desenvolvimento de aplicativos para 64 bits ao usar a API de criptografia, recupere certificados, carregue assinaturas, etc.
Os artigos são muito bem-vindos.
Solução
A crypto api funciona bem em 64 bits, basta usar %ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib\x64
como sua biblioteca em vez de %ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib
e funcionará bem, não deve haver diferenças entre a biblioteca de 32 bits e a de 64 bits que não seja tratada usando os dados corretostipos para as chamadas (especificamente a largura do ponteiro)
Outras dicas
O termo "Win32" é para distingui-lo de uma API de criptografia .Net, não de uma API de 64 bits.Seus recursos de pesquisa provavelmente não foram atualizados para usar termos mais recentes como "Win64" ou "nativo".No entanto, não parece que o MSDN cometa esse erro.
Não deve haver problemas ao usá-lo com um aplicativo de 64 bits (exceto CAPICOM, que na verdade é apenas de 32 bits).
A Crypto API reside na DLL ADVAPI.Mas você vincula ao CAPICOM, que está obsoleto, não deve ser usado e é apenas de 32 bits.
CryptAcquireContext () é ADVAPI que existe no Windows de 64 e 32 bits.