132 lines
4.6 KiB
C
132 lines
4.6 KiB
C
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1995 - 1996
|
|
//
|
|
// File: nmpvkhlp.h
|
|
//
|
|
// History: 10-May-96 philh created
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef __NMPVKHLP_H__
|
|
#define __NMPVKHLP_H__
|
|
|
|
#include "wincrypt.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef PRIVATEKEYBLOB
|
|
#define PRIVATEKEYBLOB 0x7
|
|
#endif
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
// Creates a temporary container in the provider and loads the private key
|
|
// from memory.
|
|
// For success, returns a handle to a cryptographic provider for the private
|
|
// key and the name of the temporary container. PrivateKeyReleaseContext must
|
|
// be called to release the hCryptProv and delete the temporary container.
|
|
//
|
|
// PrivateKeyLoadFromMemory is called to load the private key into the
|
|
// temporary container.
|
|
//--------------------------------------------------------------------------
|
|
BOOL WINAPI
|
|
PvkPrivateKeyAcquireContextFromMemory(IN LPCWSTR pwszProvName,
|
|
IN DWORD dwProvType,
|
|
IN BYTE *pbData,
|
|
IN DWORD cbData,
|
|
IN HWND hwndOwner,
|
|
IN LPCWSTR pwszKeyName,
|
|
IN OUT OPTIONAL DWORD *pdwKeySpec,
|
|
OUT HCRYPTPROV *phCryptProv);
|
|
|
|
//+-------------------------------------------------------------------------
|
|
// Releases the cryptographic provider and deletes the temporary container
|
|
// created by PrivateKeyAcquireContext or PrivateKeyAcquireContextFromMemory.
|
|
//--------------------------------------------------------------------------
|
|
BOOL WINAPI
|
|
PvkPrivateKeyReleaseContext(IN HCRYPTPROV hCryptProv,
|
|
IN LPCWSTR pwszProvName,
|
|
IN DWORD dwProvType,
|
|
IN LPWSTR pwszTmpContainer);
|
|
|
|
//+-------------------------------------------------------------------------
|
|
// Acquiring hprovs, Trys the file first and then the KeyContainer. Use
|
|
// PvkFreeCryptProv to release HCRYPTPROV and resources.
|
|
//--------------------------------------------------------------------------
|
|
HCRYPTPROV WINAPI
|
|
PvkGetCryptProvU(IN HWND hwnd,
|
|
IN LPCWSTR pwszCaption,
|
|
IN LPCWSTR pwszCapiProvider,
|
|
IN DWORD dwProviderType,
|
|
IN LPCWSTR pwszPrivKey,
|
|
OUT LPWSTR *ppwszTmpContainer);
|
|
|
|
void WINAPI
|
|
PvkFreeCryptProvU(IN HCRYPTPROV hProv,
|
|
IN LPCWSTR pwszCapiProvider,
|
|
IN DWORD dwProviderType,
|
|
IN LPWSTR pwszTmpContainer);
|
|
|
|
//+-----------------------------------------------------------------------
|
|
//
|
|
//
|
|
// Parameters:
|
|
// Return Values:
|
|
// Error Codes:
|
|
//
|
|
//------------------------------------------------------------------------
|
|
|
|
void WINAPI PvkFreeCryptProv(IN HCRYPTPROV hProv,
|
|
IN LPCWSTR pwszCapiProvider,
|
|
IN DWORD dwProviderType,
|
|
IN LPWSTR pwszTmpContainer);
|
|
|
|
//+-----------------------------------------------------------------------
|
|
//
|
|
//
|
|
// Parameters:
|
|
// Return Values:
|
|
// Error Codes:
|
|
//
|
|
//------------------------------------------------------------------------
|
|
HRESULT WINAPI PvkGetCryptProv( IN HWND hwnd,
|
|
IN LPCWSTR pwszCaption,
|
|
IN LPCWSTR pwszCapiProvider,
|
|
IN DWORD dwProviderType,
|
|
IN LPCWSTR pwszPvkFile,
|
|
IN LPCWSTR pwszKeyContainerName,
|
|
IN DWORD *pdwKeySpec,
|
|
OUT LPWSTR *ppwszTmpContainer,
|
|
OUT HCRYPTPROV *phCryptProv);
|
|
|
|
#ifdef _M_IX86
|
|
BOOL WINAPI CryptAcquireContextU(
|
|
HCRYPTPROV *phProv,
|
|
LPCWSTR lpContainer,
|
|
LPCWSTR lpProvider,
|
|
DWORD dwProvType,
|
|
DWORD dwFlags
|
|
);
|
|
#else
|
|
#define CryptAcquireContextU CryptAcquireContextW
|
|
#endif
|
|
|
|
//+-------------------------------------------------------------------------
|
|
// Private Key helper error codes
|
|
//--------------------------------------------------------------------------
|
|
#define PVK_HELPER_BAD_PARAMETER 0x80097001
|
|
#define PVK_HELPER_BAD_PVK_FILE 0x80097002
|
|
#define PVK_HELPER_WRONG_KEY_TYPE 0x80097003
|
|
#define PVK_HELPER_PASSWORD_CANCEL 0x80097004
|
|
|
|
#ifdef __cplusplus
|
|
} // Balance extern "C" above
|
|
#endif
|
|
|
|
#endif
|