"Microsoft RSA SChannel Cryptographic Provider"を使用してデジタル署名を生成しようとしています。コンテナへのハンドルを取得した後、CryptGenKey()を使用してシグネチャを生成しています。しかし、この関数はFALSEを返します。CryptoAPI RSA Schannelプロバイダエラー
CryptGenKeyためdwError()は、他のプロバイダ・タイプの80090008.
同じ作品を返します。また、私は同じプロバイダのための鍵交換ペアを作成しようとしているとき、それは正常に動作しています。私は間違って何をしていますか?
#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;
}
ありがとうございます。