18.04.2003 12:09:28VC++: Недоступные функции CryptoAPI Ответов: 3
Александр
Уважаемые гуру!
Подскажите в чем проблема, и как её можно решить.

При создании объекта в VC++ 6.0
обнаружилось, что некоторые функции отсутствуют в wincrypt.h, но описываются в MSDN.
В частности:
PFXImportCertStore
CryptAcquireCertificatePrivateKey
При этом к проекту подключены все либы:
crypt32.lib, advapi32.lib

ОС: Windows 2000 Server
Заранее спасибо!
 
Ответы:
18.04.2003 16:43:14Uri
Да нет, объявляются они в Wincrypt.h (Microsoft SDK/include)

См., например, фрагмент из него:
// PFXImportCertStore
//
// Import the PFX blob and return a store containing certificates
//
// If the password parameter is incorrect or any other problems decoding
// the PFX blob are encountered, the function will return NULL and the
// error code can be found from GetLastError().
//
// The dwFlags parameter may be set to the following:
// CRYPT_EXPORTABLE - specify that any imported keys should be marked as
// exportable (see documentation on CryptImportKey)
// CRYPT_USER_PROTECTED - (see documentation on CryptImportKey)
// CRYPT_MACHINE_KEYSET - used to force the private key to be stored in the
// the local machine and not the current user.
// CRYPT_USER_KEYSET - used to force the private key to be stored in the
// the current user and not the local machine, even if
// the pfx blob specifies that it should go into local
// machine.
//--------------------------------------------------------------------------
WINCRYPT32API
HCERTSTORE
WINAPI
PFXImportCertStore(
IN CRYPT_DATA_BLOB* pPFX,
IN LPCWSTR szPassword,
IN DWORD dwFlags);

// dwFlags definitions for PFXImportCertStore
//#define CRYPT_EXPORTABLE 0x00000001 // CryptImportKey dwFlags
//#define CRYPT_USER_PROTECTED 0x00000002 // CryptImportKey dwFlags
//#define CRYPT_MACHINE_KEYSET 0x00000020 // CryptAcquireContext dwFlags

#define CRYPT_USER_KEYSET 0x00001000

#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000

18.04.2003 19:00:27Александр
Вопрос переформулирую:
В каком VC, эти функции объявляются в wincrypt ? У меня 6.0, enterprise, и тут точно нету.
19.04.2003 9:58:07kure
Просто нужно установить Platform SDK

http://www.microsoft.com/msdownload/platformsdk/setuplauncher.asp