FreeRDP/winpr/libwinpr/sspi/test/TestAcquireCredentialsHandle.c

61 lines
1.5 KiB
C
Raw Normal View History

2012-10-01 04:15:42 +04:00
#include <stdio.h>
#include <winpr/crt.h>
#include <winpr/sspi.h>
#include <winpr/winpr.h>
static const char* test_User = "User";
static const char* test_Domain = "Domain";
static const char* test_Password = "Password";
int TestAcquireCredentialsHandle(int argc, char* argv[])
{
int rc = -1;
2012-10-01 04:15:42 +04:00
SECURITY_STATUS status;
2017-12-21 11:34:35 +03:00
CredHandle credentials = { 0 };
2012-10-01 04:15:42 +04:00
TimeStamp expiration;
SEC_WINNT_AUTH_IDENTITY identity;
SecurityFunctionTable* table;
SecPkgCredentials_Names credential_names;
2021-07-29 11:18:52 +03:00
WINPR_UNUSED(argc);
WINPR_UNUSED(argv);
2012-10-01 04:15:42 +04:00
sspi_GlobalInit();
table = InitSecurityInterface();
2019-11-06 17:24:51 +03:00
identity.User = (UINT16*)_strdup(test_User);
identity.Domain = (UINT16*)_strdup(test_Domain);
identity.Password = (UINT16*)_strdup(test_Password);
if (!identity.User || !identity.Domain || !identity.Password)
goto fail;
2015-06-22 19:52:13 +03:00
identity.UserLength = strlen(test_User);
identity.DomainLength = strlen(test_Domain);
identity.PasswordLength = strlen(test_Password);
2012-10-01 04:15:42 +04:00
identity.Flags = SEC_WINNT_AUTH_IDENTITY_ANSI;
2019-11-06 17:24:51 +03:00
status = table->AcquireCredentialsHandle(NULL, NTLM_SSP_NAME, SECPKG_CRED_OUTBOUND, NULL,
&identity, NULL, NULL, &credentials, &expiration);
2012-10-01 04:15:42 +04:00
if (status != SEC_E_OK)
goto fail;
2012-10-01 04:15:42 +04:00
2019-11-06 17:24:51 +03:00
status =
table->QueryCredentialsAttributes(&credentials, SECPKG_CRED_ATTR_NAMES, &credential_names);
2012-10-01 04:15:42 +04:00
if (status != SEC_E_OK)
goto fail;
2012-10-01 04:15:42 +04:00
rc = 0;
fail:
if (SecIsValidHandle(&credentials))
table->FreeCredentialsHandle(&credentials);
free(identity.User);
free(identity.Domain);
free(identity.Password);
2012-10-01 04:15:42 +04:00
sspi_GlobalFinish();
return rc;
2012-10-01 04:15:42 +04:00
}