WindowsXP-SP1/inetcore/outlookexpress/cryptdlg/internal.h
2020-09-30 16:53:49 +02:00

208 lines
7.3 KiB
C++

#include "richedit.h"
//////////////////////////////////////////////////////////
#ifdef MAC
#define wszCRLF L"\n\r"
#define szCRLF "\n\r"
#define wchCR L'\n'
#define wchLF L'\r'
#define chCR '\n'
#define chLF '\r'
#else // !MAC
#ifndef WIN16
#define wszCRLF L"\r\n"
#define szCRLF "\r\n"
#define wchCR L'\r'
#define wchLF L'\n'
#define chCR '\r'
#define chLF '\n'
#else
#define wszCRLF "\r\n"
#define szCRLF "\r\n"
#define wchCR '\r'
#define wchLF '\n'
#define chCR '\r'
#define chLF '\n'
#endif // !WIN16
#endif // MAC
#ifndef MAC
BOOL IsWin95(void);
#endif // !MAC
extern BOOL FIsWin95;
#ifndef WIN16
#undef SetWindowLong
#define SetWindowLong SetWindowLongA
#undef GetWindowLong
#define GetWindowLong GetWindowLongA
#undef SetWindowLongPtr
#define SetWindowLongPtr SetWindowLongPtrA
#undef GetWindowLongPtr
#define GetWindowLongPtr GetWindowLongPtrA
#undef SendMessage
#define SendMessage SendMessageA
#else // WIN16
#define TEXTMETRICA TEXTMETRIC
#define TEXTRANGEA TEXTRANGE
#define CHARFORMATA CHARFORMAT
#define PROPSHEETHEADERA PROPSHEETHEADER
#define PROPSHEETPAGEA PROPSHEETPAGE
#define TVN_SELCHANGEDA TVN_SELCHANGED
#define TVM_SETITEMA TVM_SETITEM
#define TVM_GETITEMA TVM_GETITEM
#define GetTextExtentPointA GetTextExtentPoint
#define SetDlgItemTextA SetDlgItemText
#define GetTextMetricsA GetTextMetrics
#define SendDlgItemMessageA SendDlgItemMessage
#define LoadBitmapA LoadBitmap
#define PropertySheetA PropertySheet
#define WinHelpA WinHelp
#endif // !WIN16
LRESULT MySendDlgItemMessageW(HWND hwnd, int id, UINT msg, WPARAM w, LPARAM l);
BOOL MySetDlgItemTextW(HWND hwnd, int id, LPCWSTR pwsz);
UINT MyGetDlgItemTextW(HWND hwnd, int id, LPWSTR pwsz, int nMax);
DWORD MyFormatMessageW(DWORD dwFlags, LPCVOID pbSource, DWORD dwMessageId,
DWORD dwLangId, LPWSTR lpBuffer, DWORD nSize,
va_list * args);
int MyLoadStringW(HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int cbBuffer);
#ifndef WIN16
BOOL MyCryptAcquireContextW(HCRYPTPROV * phProv, LPCWSTR pszContainer,
LPCWSTR pszProvider, DWORD dwProvType, DWORD dwFlags);
#else
BOOL WINAPI MyCryptAcquireContextW(HCRYPTPROV * phProv, LPCWSTR pszContainer,
LPCWSTR pszProvider, DWORD dwProvType, DWORD dwFlags);
#endif // !WIN16
BOOL MyWinHelpW(HWND hWndMain, LPCWSTR szHelp,UINT uCommand, ULONG_PTR dwData);
DWORD TruncateToWindowA(HWND hwndDlg, int id, LPSTR psz);
DWORD TruncateToWindowW(HWND hwndDlg, int id, LPWSTR pwsz);
BOOL FinePrint(PCCERT_CONTEXT pccert, HWND hwndParent);
//
// Formatting algorithms for the common dialogs
//
BOOL FormatAlgorithm(HWND /*hwnd*/, UINT /*id*/, PCCERT_CONTEXT /*pccert*/);
BOOL FormatBinary(HWND hwnd, UINT id, LPBYTE pb, DWORD cb);
BOOL FormatCPS(HWND hwnd, UINT id, PCCERT_CONTEXT pccert);
BOOL FormatDate(HWND hwnd, UINT id, FILETIME ft);
BOOL FormatIssuer(HWND hwnd, UINT id, PCCERT_CONTEXT pccert,
DWORD dwFlags = CERT_SIMPLE_NAME_STR);
BOOL FormatSerialNo(HWND hwnd, UINT id, PCCERT_CONTEXT pccert);
BOOL FormatSubject(HWND hwnd, UINT id, PCCERT_CONTEXT pccert,
DWORD dwFlags = CERT_SIMPLE_NAME_STR);
BOOL FormatThumbprint(HWND hwnd, UINT id, PCCERT_CONTEXT pccert);
BOOL FormatValidity(HWND hwnd, UINT id, PCCERT_CONTEXT pccert);
//
// These routines extract and pretty print fields in the certs. The
// routines use crt to allocate and return a buffer
//
LPWSTR PrettySubject(PCCERT_CONTEXT pccert);
LPWSTR PrettyIssuer(PCCERT_CONTEXT pccert);
LPWSTR PrettySubjectIssuer(PCCERT_CONTEXT pccert);
//
LPWSTR FindURL(PCCERT_CONTEXT pccert);
BOOL LoadStringInWindow(HWND hwnd, UINT id, HMODULE hmod, UINT id2);
BOOL LoadStringsInWindow(HWND hwnd, UINT id, HMODULE hmod, UINT *pidStrings);
//
typedef struct {
DWORD dw1;
DWORD dw2;
} HELPMAP;
BOOL OnContextHelp(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
HELPMAP const * rgCtxMap);
VOID RecognizeURLs(HWND hwndRE);
#ifdef MAC
EXTERN_C BOOL FNoteDlgNotifyLink(HWND hwndDlg, ENLINK * penlink, LPSTR szURL);
#else // !MAC
BOOL FNoteDlgNotifyLink(HWND hwndDlg, ENLINK * penlink, LPSTR szURL);
#endif // MAC
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
const MaxCertificateParents = 5;
extern const GUID GuidCertValidate;
LPWSTR FormatValidityFailures(DWORD);
typedef struct {
#ifndef NT5BUILD
LPSTR szOid;
#endif // !NT5BUILD
DWORD fRootStore:1;
DWORD fExplicitTrust:1; // This item is explicity Trusted
DWORD fExplicitDistrust:1; // This item is explicity Distructed
DWORD fTrust:1; // Ancestor is explicity Trusted
DWORD fDistrust:1; // Ancestor is explicity Distrusted
DWORD fError:1;
DWORD newTrust:2; // 0 - not modified
// 1 - now explicit Distrust
// 2 - now inherit
// 3 - now explicit trust
DWORD cbTrustData;
LPBYTE pbTrustData;
} STrustDesc;
typedef class CCertFrame * PCCertFrame;
class CCertFrame {
public:
CCertFrame(PCCERT_CONTEXT pccert);
~CCertFrame(void);
int m_fSelfSign:1; // Is Cert self signed?
int m_fRootStore:1; // Cert can from a root store
int m_fLeaf:1; // Leaf Cert
int m_fExpired:1; // Cert has expired
PCCERT_CONTEXT m_pccert; // Certificate in this frame
PCCertFrame m_pcfNext; //
DWORD m_dwFlags; // Flags from GetIssuer
int m_cParents; // Count of parents
PCCertFrame m_rgpcfParents[MaxCertificateParents]; // Assume there are
// a limited number of parents
// to list
int m_cTrust; // size of array trust
STrustDesc * m_rgTrust; // Array of trust
};
HRESULT HrDoTrustWork(PCCERT_CONTEXT pccertToCheck, DWORD dwControl,
DWORD dwValidityMask,
DWORD cPurposes, LPSTR * rgszPurposes, HCRYPTPROV,
DWORD cRoots, HCERTSTORE * rgRoots,
DWORD cCAs, HCERTSTORE * rgCAs,
DWORD cTrust, HCERTSTORE * rgTrust,
PFNTRUSTHELPER pfn, DWORD lCustData,
PCCertFrame * ppcfRoot, DWORD * pcNodes,
PCCertFrame * rgpcfResult,
HANDLE * phReturnStateData); // optional: return WinVerifyTrust state handle here
void FreeWVTHandle(HANDLE hWVTState);
BOOL FModifyTrust(HWND hwnd, PCCERT_CONTEXT pccert, DWORD dwNewTrust,
LPSTR szPurpose);
//////////////////////////////////////////////////////
LPVOID PVCryptDecode(LPCSTR, DWORD, LPBYTE);