Leaked source code of windows server 2003
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.
 
 
 
 
 
 

195 lines
4.5 KiB

#ifndef __LNKLIST_H__
#define __LNKLIST_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "pstypes.h"
#include "listbase.h"
#include <sha.h>
//////////////////////
// OpenItem list
// item list element
typedef struct _OPENITEM_LIST_ITEM
{
// internal to list
struct _OPENITEM_LIST_ITEM * pNext;
// Lookup devices: set by creator before adding to list
PST_PROVIDER_HANDLE hPSTProv;
PST_KEY Key;
GUID guidType;
GUID guidSubtype;
LPWSTR szItemName;
// item data
BYTE rgbPwd[A_SHA_DIGEST_LEN];
BYTE rgbPwdLowerCase[A_SHA_DIGEST_LEN];
LPWSTR szMasterKey;
PST_ACCESSMODE ModeFlags;
} OPENITEM_LIST_ITEM, *POPENITEM_LIST_ITEM;
class COpenItemList : public CLinkedList
{
// CLinkedList list;
public:
COpenItemList();
BOOL AddToList(POPENITEM_LIST_ITEM pli)
{ return CLinkedList::AddToList((ELT*)pli); }
BOOL DelFromList(POPENITEM_LIST_ITEM pli)
{ return CLinkedList::DelFromList((ELT*)pli); }
POPENITEM_LIST_ITEM SearchList(POPENITEM_LIST_ITEM pli)
{ return (POPENITEM_LIST_ITEM) CLinkedList::SearchList((ELT*)pli); }
};
//////////////////////////
// Associated functions
void CreateOpenListItem(
OPENITEM_LIST_ITEM* pli,
PST_PROVIDER_HANDLE* phPSTProv,
PST_KEY Key,
const GUID* pguidType,
const GUID* pguidSubtype,
LPCWSTR szItemName);
BOOL OpenItemIsMatch(
ELT* pCandidate,
ELT* pTemplate);
void OpenItemFreeElt(
ELT* pli);
//////////////////////
// User Authentication Cache list
// item list element
typedef struct _UACACHE_LIST_ITEM
{
// internal to list
struct _UACACHE_LIST_ITEM * pNext;
// Lookup devices: set by creator before adding to list
LPWSTR szUserName;
LPWSTR szMKName;
LUID luidAuthID; // NT authentication ID
// item data
BYTE rgbPwd[A_SHA_DIGEST_LEN];
BYTE rgbPwdLowerCase[A_SHA_DIGEST_LEN];
} UACACHE_LIST_ITEM, *PUACACHE_LIST_ITEM;
class CUAList : public CLinkedList
{
public:
CUAList();
BOOL AddToList(PUACACHE_LIST_ITEM pli)
{ return CLinkedList::AddToList((ELT*)pli); }
BOOL DelFromList(PUACACHE_LIST_ITEM pli)
{ return CLinkedList::DelFromList((ELT*)pli); }
PUACACHE_LIST_ITEM SearchList(PUACACHE_LIST_ITEM pli)
{ return (PUACACHE_LIST_ITEM) CLinkedList::SearchList((ELT*)pli); }
};
///////////////////////////
// Associated functions
void CreateUACacheListItem(
UACACHE_LIST_ITEM* pli,
LPCWSTR szUserName,
LPCWSTR szMKName,
LUID *pluidAuthID);
BOOL UACacheIsMatch(
ELT* pCandidate,
ELT* pTemplate);
void UACacheFreeElt(
ELT* pli);
//////////////////////////////
// CryptProv list
// item list element
typedef struct _CRYPTPROV_LIST_ITEM
{
// internal to list
struct _CRYPTPROV_LIST_ITEM * pNext;
// Lookup device
// DWORD dwProvID;
DWORD dwAlgId1;
DWORD dwKeySize1;
DWORD dwAlgId2;
DWORD dwKeySize2;
// item data
HCRYPTPROV hProv;
} CRYPTPROV_LIST_ITEM, *PCRYPTPROV_LIST_ITEM;
class CCryptProvList : public CLinkedList
{
public:
CCryptProvList();
BOOL AddToList(PCRYPTPROV_LIST_ITEM pli)
{ return CLinkedList::AddToList((ELT*)pli); }
BOOL DelFromList(PCRYPTPROV_LIST_ITEM pli)
{ return CLinkedList::DelFromList((ELT*)pli); }
PCRYPTPROV_LIST_ITEM SearchList(PCRYPTPROV_LIST_ITEM pli)
{ return (PCRYPTPROV_LIST_ITEM) CLinkedList::SearchList((ELT*)pli); }
};
///////////////////////////
// Associated functions
void CreateCryptProvListItem(CRYPTPROV_LIST_ITEM* pli,
DWORD dwAlgId1,
DWORD dwKeySize1,
DWORD dwAlgId2,
DWORD dwKeySize2,
HCRYPTPROV hCryptProv);
BOOL CryptProvIsMatch(
ELT* pCandidate,
ELT* pTemplate);
void CryptProvFreeElt(
ELT* p);
#ifdef __cplusplus
}
#endif
#endif // __LNKLIST_H__