windows-nt/Source/XPSP1/NT/inetsrv/iis/setup/osrc/lsakeys.h

96 lines
2.5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
#ifndef _LSAKEYS_H_
#define _LSAKEYS_H_
#ifndef _CHICAGO_
// This class is to help setup retrieve the old-style LSA keys and convert them
// into the new MetaData keys.
// error codes
enum {
KEYLSA_SUCCESS = 0,
KEYLSA_INVALID_VERSION,
KEYLSA_NO_MORE_KEYS,
KEYLSA_UNABLE_TO_OPEN_POLICY
};
// Note: once you call LoadFirstKey, there is an open LSA policy until the object is deleted.
// This is done for speed purposes. So if you don't want the policy hanging around, don't
// keep the object around.
class CLSAKeys : public CObject
{
public:
// construction
CLSAKeys();
~CLSAKeys();
// loading the keys
// LoadFirstKey loads the first key on the specified target machine. Until
// this method is called, the data values in the object are meaningless
DWORD LoadFirstKey( PWCHAR pszwTargetMachine );
// LoadNextKey loads the next key on the target machine specified in LoadFirstKey
// LoadNextKey automatically cleans up the memory used by the previous key.
DWORD LoadNextKey();
// DeleteAllLSAKeys deletes ALL remenents of the LSA keys in the Metabase.
// (not including, of course anything written out there in the future as part
// of some backup scheme when uninstalling). Call this only AFTER ALL the keys
// have been converted to the metabase. They will no longer be there after
// this routine is used.
DWORD DeleteAllLSAKeys();
// the data values that are to be filled in.
// The public portion of the key - may be NULL and zero size
DWORD m_cbPublic;
PVOID m_pPublic;
// the private portion of the key
DWORD m_cbPrivate;
PVOID m_pPrivate;
// the password
DWORD m_cbPassword;
PVOID m_pPassword;
// the certificate request - may be NULL and zero size
DWORD m_cbRequest;
PVOID m_pRequest;
// the friendly name
CHAR m_szFriendlyName[256];
// the name that should be given to the metabase object for this key
CHAR m_szMetaName[256];
private:
// clean up the currently loaded key
void UnloadKey();
// delete utilities
DWORD DeleteKMKeys();
DWORD DeleteServerKeys();
// LSA Utility routines
HANDLE HOpenLSAPolicy( PWCHAR pszwServer, DWORD *pErr );
BOOL FCloseLSAPolicy( HANDLE hPolicy, DWORD *pErr );
BOOL FStoreLSASecret( HANDLE hPolicy, WCHAR* pszwSecretName, void* pvData, WORD cbData, DWORD *pErr );
PLSA_UNICODE_STRING FRetrieveLSASecret( HANDLE hPolicy, WCHAR* pszwSecretName, DWORD *pErr );
void DisposeLSAData( PVOID pData );
// the handle to the LSA policy
HANDLE m_hPolicy;
// index of the current key
DWORD m_iKey;
};
#endif //_CHICAGO_
#endif //_LSAKEYS_H_