J'essaie de générer une signature numérique en utilisant "Microsoft RSA SChannel Cryptographic Provider". Après avoir acquis le handle du conteneur, je génère une signature en utilisant CryptGenKey(). Mais cette fonction renvoie FALSE.CryptoAPI RSA Schannel Erreur du fournisseur
Le dwError pour CryptGenKey() retourne 80090008.
Les mêmes œuvres pour tout autre type de fournisseur. En outre, lorsque j'essaie de créer une paire d'échange de clés pour le même fournisseur, cela fonctionne bien. Qu'est-ce que je fais mal?
#include <Windows.h>
#include <wincrypt.h>
int main()
{
HCRYPTPROV phProv = 0;
LPTSTR pszContainer = NULL;
DWORD dwFlags = 0;
bool flag;
DWORD_PTR dwError;
HCRYPTKEY phKey;
flag = CryptAcquireContext(&phProv, pszContainer,
MS_DEF_RSA_SCHANNEL_PROV, PROV_RSA_SCHANNEL, dwFlags);
if (!flag)
{
flag = CryptAcquireContext(&phProv, pszContainer,
MS_DEF_RSA_SCHANNEL_PROV, PROV_RSA_SCHANNEL, CRYPT_NEWKEYSET);
}
dwError = GetLastError();
flag = CryptGenKey(phProv, AT_SIGNATURE, CRYPT_EXPORTABLE, &phKey);
dwError = GetLastError();
flag = CryptGetUserKey(phProv, AT_SIGNATURE, &phKey);
dwError = GetLastError();
return 0;
}
Merci.