windows-nt/Source/XPSP1/NT/ds/security/cryptoapi/ui/wizards/signpvk.h
2020-09-26 16:20:57 +08:00

154 lines
6.8 KiB
C

//--------------------------------------------------------------
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: signpvk.h
//
// Contents: The private include file for signing.cpp.
//
// History: 01-12-1997 xiaohs created
//
//--------------------------------------------------------------
#ifndef SIGNPVK_H
#define SIGNPVK_H
#ifdef __cplusplus
extern "C" {
#endif
#define HASH_ALG_COUNT 2
#define SIGN_PVK_NO_CHAIN 1
#define SIGN_PVK_CHAIN_ROOT 2
#define SIGN_PVK_CHAIN_NO_ROOT 3
#define SIGN_PVK_NO_ADD 1
#define SIGN_PVK_ADD_FILE 2
#define SIGN_PVK_ADD_STORE 3
#define CSP_TYPE_NAME 200
#define MAX_CONTAINER_NAME 1000
#define MAX_ALG_NAME 1000
#define MAX_KEY_TYPE_NAME 100
typedef struct _CSP_INFO
{
DWORD dwCSPType;
LPWSTR pwszCSPName;
}CSP_INFO;
//-----------------------------------------------------------------------
// The struct to define the list of all stores
//
//-----------------------------------------------------------------------
typedef struct _SIGN_CERT_STORE_LIST
{
DWORD dwStoreCount;
HCERTSTORE *prgStore;
}SIGN_CERT_STORE_LIST;
//-----------------------------------------------------------------------
// CERT_SIGNING_INFO
//
//
// This struct contains everything you will ever need to signing
// a file. This struct is private to the dll
//------------------------------------------------------------------------
typedef struct _CERT_SIGNING_INFO
{
UINT idsText; //output parameter
DWORD dwFlags; //dwFlags from the API
UINT idsMsgTitle; //the IDS for the message box title
HFONT hBigBold;
HFONT hBold;
BOOL fFree; //Whether to free the struct
BOOL fCancel; //Whether user has cliked on the cancel button
BOOL fUseOption; //Whether user has requested the all signing option
BOOL fCustom; //if fOption is true, whether or not use has chosen the custon option
LPSTR pszHashOIDName; //the hash OID name that user has selected
DWORD dwCSPCount; //the count of CSPs from the numeration
CSP_INFO *pCSPInfo; //the array of CSPs from the numeration
BOOL fUsePvkPage; //whether the user has enter information in the PVK page
BOOL fPvkFile; //whether to use the PVK file
LPWSTR pwszPvk_File; //the pvk file name
LPWSTR pwszPvk_CSP; //the csp name
DWORD dwPvk_CSPType; //the csp type
LPWSTR pwszContainer_CSP; //the csp name
DWORD dwContainer_CSPType; //the csp type
LPWSTR pwszContainer_Name; //container name
DWORD dwContainer_KeyType; //key spec
LPWSTR pwszContainer_KeyType; //key spec name
BOOL fUsageChain; //whether we have obtained user input from the page
DWORD dwChainOption; //the chain options
DWORD dwAddOption; //the add certificate options
HCERTSTORE hAddStoreCertStore; //The additional certificate (from store) to add in the signature
BOOL fFreeStoreCertStore; //whether to free the hAddStoreCertStore
HCERTSTORE hAddFileCertStore; //The additional certificate (from file) to add in the signature
LPWSTR pwszAddFileName; //The file name of the additional certificate file
BOOL fUseDescription; //Whether we have obtained the descrition information from the user
LPWSTR pwszDes; //the content description
LPWSTR pwszURL; //the content URL
BOOL fUsageTimeStamp; //Whether we have obtained the timestamp information from the user
LPWSTR pwszTimeStamp; //The timestamp address
BOOL fUseSignCert; //whether user has entered the information through the signing cert page
BOOL fSignCert; //whether user has selected the signing cert, or the SPC file
LPWSTR pwszSPCFileName; //The SPC file name that inclues the signing cert
PCCERT_CONTEXT pSignCert; //The signing certificate
DWORD dwCertStore; //the count the certificate store for the signing cert
HCERTSTORE *rghCertStore; //The certificate store from which the siging cert is selected
LPWSTR pwszFileName; //The file name to be signed
HCERTSTORE hMyStore; //the signing certificate store
BOOL fRefreshPvkOnCert; //whether to refill the private key information when SIGN_PVK page is shown
}CERT_SIGNING_INFO;
BOOL I_SigningWizard(PCRYPTUI_WIZ_GET_SIGN_PAGE_INFO pSignGetPageInfo);
BOOL GetProviderTypeName(DWORD dwCSPType, LPWSTR wszName);
BOOL SelectComboName(HWND hwndDlg,
int idControl,
LPWSTR pwszName);
BOOL RefreshCSPType(HWND hwndDlg,
int idsCSPTypeControl,
int idsCSPNameControl,
CERT_SIGNING_INFO *pPvkSignInfo);
void SetSelectPvkFile(HWND hwndDlg);
void SetSelectKeyContainer(HWND hwndDlg);
BOOL InitPvkWithPvkInfo(HWND hwndDlg,
CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO *pPvkFileInfo,
CERT_SIGNING_INFO *pPvkSignInfo);
BOOL RefreshContainer(HWND hwndDlg,
int idsContainerControl,
int idsCSPNameControl,
CERT_SIGNING_INFO *pPvkSignInfo);
DWORD GetKeyTypeFromName(LPWSTR pwszKeyTypeName);
BOOL RefreshKeyType(HWND hwndDlg,
int idsKeyTypeControl,
int idsContainerControl,
int idsCSPNameControl,
CERT_SIGNING_INFO *pPvkSignInfo);
#ifdef __cplusplus
} // Balance extern "C" above
#endif
#endif //SIGNPVK_H