|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1996
//
// File: certtest.h
//
// Contents: Certificate Test Helper API Prototypes and Definitions
//
// History: 11-Apr-96 philh created
//--------------------------------------------------------------------------
#ifndef __CERTTEST_H__
#define __CERTTEST_H__
#ifdef __cplusplus
extern "C" { #endif
#include "wincrypt.h"
#include "mssip.h"
#include "sipbase.h"
#include "softpub.h"
#include "signutil.h"
#define MAX_HASH_LEN 20
//+-------------------------------------------------------------------------
// Error output routines
//--------------------------------------------------------------------------
void PrintError(LPCSTR pszMsg); void PrintLastError(LPCSTR pszMsg);
//+-------------------------------------------------------------------------
// Test allocation and free routines
//--------------------------------------------------------------------------
LPVOID WINAPI TestAlloc( IN size_t cbBytes );
LPVOID WINAPI TestRealloc( IN LPVOID pvOrg, IN size_t cbBytes );
VOID WINAPI TestFree( IN LPVOID pv );
//+-------------------------------------------------------------------------
// Allocate and convert a multi-byte string to a wide string
//--------------------------------------------------------------------------
LPWSTR AllocAndSzToWsz(LPCSTR psz);
//+-------------------------------------------------------------------------
// Useful display functions
//--------------------------------------------------------------------------
LPCSTR FileTimeText(FILETIME *pft); void PrintBytes(LPCSTR pszHdr, BYTE *pb, DWORD cbSize);
//+-------------------------------------------------------------------------
// Allocate and read an encoded DER blob from a file
//--------------------------------------------------------------------------
BOOL ReadDERFromFile( LPCSTR pszFileName, PBYTE *ppbDER, PDWORD pcbDER );
//+-------------------------------------------------------------------------
// Write an encoded DER blob to a file
//--------------------------------------------------------------------------
BOOL WriteDERToFile( LPCSTR pszFileName, PBYTE pbDER, DWORD cbDER );
//+-------------------------------------------------------------------------
// Get the default Crypt Provider. Create the private signature/exchange
// if they don't already exist.
//--------------------------------------------------------------------------
HCRYPTPROV GetCryptProv();
//+-------------------------------------------------------------------------
// Open/Save the specified cert store
//--------------------------------------------------------------------------
HCERTSTORE OpenStore(BOOL fSystemStore, LPCSTR pszStoreFilename); HCERTSTORE OpenStoreEx(BOOL fSystemStore, LPCSTR pszStoreFilename, DWORD dwFlags); // returns NULL if unable to open. Doesn't open memory store as in the above
// 2 versions of OpenStore
HCERTSTORE OpenSystemStoreOrFile(BOOL fSystemStore, LPCSTR pszStoreFilename, DWORD dwFlags); void SaveStore(HCERTSTORE hStore, LPCSTR pszSaveFilename); void SaveStoreEx(HCERTSTORE hStore, BOOL fPKCS7Save, LPCSTR pszSaveFilename);
//+-------------------------------------------------------------------------
// Open the specified cert store or SPC file
//
// No longer supported. The above OpenStore tries opening as
// SPC if unable to open as a store.
//--------------------------------------------------------------------------
HCERTSTORE OpenStoreOrSpc(BOOL fSystemStore, LPCSTR pszStoreFilename, BOOL *pfSpc);
//+-------------------------------------------------------------------------
// Certificate encoding type used by cert test routines.
// The default is X509_ASN_ENCODING;
//--------------------------------------------------------------------------
extern DWORD dwCertEncodingType;
//+-------------------------------------------------------------------------
// Message encoding type used by cert test routines.
// The default is PKCS_7_ASN_ENCODING;
//--------------------------------------------------------------------------
extern DWORD dwMsgEncodingType;
//+-------------------------------------------------------------------------
// Message and certificate encoding type used by cert test routines.
// The default is PKCS_7_ASN_ENCODING | X509_ASN_ENCODING;
//--------------------------------------------------------------------------
extern DWORD dwMsgAndCertEncodingType;
//+-------------------------------------------------------------------------
// Certificate Display definitions and APIs
//--------------------------------------------------------------------------
// Display flags
#define DISPLAY_VERBOSE_FLAG 0x00000001
#define DISPLAY_CHECK_FLAG 0x00000002
#define DISPLAY_BRIEF_FLAG 0x00000004
#define DISPLAY_KEY_THUMB_FLAG 0x00000008
#define DISPLAY_UI_FLAG 0x00000010
#define DISPLAY_NO_ISSUER_FLAG 0x00000100
#define DISPLAY_CHECK_SIGN_FLAG 0x00001000
#define DISPLAY_CHECK_TIME_FLAG 0x00002000
void DisplayVerifyFlags(LPSTR pszHdr, DWORD dwFlags);
void DisplayCert( PCCERT_CONTEXT pCert, DWORD dwDisplayFlags = 0, DWORD dwIssuer = 0 ); void DisplayCert2( HCERTSTORE hStore, // needed when displaying cert from file
PCCERT_CONTEXT pCert, DWORD dwDisplayFlags = 0, DWORD dwIssuer = 0 ); void DisplayCrl( PCCRL_CONTEXT pCrl, DWORD dwDisplayFlags = 0 ); void DisplayCtl( PCCTL_CONTEXT pCtl, DWORD dwDisplayFlags = 0, HCERTSTORE hStore = NULL );
void DisplaySignerInfo( HCRYPTMSG hMsg, DWORD dwSignerIndex = 0, DWORD dwDisplayFlags = 0 );
void DisplayStore( IN HCERTSTORE hStore, IN DWORD dwDisplayFlags = 0 );
// Not displayed when DISPLAY_BRIEF_FLAG is set
void DisplayCertKeyProvInfo( PCCERT_CONTEXT pCert, DWORD dwDisplayFlags = 0 );
void PrintCrlEntries( DWORD cEntry, PCRL_ENTRY pEntry, DWORD dwDisplayFlags = 0 );
//+-------------------------------------------------------------------------
// Returns TRUE if the CTL is still time valid.
//
// A CTL without a NextUpdate is considered time valid.
//--------------------------------------------------------------------------
BOOL IsTimeValidCtl( IN PCCTL_CONTEXT pCtl );
//+-------------------------------------------------------------------------
// Display structures used in Software Publishing Certificate (SPC)
//--------------------------------------------------------------------------
void DisplaySpcLink(PSPC_LINK pSpcLink);
//+-------------------------------------------------------------------------
// Returns OID's name string. If not found returns L"???".
//--------------------------------------------------------------------------
LPCWSTR GetOIDName(LPCSTR pszOID, DWORD dwGroupId = 0);
//+-------------------------------------------------------------------------
// Returns OID's Algid. If not found returns 0.
//--------------------------------------------------------------------------
ALG_ID GetAlgid(LPCSTR pszOID, DWORD dwGroupId = 0);
#ifdef __cplusplus
} // Balance extern "C" above
#endif
#endif
|