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

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