/*++ Copyright (c) 2001, Microsoft Corporation Module Name: eltrace.h Abstract: Routines for database logging Revision History: sachins, September 05 2001, Created --*/ #include "..\..\zeroconf\server\wzcsvc.h" #ifndef _ELTRACE_H_ #define _ELTRACE_H_ #define WMAC_SEPARATOR L'-' #define HEX2WCHAR(c) ((c)<=9 ? L'0'+ (c) : L'A' + (c) - 10) #define MAX_WMESG_SIZE MAX_RAW_DATA_SIZE/sizeof(WCHAR) extern WCHAR *EAPOLStates[]; extern WCHAR *EAPOLAuthTypes[]; extern WCHAR *EAPOLPacketTypes[]; extern WCHAR *EAPOLEAPPacketTypes[]; #define MACADDR_BYTE_TO_WSTR(bAddr, wszAddr) \ { \ DWORD i = 0, j = 0; \ ZeroMemory ((PVOID)(wszAddr),3*SIZE_MAC_ADDR*sizeof(WCHAR)); \ for (j = 0, i = 0; i < SIZE_MAC_ADDR; i++) \ { \ BYTE nHex; \ nHex = (bAddr[i] & 0xf0) >> 4; \ wszAddr[j++] = HEX2WCHAR(nHex); \ nHex = (bAddr[i] & 0x0f); \ wszAddr[j++] = HEX2WCHAR(nHex); \ wszAddr[j++] = WMAC_SEPARATOR; \ } \ if (j > 0) \ { \ wszAddr[j-1] = L'\0'; \ } \ }; VOID EapolTrace ( IN CHAR* Format, ... ); #define MAX_HASH_SIZE 20 // Certificate hash size #define MAX_HASH_LEN 20 // Certificate hash size typedef struct _EAPTLS_HASH { DWORD cbHash; // Number of bytes in the hash BYTE pbHash[MAX_HASH_SIZE]; // The hash of a certificate } EAPTLS_HASH; // EAP-TLS structure to weed out certificate details typedef struct _EAPTLS_USER_PROPERTIES { DWORD reserved; // Must be 0 (compare with EAPLOGONINFO) DWORD dwVersion; DWORD dwSize; // Number of bytes in this structure DWORD fFlags; // See EAPTLS_USER_FLAG_* EAPTLS_HASH Hash; // Hash for the user certificate WCHAR* pwszDiffUser; // The EAP Identity to send DWORD dwPinOffset; // Offset in abData WCHAR* pwszPin; // The smartcard PIN USHORT usLength; // Part of UnicodeString USHORT usMaximumLength; // Part of UnicodeString UCHAR ucSeed; // To unlock the UnicodeString WCHAR awszString[1]; // Storage for pwszDiffUser and pwszPin } EAPTLS_USER_PROPERTIES; typedef struct _EAPOL_CERT_NODE { WCHAR* pwszVersion; WCHAR* pwszSerialNumber; WCHAR* pwszIssuer; WCHAR* pwszFriendlyName; WCHAR* pwszDisplayName; WCHAR* pwszValidFrom; WCHAR* pwszValidTo; WCHAR* pwszThumbprint; WCHAR* pwszEKUUsage; } EAPOL_CERT_NODE, *PEAPOL_CERT_NODE; DWORD ElLogCertificateDetails ( EAPOL_PCB *pPCB ); DWORD DbLogPCBEvent ( DWORD dwCategory, EAPOL_PCB *pPCB, DWORD dwEventId, ... ); DWORD DbFormatEAPOLEventVA ( WCHAR *pwszMessage, DWORD dwEventId, ... ); DWORD DbFormatEAPOLEvent ( WCHAR *pwszMessage, DWORD dwEventId, va_list *pargList ); DWORD ElParsePacket ( IN EAPOL_PCB *pPCB, IN PBYTE pbPkt, IN DWORD dwLength, IN BOOLEAN fReceived ); DWORD ElFormatPCBContext ( IN EAPOL_PCB *pPCB, IN OUT WCHAR *pwszContext ); DWORD ElDisplayCert ( IN EAPOL_PCB *pPCB ); #endif // _ELTRACE_H_