110 lines
3.1 KiB
C++
110 lines
3.1 KiB
C++
|
|
|||
|
//
|
|||
|
// Copyright (C) 1993-1999 Microsoft Corporation. All Rights Reserved.
|
|||
|
//
|
|||
|
// MODULE: rdscred.cpp
|
|||
|
//
|
|||
|
// PURPOSE: Implements RDS credential management
|
|||
|
//
|
|||
|
// FUNCTIONS:
|
|||
|
// InitT120Credentials(VOID)
|
|||
|
//
|
|||
|
// COMMENTS:
|
|||
|
//
|
|||
|
//
|
|||
|
// AUTHOR: Claus Giloi
|
|||
|
//
|
|||
|
|
|||
|
|
|||
|
#include <precomp.h>
|
|||
|
#include <wincrypt.h>
|
|||
|
#include <tsecctrl.h>
|
|||
|
#include <nmmkcert.h>
|
|||
|
|
|||
|
extern INmSysInfo2 * g_pNmSysInfo; // Interface to SysInfo
|
|||
|
|
|||
|
BOOL InitT120Credentials(VOID)
|
|||
|
{
|
|||
|
HCERTSTORE hStore;
|
|||
|
PCCERT_CONTEXT pCertContext = NULL;
|
|||
|
BOOL bRet = FALSE;
|
|||
|
|
|||
|
// Open the "MY" local machine certificate store. This one will be
|
|||
|
// used when we're running as a service
|
|||
|
hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,
|
|||
|
X509_ASN_ENCODING,
|
|||
|
0,
|
|||
|
CERT_SYSTEM_STORE_LOCAL_MACHINE,
|
|||
|
L"MY" );
|
|||
|
|
|||
|
if ( NULL != hStore )
|
|||
|
{
|
|||
|
#ifdef DUMPCERTS
|
|||
|
DumpCertStore(this, "Local Machine Store MY", hStore);
|
|||
|
#endif // DUMPCERTS
|
|||
|
|
|||
|
// Check the local machine store for a certificate - any!
|
|||
|
pCertContext = CertFindCertificateInStore(hStore,
|
|||
|
X509_ASN_ENCODING,
|
|||
|
0,
|
|||
|
CERT_FIND_ANY,
|
|||
|
NULL,
|
|||
|
NULL);
|
|||
|
|
|||
|
CertCloseStore( hStore, 0);
|
|||
|
}
|
|||
|
|
|||
|
if ( NULL == pCertContext )
|
|||
|
{
|
|||
|
// Open the "_NMSTR" local machine certificate store.
|
|||
|
hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,
|
|||
|
X509_ASN_ENCODING,
|
|||
|
0,
|
|||
|
CERT_SYSTEM_STORE_LOCAL_MACHINE,
|
|||
|
WSZNMSTORE );
|
|||
|
if ( NULL != hStore )
|
|||
|
{
|
|||
|
#ifdef DUMPCERTS
|
|||
|
DumpCertStore(this, "Local Machine Store _NMSTR", hStore);
|
|||
|
#endif // DUMPCERTS
|
|||
|
|
|||
|
// Check the local machine store for a certificate - any!
|
|||
|
pCertContext = CertFindCertificateInStore(hStore,
|
|||
|
X509_ASN_ENCODING,
|
|||
|
0,
|
|||
|
CERT_FIND_ANY,
|
|||
|
NULL,
|
|||
|
NULL);
|
|||
|
|
|||
|
CertCloseStore( hStore, 0);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ( NULL == pCertContext )
|
|||
|
{
|
|||
|
WARNING_OUT(("No service context cert found!"));
|
|||
|
return bRet;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
DWORD dwResult = -1;
|
|||
|
|
|||
|
g_pNmSysInfo->ProcessSecurityData(
|
|||
|
TPRTCTRL_SETX509CREDENTIALS,
|
|||
|
(DWORD_PTR)pCertContext, 0,
|
|||
|
&dwResult);
|
|||
|
if ( !dwResult )
|
|||
|
{
|
|||
|
bRet = TRUE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ERROR_OUT(("InitT120Credentials - failed in T.120"));
|
|||
|
}
|
|||
|
CertFreeCertificateContext ( pCertContext );
|
|||
|
|
|||
|
return bRet;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|