245 lines
6.9 KiB
C++
245 lines
6.9 KiB
C++
/**********************************************************************/
|
|
/** Microsoft Windows NT **/
|
|
/** Copyright(c) Microsoft Corp., 1992 **/
|
|
/**********************************************************************/
|
|
/*
|
|
UINTLSAX.HXX
|
|
|
|
This header file defines extension classes for the LSA wrappers.
|
|
|
|
LSA_SECRET: a subclass of LSA_OBJECT which covers the functions
|
|
associated with Secret Objects. Unlike LSA_POLICY
|
|
objects, these follow a [construct - {open|create} -
|
|
{close|delete} - destruct] paradigm.
|
|
|
|
Use of this class should be avoided; see the
|
|
LSA_POLICY member functions JoinDomain() and
|
|
TrustDomain().
|
|
|
|
LSA_TRUSTED_DOMAIN: a subclass of LSA_OBJECT which covers the
|
|
functions of Trusted Domains. Like LSA_SECRETs,
|
|
these objects should be used indirectly through
|
|
LSA_POLICY methods.
|
|
|
|
LSA_TRUSTED_DC_LIST: a wrapper for the memory returned by the
|
|
tne API I_NetGetDCList(). This memory is freed
|
|
through ::NetApiFreeBuffer(), and thus cannot be
|
|
a subclass of NT_MEMORY.
|
|
|
|
LSA_DOMAIN_INFO: a wrapper domain information. Will change
|
|
substantially when new Win32 APIs become available.
|
|
|
|
FILE HISTORY:
|
|
DavidHov 3/10/92 Created
|
|
|
|
*/
|
|
|
|
#ifndef _UINTLSAX_HXX_
|
|
#define _UINTLSAX_HXX_
|
|
|
|
#include "uintlsa.hxx"
|
|
|
|
|
|
DLL_CLASS LSA_SECRET ;
|
|
DLL_CLASS LSA_TRUSTED_DOMAIN ;
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: LSA_SECRET (lsascrt)
|
|
|
|
SYNOPSIS: Wrapper class for an LSA "Secret Object'
|
|
|
|
INTERFACE:
|
|
|
|
PARENT: LSA_OBJECT
|
|
|
|
USES:
|
|
|
|
CAVEATS:
|
|
|
|
NOTES:
|
|
|
|
HISTORY:
|
|
DavidHov 4/9/92 Created
|
|
|
|
**************************************************************************/
|
|
DLL_CLASS LSA_SECRET : public LSA_OBJECT
|
|
{
|
|
public:
|
|
LSA_SECRET ( const NLS_STR & nlsSecretName ) ;
|
|
|
|
~LSA_SECRET () ;
|
|
|
|
APIERR Create ( const LSA_POLICY & lsapol,
|
|
ACCESS_MASK accessDesired = SECRET_ALL_ACCESS ) ;
|
|
|
|
APIERR Open ( const LSA_POLICY & lsapol,
|
|
ACCESS_MASK accessDesired = SECRET_READ ) ;
|
|
|
|
APIERR QueryInfo ( NLS_STR * pnlsCurrentValue,
|
|
NLS_STR * pnlsOldValue,
|
|
LARGE_INTEGER * plintCurrentValueSetTime,
|
|
LARGE_INTEGER * plintOldValueSetTime ) const ;
|
|
|
|
APIERR SetInfo ( const NLS_STR * pnlsCurrentValue,
|
|
const NLS_STR * pnlsOldValue = NULL ) ;
|
|
|
|
private:
|
|
NLS_STR _nlsSecretName ;
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: LSA_TRUSTED_DOMAIN (lsatdom)
|
|
|
|
SYNOPSIS: Wrapper class for an LSA "Trusted Domain"
|
|
|
|
INTERFACE:
|
|
|
|
PARENT: LSA_OBJECT
|
|
|
|
USES:
|
|
|
|
CAVEATS:
|
|
|
|
NOTES:
|
|
|
|
HISTORY:
|
|
DavidHov 4/9/92 Created
|
|
|
|
**************************************************************************/
|
|
DLL_CLASS LSA_TRUSTED_DOMAIN : public LSA_OBJECT
|
|
{
|
|
public:
|
|
// Open an existing trusted domain.
|
|
LSA_TRUSTED_DOMAIN ( const LSA_POLICY & lsapol,
|
|
const PSID psid,
|
|
ACCESS_MASK desiredAccess = TRUSTED_READ ) ;
|
|
|
|
// Open an existing trusted domain using
|
|
// an enumeration return structure
|
|
LSA_TRUSTED_DOMAIN ( const LSA_POLICY & lsapol,
|
|
const LSA_TRUST_INFORMATION & lstInfo,
|
|
ACCESS_MASK desiredAccess = TRUSTED_READ ) ;
|
|
|
|
// Create a new trusted domain.
|
|
LSA_TRUSTED_DOMAIN ( const LSA_POLICY & lsapol,
|
|
const NLS_STR & nlsDomainName,
|
|
const PSID psid,
|
|
ACCESS_MASK desiredAccess = TRUSTED_ALL_ACCESS ) ;
|
|
|
|
~ LSA_TRUSTED_DOMAIN () ;
|
|
|
|
// Query functions
|
|
APIERR QueryPosixOffset ( ULONG * plPosixOffset ) const ;
|
|
APIERR QueryControllerList ( LSA_REF_DOMAIN_MEM * plsatdm ) const ;
|
|
|
|
// Set functions
|
|
APIERR SetPosixOffset ( ULONG lPosixOffset ) ;
|
|
APIERR SetControllerList ( LSA_REF_DOMAIN_MEM * plsatdm ) ;
|
|
APIERR SetControllerList (
|
|
const TRUSTED_CONTROLLERS_INFO & tciInfo ) ;
|
|
|
|
// Destroy the trust relationship
|
|
APIERR Delete () ;
|
|
|
|
private:
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: LSA_TRUSTED_DC_LIST
|
|
|
|
SYNOPSIS: Wrapper for trusted domain contorller information
|
|
returned by I_NetGetDCList() API.
|
|
|
|
INTERFACE:
|
|
|
|
PARENT: BASE
|
|
|
|
USES: none
|
|
|
|
CAVEATS: This class assumes it knows the structure of a
|
|
TRUSTED_CONTROLLERS_INFO structure.
|
|
|
|
NOTES:
|
|
|
|
HISTORY: DavidHov 4/11/92 Created
|
|
|
|
**************************************************************************/
|
|
|
|
DLL_CLASS LSA_TRUSTED_DC_LIST : public BASE
|
|
{
|
|
public:
|
|
LSA_TRUSTED_DC_LIST ( const NLS_STR & nlsDomain,
|
|
const TCHAR * pszTrustedDcHint = NULL ) ;
|
|
~ LSA_TRUSTED_DC_LIST () ;
|
|
|
|
const TRUSTED_CONTROLLERS_INFO & QueryControllerList () const ;
|
|
const UNICODE_STRING & operator [] ( INT iIndex ) const ;
|
|
INT QueryCount () ;
|
|
private:
|
|
ULONG _lcDc ;
|
|
UNICODE_STRING * _punsNames ;
|
|
TRUSTED_CONTROLLERS_INFO _tciInfo ;
|
|
|
|
APIERR QueryInfo ( const NLS_STR & nlsDomain,
|
|
const TCHAR * pszTrustedDcHint ) ;
|
|
VOID FreeBuffer () ;
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: LSA_DOMAIN_INFO
|
|
|
|
SYNOPSIS: Wrapper for synthetic LSA/NETAPI information.
|
|
|
|
This class is required, since one of the things
|
|
that can be queried returns a PSID, and the underlying
|
|
memory associated with that object must be properly
|
|
deleted.
|
|
|
|
INTERFACE:
|
|
|
|
PARENT: BASE
|
|
|
|
USES: NLS_STR
|
|
|
|
CAVEATS: This class is incomplete, since it only
|
|
knows how to deal with the primary domain
|
|
at this time.
|
|
|
|
NOTES:
|
|
|
|
HISTORY: DavidHov 4/11/92 Created
|
|
|
|
|
|
**************************************************************************/
|
|
DLL_CLASS LSA_DOMAIN_INFO : public BASE
|
|
{
|
|
public:
|
|
LSA_DOMAIN_INFO ( const NLS_STR & nlsDomainName,
|
|
const NLS_STR * pnlsServer = NULL,
|
|
const NLS_STR * pnlsDcName = NULL ) ;
|
|
~ LSA_DOMAIN_INFO () ;
|
|
|
|
// BUGBUG: this should not require an LSA_POLICY,
|
|
// but it does, since this only works for the
|
|
// local primary domain at this time...
|
|
const PSID QueryPSID () const ;
|
|
|
|
APIERR QueryDcName ( NLS_STR * pnlsDcName ) ;
|
|
|
|
private:
|
|
NLS_STR _nlsDomainName ;
|
|
NLS_STR _nlsDcName ;
|
|
|
|
LSA_PRIMARY_DOM_INFO_MEM _lsapdim ;
|
|
};
|
|
|
|
#endif // _UINTLSAX_HXX_
|
|
|