暗号化について

[戻る]
yuki 2004/01/15(木) 11:46:08
VC初心者です。

暗号化のアプリを作成しようとしていますが、
よく、わかりません。
初歩的な質問ですが、教えて下さい。

以下のように、CryptAcquireContext関数をまず、呼ぼうとしていますが、
エラーになってしまいます。

#include <wincrypt.h>

CCryptTest::CCryptTest()
{
    HCRYPTPROV hProv; ←この部分

    CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);
}

『error C2065: 'HCRYPTPROV' : 定義されていない識別子です。』
のエラーになってしまいます。

初歩的で、申し訳ありませんが、誰か教えて下さい。
宜しくお願いします。

tetrapod 2004/01/15(木) 12:36:19
とりあえず wincrypt.h を見たところ、あらかじめ
#define _WIN32_WINNT 0x0400
が必要なようです。

VC++ の全ヘッダの振る舞いを変えうる重大な定義なので、
プロジェクトの設定→プリプロセッサの定義
で、ソースコードの外側で定義しておくのが吉。

yuki 2004/01/15(木) 13:09:58
tetrapodさん、アドバイスありがとうございます。

早速、プリプロセッサの定義に_WIN32_WINNT=0x0400を設定して
みましたが、以下のエラーになってしまいます。
また、ソースコードに#define _WIN32_WINNT 0x0400をインクルードの前に
入れても同じでした。

エラーの内容は、以下のとおりです。

wincrypt.h(24) : error C2146: 構文エラー : ';' が、識別子 'HRESULT' の前に必要です。

また、教えて頂けますでしょうか?
宜しくお願いします。

EEE 2004/01/15(木) 13:35:13
>wincrypt.h(24) : error C2146: 構文エラー : ';' が、識別子 'HRESULT' の前に必要で
す。

日本語読めませんか?

tetrapod 2004/01/15(木) 13:37:43
簡単なコンソールアプリケーションでは当該エラーは出ませんでした。
MFC 使用の有無でも話は違うでしょう。

ま、とりあえず VC++ 6 の include ディレクトリを grep するに、
wincrypt.h の前に winnt.h を #include すると直りそうな気がします。
_WIN32_WINNT はプリプロセッサの定義のほうに移しましょう。

yuki 2004/01/15(木) 14:02:04
[[解決]]
tetrapodさん、再度のアドバイスありがとうございます。

再度、MFCを使用するコンソールアプリケーションを新規にプロジェクトを
作成し直してみました。
一応、エラーはでなくなりました。

どうも、ありがとうございました。

古いスレッドには追加発言できません。