You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
606 lines
17 KiB
606 lines
17 KiB
//--------------------------------------------------------------
|
|
// Copyright (C) Microsoft Corporation, 1996 - 1997
|
|
//
|
|
// File: private.h
|
|
//
|
|
// Contents: The private include file for cryptext.dll.
|
|
//
|
|
// History: May-13-1999 xiaohs Created
|
|
//
|
|
//--------------------------------------------------------------
|
|
#ifndef CEP_PRIVATE_H
|
|
#define CEP_PRIVATE_H
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#define GET_TAG_OP "operation="
|
|
#define GET_TAG_MSG "&message="
|
|
#define GET_OP_CA "GetCACert"
|
|
#define GET_OP_PKI "PKIOperation"
|
|
#define CONTENT_TYPE_CA_RA "application/x-x509-ca-ra-cert"
|
|
#define CONTENT_TYPE_PKI "application/x-pki-message"
|
|
#define CONTENT_TYPE_HTML "text/html"
|
|
|
|
#define ACCESS_MESSAGE "401 You do not have permission to enroll for an IPSEC intermediate offline certificate template for SCEP"
|
|
|
|
#define OPERATION_GET_CACERT 1
|
|
#define OPERATION_GET_PKI 2
|
|
|
|
#define MESSAGE_TYPE_CERT_RESPONSE 3
|
|
#define MESSAGE_TYPE_CERT_REQUEST 19
|
|
#define MESSAGE_TYPE_GET_CERT_INITIAL 20
|
|
#define MESSAGE_TYPE_GET_CERT 21
|
|
#define MESSAGE_TYPE_GET_CRL 22
|
|
|
|
|
|
#define MESSAGE_STATUS_SUCCESS 0
|
|
#define MESSAGE_STATUS_FAILURE 2
|
|
#define MESSAGE_STATUS_PENDING 3
|
|
|
|
|
|
#define MESSAGE_FAILURE_BAD_ALG_ID 0
|
|
#define MESSAGE_FAILURE_BAD_MESSAGE_CHECK 1
|
|
#define MESSAGE_FAILURE_BAD_REQUEST 2
|
|
#define MESSAGE_FAILURE_BAD_TIME 3
|
|
#define MESSAGE_FAILURE_BAD_CERT_ID 4
|
|
|
|
#define CEP_CONTEXT_CERT 1
|
|
#define CEP_CONTEXT_CRL 2
|
|
|
|
|
|
//together we should have 6 attributes: TransactionID, MessageType, PkiStatus,
|
|
//ErrorInfo, senderNonce, and recipientNonce
|
|
#define CEP_RESPONSE_AUTH_ATTR_COUNT 6
|
|
|
|
#define szOIDVerisign_MessageType "2.16.840.1.113733.1.9.2"
|
|
#define szOIDVerisign_PkiStatus "2.16.840.1.113733.1.9.3"
|
|
#define szOIDVerisign_FailInfo "2.16.840.1.113733.1.9.4"
|
|
#define szOIDVerisign_SenderNonce "2.16.840.1.113733.1.9.5"
|
|
#define szOIDVerisign_RecipientNonce "2.16.840.1.113733.1.9.6"
|
|
#define szOIDVerisign_TransactionID "2.16.840.1.113733.1.9.7"
|
|
|
|
|
|
|
|
#define MAX_STRING_SIZE 512
|
|
#define PENDING_ALLOC_SIZE 20
|
|
|
|
#define FILETIME_TICKS_PER_SECOND 10000000
|
|
#define OVERLAP_TWO_WEEKS 60*60*24*14
|
|
#define OVERLAP_ONE_HOUR 60*60*1
|
|
|
|
|
|
#define CEP_REQUEST_SIGNATURE 0x01
|
|
#define CEP_REQUEST_EXCHANGE 0x02
|
|
|
|
#define CEP_TEMPLATE_ATTR L"CertificateTemplate:"
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Externs
|
|
//
|
|
//------------------------------------------------------------------------
|
|
extern CRITICAL_SECTION CriticalSec;
|
|
extern CRITICAL_SECTION PasswordCriticalSec;
|
|
|
|
//need for the web page display
|
|
extern DWORD g_dwPasswordValidity;
|
|
|
|
//needed for the pending retrieval table
|
|
extern DWORD g_dwRequestDuration;
|
|
|
|
extern LPWSTR g_pwszComputerName;
|
|
|
|
//**************************************************************************
|
|
//
|
|
// The defines for the transactionID and requestID mapping table
|
|
//
|
|
struct _CEP_TIME_ENTRY;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_HASH_ENTRY
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_HASH_ENTRY
|
|
{
|
|
LPSTR pszTransactionID;
|
|
DWORD dwRequestID;
|
|
BOOL fFinished;
|
|
_CEP_TIME_ENTRY *pTimeEntry;
|
|
_CEP_HASH_ENTRY *pNext;
|
|
_CEP_HASH_ENTRY *pPrevious;
|
|
}CEP_HASH_ENTRY;
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_TIME_ENTRY
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_TIME_ENTRY
|
|
{
|
|
FILETIME TimeStamp;
|
|
CEP_HASH_ENTRY *pHashEntry;
|
|
_CEP_TIME_ENTRY *pNext;
|
|
_CEP_TIME_ENTRY *pPrevious;
|
|
}CEP_TIME_ENTRY;
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_HASH_TABLE_INFO
|
|
//
|
|
//------------------------------------------------------------------------
|
|
//we hash based on the 1st byte
|
|
#define CEP_HASH_TABLE_SIZE 256
|
|
#define CEP_REFRESH_DAY 7
|
|
|
|
typedef struct _CEP_HASH_TABLE_INFO
|
|
{
|
|
CEP_HASH_ENTRY *rgHashEntry[CEP_HASH_TABLE_SIZE]; //the hash table
|
|
CEP_TIME_ENTRY *pTimeOld; //the list of hash entry with its timestamp
|
|
CEP_TIME_ENTRY *pTimeNew;
|
|
}CEP_HASH_TABLE_INFO;
|
|
|
|
|
|
|
|
|
|
//**************************************************************************
|
|
//
|
|
// The defines for the password hash table
|
|
//
|
|
//-----------------------------------------------------------------------
|
|
// CEP_PASSWORD_TABLE
|
|
//
|
|
//------------------------------------------------------------------------
|
|
#define CEP_PASSWORD_LENGTH 8
|
|
#define CEP_MAX_PASSWORD 1000
|
|
#define CEP_PASSWORD_VALIDITY 60 //in minutes
|
|
|
|
#define UPPER_BITS 0xF0
|
|
#define LOWER_BITS 0x0F
|
|
|
|
|
|
struct _CEP_PASSWORD_VALIDITY_ENTRY;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_PASSWORD_ENTRY
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_PASSWORD_ENTRY
|
|
{
|
|
LPWSTR pwszPassword;
|
|
DWORD dwUsageRequested;
|
|
_CEP_PASSWORD_VALIDITY_ENTRY *pValidityEntry;
|
|
_CEP_PASSWORD_ENTRY *pNext;
|
|
_CEP_PASSWORD_ENTRY *pPrevious;
|
|
}CEP_PASSWORD_ENTRY;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_PASSWORD_VALIDITY_ENTRY
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_PASSWORD_VALIDITY_ENTRY
|
|
{
|
|
FILETIME TimeStamp;
|
|
CEP_PASSWORD_ENTRY *pPasswordEntry;
|
|
_CEP_PASSWORD_VALIDITY_ENTRY *pNext;
|
|
_CEP_PASSWORD_VALIDITY_ENTRY *pPrevious;
|
|
}CEP_PASSWORD_VALIDITY_ENTRY;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_PASSWORD_TABLE_INFO
|
|
//
|
|
//------------------------------------------------------------------------
|
|
|
|
typedef struct _CEP_PASSWORD_TABLE_INFO
|
|
{
|
|
CEP_PASSWORD_ENTRY *rgPasswordEntry[CEP_HASH_TABLE_SIZE]; //the hash table
|
|
CEP_PASSWORD_VALIDITY_ENTRY *pTimeOld; //the list of hash entry with its timestamp
|
|
CEP_PASSWORD_VALIDITY_ENTRY *pTimeNew;
|
|
}CEP_PASSWORD_TABLE_INFO;
|
|
|
|
|
|
//**************************************************************************
|
|
//
|
|
// The defines for the request hash table
|
|
//
|
|
|
|
//**************************************************************************
|
|
#define CEP_MD5_HASH_SIZE 16
|
|
#define CEP_REQUEST_DURATION 20
|
|
|
|
struct _CEP_REQUEST_VALIDITY_ENTRY;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_REQUEST_ENTRY
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_REQUEST_ENTRY
|
|
{
|
|
BYTE pbHash[CEP_MD5_HASH_SIZE];
|
|
DWORD dwRequestID;
|
|
_CEP_REQUEST_VALIDITY_ENTRY *pValidityEntry;
|
|
_CEP_REQUEST_ENTRY *pNext;
|
|
_CEP_REQUEST_ENTRY *pPrevious;
|
|
}CEP_REQUEST_ENTRY;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_REQUEST_VALIDITY_ENTRY
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_REQUEST_VALIDITY_ENTRY
|
|
{
|
|
FILETIME TimeStamp;
|
|
CEP_REQUEST_ENTRY *pRequestEntry;
|
|
_CEP_REQUEST_VALIDITY_ENTRY *pNext;
|
|
_CEP_REQUEST_VALIDITY_ENTRY *pPrevious;
|
|
}CEP_REQUEST_VALIDITY_ENTRY;
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_REQUEST_TABLE_INFO
|
|
//
|
|
//------------------------------------------------------------------------
|
|
|
|
typedef struct _CEP_REQUEST_TABLE_INFO
|
|
{
|
|
CEP_REQUEST_ENTRY *rgRequestEntry[CEP_HASH_TABLE_SIZE]; //the hash table
|
|
CEP_REQUEST_VALIDITY_ENTRY *pTimeOld; //the list of hash entry with its timestamp
|
|
CEP_REQUEST_VALIDITY_ENTRY *pTimeNew;
|
|
}CEP_REQUEST_TABLE_INFO;
|
|
|
|
|
|
//
|
|
// The defines for CA and RA message
|
|
//
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_CA_INFO
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_CA_INFO
|
|
{
|
|
BSTR bstrCAMachine;
|
|
BSTR bstrCAName;
|
|
BSTR bstrCAConfig;
|
|
BSTR bstrDSName;
|
|
LPWSTR pwszCAHash;
|
|
HCRYPTPROV hProv;
|
|
BOOL fEnterpriseCA;
|
|
ICertRequest *pICertRequest;
|
|
LPWSTR pwszTemplateSig;
|
|
LPWSTR pwszTemplateEnt;
|
|
}CEP_CA_INFO;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_RA_INFO
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_RA_INFO
|
|
{
|
|
HCRYPTPROV hRAProv;
|
|
DWORD dwKeySpec;
|
|
PCCERT_CONTEXT pRACert;
|
|
PCCERT_CONTEXT pRASign;
|
|
BOOL fFree;
|
|
HCRYPTPROV hSignProv;
|
|
DWORD dwSignKeySpec;
|
|
BOOL fSignFree;
|
|
DWORD dwRefreshDays;
|
|
BOOL fPassword;
|
|
}CEP_RA_INFO;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// CEP_MESSAGE_INFO
|
|
//
|
|
//------------------------------------------------------------------------
|
|
typedef struct _CEP_MESSAGE_INFO
|
|
{
|
|
CERT_BLOB TransactionID; //internally a string
|
|
DWORD dwMessageType;
|
|
DWORD dwStatus;
|
|
DWORD dwErrorInfo;
|
|
CERT_BLOB SenderNonce;
|
|
CERT_BLOB RecipientNonce;
|
|
CERT_BLOB SerialNumber;
|
|
PCCERT_CONTEXT pSigningCert;
|
|
}CEP_MESSAGE_INFO;
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
//
|
|
// Function prototypes
|
|
//
|
|
//------------------------------------------------------------------------
|
|
BOOL WINAPI InitRequestTable();
|
|
|
|
BOOL WINAPI ReleaseRequestTable();
|
|
|
|
BOOL WINAPI CEPRequestRetrieveRequestIDFromHash(BYTE *pbHash,
|
|
DWORD *pdwRequestID);
|
|
|
|
BOOL WINAPI CEPRequestAddHashAndRequestID(BYTE *pbHash,
|
|
DWORD dwRequestID);
|
|
|
|
BOOL WINAPI InitPasswordTable();
|
|
|
|
BOOL WINAPI ReleasePasswordTable();
|
|
|
|
BOOL WINAPI CEPAddPasswordToTable(LPWSTR pwszPassword);
|
|
|
|
BOOL WINAPI CEPVerifyPasswordAndDeleteFromTable(LPWSTR pwszPassword, DWORD dwUsage);
|
|
|
|
BOOL InitHashTable();
|
|
|
|
BOOL ReleaseHashTable();
|
|
|
|
BOOL GetRAInfo(CEP_RA_INFO *pRAInfo);
|
|
|
|
BOOL GetCACertFromInfo(CEP_CA_INFO *pCAInfo, HCERTSTORE *pHCACertStore);
|
|
|
|
BOOL InitCAInformation(CEP_CA_INFO *pCAInfo);
|
|
|
|
BOOL FreeCAInformation(CEP_CA_INFO *pCAInfo);
|
|
|
|
BOOL FreeRAInformation(CEP_RA_INFO *pRAInfo);
|
|
|
|
LPSTR GetTagValue(LPSTR szString, LPSTR szTag);
|
|
|
|
BOOL OperationGetCACert(HCERTSTORE hCACertStore,
|
|
LPSTR szMsg,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
BOOL OperationGetPKI( CEP_RA_INFO *pRAInfo,
|
|
CEP_CA_INFO *pCAInfo,
|
|
LPSTR szMsg,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
BOOL WINAPI GetSerialNumberFromBlob(BYTE *pbEncoded,
|
|
DWORD cbEncoded,
|
|
CRYPT_INTEGER_BLOB *pSerialNumber);
|
|
|
|
BOOL GetReturnInfoAndContent(CEP_RA_INFO *pRAInfo,
|
|
CEP_CA_INFO *pCAInfo,
|
|
LPSTR szMsg,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData,
|
|
CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
BOOL WINAPI DecryptMsg(CEP_RA_INFO *pRAInfo,
|
|
BYTE *pbReqEnv,
|
|
DWORD cbReqEnv,
|
|
BYTE **ppbReqDecrypt,
|
|
DWORD *pcbReqDecrypt);
|
|
|
|
|
|
|
|
BOOL WINAPI GetContentFromPKCS7(BYTE *pbMessage,
|
|
DWORD cbMessage,
|
|
BYTE **ppbContent,
|
|
DWORD *pbContent,
|
|
CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
void WINAPI FreeMessageInfo(CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
|
|
BOOL WINAPI AllocAndCopyBlob(CERT_BLOB *pDestBlob,
|
|
CERT_BLOB *pSrcBlob);
|
|
|
|
|
|
BOOL WINAPI CEPAllocAndDecode( LPCSTR lpszStructType,
|
|
BYTE *pbEncoded,
|
|
DWORD cbEncoded,
|
|
void **ppb,
|
|
DWORD *pcb);
|
|
|
|
BOOL WINAPI CEPRetrievePasswordFromRequest(BYTE *pbRequest,
|
|
DWORD cbRequest,
|
|
LPWSTR *ppwszPassword,
|
|
DWORD *pdwUsage);
|
|
|
|
BOOL WINAPI AltNameExist(BYTE *pbRequest, DWORD cbRequest);
|
|
|
|
BOOL WINAPI SameCert(CERT_INFO *pCertInfoOne, CERT_INFO *pCertInfoTwo);
|
|
|
|
BOOL WINAPI SameBlob(CRYPT_INTEGER_BLOB *pBlobOne, CRYPT_INTEGER_BLOB *pBlobTwo);
|
|
|
|
BOOL EnvelopData(PCCERT_CONTEXT pSigningCert,
|
|
BYTE *pbContent,
|
|
DWORD cbContent,
|
|
BYTE **ppbEnvelop,
|
|
DWORD *pcbEnvelop);
|
|
|
|
BOOL CEPHashGetRequestID( DWORD dwRefreshDays,
|
|
CERT_BLOB *pTrasactionID,
|
|
DWORD *pdwRequestID);
|
|
|
|
BOOL CEPHashMarkTransactionFinished(DWORD dwRequestID, CERT_BLOB *pTransactionID);
|
|
|
|
BOOL CEPHashAddRequestAndTransaction(DWORD dwRefreshDays,
|
|
DWORD dwRequestID,
|
|
CERT_BLOB *pTransactionID);
|
|
|
|
BOOL CEPHashIsCurrentTimeEntry(FILETIME *pTimeStamp, DWORD dwRefreshDays, DWORD dwMinutes);
|
|
|
|
|
|
BOOL WINAPI ProcessGetCRL(CEP_CA_INFO *pCAInfo,
|
|
BYTE *pbRequest,
|
|
DWORD cbRequest,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData,
|
|
CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
BOOL WINAPI ProcessGetCert(CEP_CA_INFO *pCAInfo,
|
|
BYTE *pbRequest,
|
|
DWORD cbRequest,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData,
|
|
CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
BOOL ProcessCertInitial( DWORD dwRefreshDays,
|
|
CEP_CA_INFO *pCAInfo,
|
|
BYTE *pbRequest,
|
|
DWORD cbRequest,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData,
|
|
CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
BOOL ProcessCertRequest( DWORD dwRefreshDays,
|
|
BOOL fPassword,
|
|
PCCERT_CONTEXT pRAEncrypt,
|
|
PCCERT_CONTEXT pRACert,
|
|
CEP_CA_INFO *pCAInfo,
|
|
BYTE *pbRequest,
|
|
DWORD cbRequest,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData,
|
|
CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
|
|
|
|
BOOL PackageBlobToPKCS7(DWORD dwCEP_Context,
|
|
BYTE *pbEncoded,
|
|
DWORD cbEncoded,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
|
|
BOOL GenerateSenderNonce(CRYPT_INTEGER_BLOB *pBlob);
|
|
|
|
BOOL SignData(CEP_MESSAGE_INFO *pMsgInfo,
|
|
CEP_RA_INFO *pRAInfo,
|
|
BYTE *pbEnvelop,
|
|
DWORD cbEnvelop,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
BOOL CEPAllocAndEncodeName(DWORD dwValueType,
|
|
BYTE *pbData,
|
|
DWORD cbData,
|
|
BYTE **ppbEncoded,
|
|
DWORD *pcbEncoded);
|
|
|
|
|
|
BOOL CEPAllocAndEncodeDword(DWORD dwValueType,
|
|
DWORD dwData,
|
|
BYTE **ppbEncoded,
|
|
DWORD *pcbEncoded);
|
|
|
|
|
|
BOOL WINAPI CEPAllocAndEncode(LPCSTR lpszStructType,
|
|
void *pStructInfo,
|
|
BYTE **ppbEncoded,
|
|
DWORD *pcbEncoded);
|
|
|
|
|
|
BOOL WINAPI AddAltNameInRequest(PCCERT_CONTEXT pRACert,
|
|
BYTE *pb10,
|
|
DWORD cb10,
|
|
LPWSTR pwszDNS,
|
|
CRYPT_DATA_BLOB *pIPAddress,
|
|
BYTE **ppb7,
|
|
DWORD *pcb7);
|
|
|
|
BOOL WINAPI CreateAltNameExtenions(LPWSTR pwszDNS,
|
|
CRYPT_DATA_BLOB *pIPAddress,
|
|
BYTE **pbExt,
|
|
DWORD *pcbExt);
|
|
|
|
BOOL WINAPI GetAltNameElement(BYTE *pb10,
|
|
DWORD cb10,
|
|
LPWSTR *ppwszDNS,
|
|
CRYPT_DATA_BLOB *pIPAddress);
|
|
|
|
BOOL ConvertIPStringToBinary(LPWSTR pwszIP,
|
|
CRYPT_DATA_BLOB *pIPAddress);
|
|
|
|
BOOL WINAPI AllocAndCopyString(CERT_BLOB *pDestBlob,
|
|
LPSTR psz);
|
|
|
|
BOOL WINAPI RetrieveContextFromSerialNumber(CEP_CA_INFO *pCAInfo,
|
|
CERT_BLOB *pSerialNumber,
|
|
PCCERT_CONTEXT *ppCertContext);
|
|
|
|
BOOL WINAPI GetConfigInfo(DWORD *pdwRefreshDays, BOOL *pfPassword);
|
|
|
|
BOOL CEPGetTokenFromPKCS10(BOOL fPassword,
|
|
PCCERT_CONTEXT pRAEncrypt,
|
|
BYTE *pbRequest,
|
|
DWORD cbRequest,
|
|
HANDLE *phToken);
|
|
|
|
BOOL GetLogonInfoFromValue(PCCERT_CONTEXT pRAEncrypt,
|
|
LPWSTR pwszString,
|
|
LPWSTR *ppwszDomain,
|
|
LPWSTR *ppwszUser,
|
|
LPWSTR *ppwszPassword);
|
|
|
|
BOOL CEPDecryptPassword(PCCERT_CONTEXT pRAEncrypt,
|
|
LPWSTR pwszEncrypt,
|
|
LPWSTR *ppwszDecrypt);
|
|
|
|
|
|
BOOL WINAPI IsAnonymousAccess(EXTENSION_CONTROL_BLOCK *pECB);
|
|
|
|
HRESULT WINAPI CheckACLOnCertTemplate(BOOL fSelf, LPWSTR pwszCAName, LPWSTR pwszCertType);
|
|
|
|
BOOL WINAPI OperationDisplayAccessHTML(BYTE **ppbData, DWORD *pcbData);
|
|
|
|
BOOL WINAPI OperationGetDisplayInfoForCEP(LPWSTR pwszCAHash,
|
|
HCRYPTPROV hProv,
|
|
BOOL fPassword,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
BOOL WINAPI LoadIDToTemplate(UINT idsMsg,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
BOOL WINAPI LoadWZToTemplate(LPWSTR pwsz,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
|
|
BOOL WINAPI FormatMessageUnicode(LPWSTR *ppwszFormat,UINT ids,...);
|
|
|
|
BOOL WINAPI CopyWZToBuffer( LPWSTR pwszData,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
BOOL WINAPI LoadIDAndHRToTempalte(UINT idsMsg,
|
|
HRESULT hr,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData);
|
|
|
|
BOOL WINAPI ConvertByteToWstr(BYTE *pbData,
|
|
DWORD cbData,
|
|
LPWSTR *ppwsz,
|
|
BOOL fSpace);
|
|
|
|
BOOL WINAPI CEPGetCertFromPKCS10(CEP_CA_INFO *pCAInfo,
|
|
BYTE *pbRequest,
|
|
DWORD cbRequest,
|
|
BYTE **ppbData,
|
|
DWORD *pcbData,
|
|
CEP_MESSAGE_INFO *pMsgInfo);
|
|
|
|
void WINAPI LogSCEPEvent(IN DWORD dwLogLevel,
|
|
IN BOOL fError,
|
|
IN HRESULT hr,
|
|
IN DWORD dwEventId,
|
|
IN DWORD dwParamCount,
|
|
...
|
|
);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} // Balance extern "C" above
|
|
#endif
|
|
|
|
|
|
#endif //CEP_PRIVATE_H
|