114 lines
4 KiB
C
114 lines
4 KiB
C
|
#include "wzccrypt.h"
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
// MEMORY ALLOCATION UTILITIES (defines, structs, funcs)
|
||
|
#define MemCAlloc(nBytes) Process_user_allocate(nBytes)
|
||
|
#define MemFree(pMem) Process_user_free(pMem)
|
||
|
|
||
|
PVOID
|
||
|
Process_user_allocate(size_t NumBytes);
|
||
|
|
||
|
VOID
|
||
|
Process_user_free(LPVOID pMem);
|
||
|
|
||
|
|
||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
// NDIS UTILITIES (defines, structs, funcs)
|
||
|
//-----------------------------------------------------------
|
||
|
// Searches pwzcConfig in the list pwzcVList. The entries are
|
||
|
// matched exclusively based on the matching SSIDs and on
|
||
|
// matching Infrastructure Mode.
|
||
|
// [in] pwzcVList: Set of WZC_WLAN_CONFIGs to search in
|
||
|
// [in] pwzcConfig: WZC_WLAN_CONFIG to look for
|
||
|
// [in] nIdx: index in pwzcVList to start searching from
|
||
|
// Returns: Pointer to the entry that matches pwzcConfig or NULL
|
||
|
// if none matches
|
||
|
PWZC_WLAN_CONFIG
|
||
|
WzcFindConfig(
|
||
|
PWZC_802_11_CONFIG_LIST pwzcList,
|
||
|
PWZC_WLAN_CONFIG pwzcConfig,
|
||
|
ULONG nIdx);
|
||
|
|
||
|
// Matches the content of the two configurations one against the other.
|
||
|
// [in] pwzcConfigA: | configs to match
|
||
|
// [in] pwzcConfigB: |
|
||
|
// [in/out] pbWepDiffOnly: TRUE if there is a difference and the difference is exclusively
|
||
|
// in the WEP Key index or in WEP Key Material. Otherwise is false.
|
||
|
// Returns: TRUE if the configs match, FALSE otherwise;
|
||
|
BOOL
|
||
|
WzcMatchConfig(
|
||
|
PWZC_WLAN_CONFIG pwzcConfigA,
|
||
|
PWZC_WLAN_CONFIG pwzcConfigB,
|
||
|
PBOOL pbWepDiffOnly);
|
||
|
|
||
|
// Converts an NDIS_802_11_BSSID_LIST object to an equivalent
|
||
|
// (imaged) WZC_802_11_CONFIG_LIST
|
||
|
// [in] pndList: NDIS BSSID list to convert
|
||
|
// Returns: Pointer to the list of copied WZC configurations
|
||
|
PWZC_802_11_CONFIG_LIST
|
||
|
WzcNdisToWzc(
|
||
|
PNDIS_802_11_BSSID_LIST pndList);
|
||
|
|
||
|
// WzcCleanupList: Cleanup a list of WZC_WLAN_CONFIG objects
|
||
|
VOID
|
||
|
WzcCleanupWzcList(
|
||
|
PWZC_802_11_CONFIG_LIST pwzcList);
|
||
|
|
||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
// SYNCHRONIZATION UTILITIES
|
||
|
//-----------------------------------------------------------
|
||
|
// Datastructures
|
||
|
// RCCS_SYNC encapsulates a critical section and a reference counter.
|
||
|
typedef struct _RCCS_SYNC
|
||
|
{
|
||
|
CRITICAL_SECTION csMutex;
|
||
|
UINT nRefCount;
|
||
|
} RCCS_SYNC, *PRCCS_SYNC;
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// RccsInit: Initializes an RCCS structure
|
||
|
DWORD
|
||
|
RccsInit(PRCCS_SYNC pRccs);
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// RccsInit: Deletes an RCCS structure
|
||
|
DWORD
|
||
|
RccsDestroy(PRCCS_SYNC pRccs);
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// WzcCryptBuffer: Randomly generates a nBufLen bytes in the range
|
||
|
// [loByte hiByte], all stored in pBuffer (buffer assumed preallocated)
|
||
|
// Returns a win32 error code.
|
||
|
DWORD
|
||
|
WzcRndGenBuffer(LPBYTE pBuffer, UINT nBufLen, BYTE loByte, BYTE hiByte);
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// WzcIsNullBuffer: Checks whether a buffer of nBufLen characters
|
||
|
// is all filled with null characters.
|
||
|
BOOL
|
||
|
WzcIsNullBuffer(LPBYTE pBuffer, UINT nBufLen);
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// WzcSSKClean: Cleans up the PSEC_SESSION_KEYS object given as parameter
|
||
|
VOID
|
||
|
WzcSSKClean(PSEC_SESSION_KEYS pSSK);
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// WzcSSKFree: Frees up the memory used by the PSEC_SESSION_KEYS parameter
|
||
|
VOID
|
||
|
WzcSSKFree(PSEC_SESSION_KEYS pSSK);
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// WzcSSKEncrypt: Creates/Allocates a SEC_SESSION_KEYS object
|
||
|
// by encrypting the SESSION_KEYS object provided as parameter.
|
||
|
DWORD
|
||
|
WzcSSKEncrypt(PSEC_SESSION_KEYS pSSK, PSESSION_KEYS pSK);
|
||
|
|
||
|
//-----------------------------------------------------------
|
||
|
// WzcSSKDecrypt: Creates/Allocates a SESSION_KEYS object
|
||
|
// by dencrypting the SEC_SESSION_KEYS object provided as parameter.
|
||
|
DWORD
|
||
|
WzcSSKDecrypt(PSEC_SESSION_KEYS pSSK, PSESSION_KEYS pSK);
|