#include "identity.h"



BOOL IdentityGetUserInfo(_In_ HANDLE hToken, _Out_ char* buffer, _In_ int tamano) {

	TOKEN_USER informacionToken[0x1000];
	SID_NAME_USE tipoSid;
	DWORD tamanoRespuesta;

	if (!GetTokenInformation(hToken, TokenUser, informacionToken, sizeof(informacionToken), &tamanoRespuesta)) {

		return FALSE;
	}

	CHAR nombre[0x200] = { 0 };
	CHAR dominio[0x200] = { 0 };

	DWORD tamanoNombre = sizeof(nombre);
	DWORD tamanoDominio = sizeof(dominio);

	if (!LookupAccountSidA(NULL, informacionToken->User.Sid, nombre, &tamanoNombre, dominio, &tamanoDominio, &tipoSid)) {
		return FALSE;
	}

    /* Use wsprintfA for MinGW portability without requiring nonstandard _snprintf */
    wsprintfA(buffer, "%s\\%s", dominio, nombre);
	buffer[tamano - 1] = 0;
	return TRUE;
}