|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#include <stdio.h>
|
|
Packit Service |
fa4841 |
#include <winpr/crt.h>
|
|
Packit Service |
fa4841 |
#include <winpr/sspi.h>
|
|
Packit Service |
fa4841 |
#include <winpr/winpr.h>
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
static const char* test_User = "User";
|
|
Packit Service |
fa4841 |
static const char* test_Domain = "Domain";
|
|
Packit Service |
fa4841 |
static const char* test_Password = "Password";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
int TestAcquireCredentialsHandle(int argc, char* argv[])
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
int rc = -1;
|
|
Packit Service |
fa4841 |
SECURITY_STATUS status;
|
|
Packit Service |
fa4841 |
CredHandle credentials = { 0 };
|
|
Packit Service |
fa4841 |
TimeStamp expiration;
|
|
Packit Service |
fa4841 |
SEC_WINNT_AUTH_IDENTITY identity;
|
|
Packit Service |
fa4841 |
SecurityFunctionTable* table;
|
|
Packit Service |
fa4841 |
SecPkgCredentials_Names credential_names;
|
|
Packit Service |
fa4841 |
sspi_GlobalInit();
|
|
Packit Service |
fa4841 |
table = InitSecurityInterface();
|
|
Packit Service |
bb5c11 |
identity.User = (UINT16*) _strdup(test_User);
|
|
Packit Service |
bb5c11 |
identity.Domain = (UINT16*) _strdup(test_Domain);
|
|
Packit Service |
bb5c11 |
identity.Password = (UINT16*) _strdup(test_Password);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!identity.User || !identity.Domain || !identity.Password)
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
identity.UserLength = strlen(test_User);
|
|
Packit Service |
fa4841 |
identity.DomainLength = strlen(test_Domain);
|
|
Packit Service |
fa4841 |
identity.PasswordLength = strlen(test_Password);
|
|
Packit Service |
fa4841 |
identity.Flags = SEC_WINNT_AUTH_IDENTITY_ANSI;
|
|
Packit Service |
bb5c11 |
status = table->AcquireCredentialsHandle(NULL, NTLM_SSP_NAME,
|
|
Packit Service |
bb5c11 |
SECPKG_CRED_OUTBOUND, NULL, &identity, NULL, NULL, &credentials, &expiration);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (status != SEC_E_OK)
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
bb5c11 |
status = table->QueryCredentialsAttributes(&credentials, SECPKG_CRED_ATTR_NAMES, &credential_names);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (status != SEC_E_OK)
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
rc = 0;
|
|
Packit Service |
fa4841 |
fail:
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (SecIsValidHandle(&credentials))
|
|
Packit Service |
fa4841 |
table->FreeCredentialsHandle(&credentials);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
free(identity.User);
|
|
Packit Service |
fa4841 |
free(identity.Domain);
|
|
Packit Service |
fa4841 |
free(identity.Password);
|
|
Packit Service |
fa4841 |
sspi_GlobalFinish();
|
|
Packit Service |
fa4841 |
return rc;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
bb5c11 |
|