154 lines
6.8 KiB
C
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
|
|
|
|
|