#include "win-update-helpers.hpp"

void FreeProvider(HCRYPTPROV prov)
{
	CryptReleaseContext(prov, 0);
}

void FreeHash(HCRYPTHASH hash)
{
	CryptDestroyHash(hash);
}

void FreeKey(HCRYPTKEY key)
{
	CryptDestroyKey(key);
}

std::string vstrprintf(const char *format, va_list args)
{
	if (!format)
		return std::string();

	std::string str;
	int size = (int)vsnprintf(nullptr, 0, format, args) + 1;
	str.resize(size);
	vsnprintf(&str[0], size, format, args);
	return str;
}

std::string strprintf(const char *format, ...)
{
	std::string str;
	va_list args;

	va_start(args, format);
	str = vstrprintf(format, args);
	va_end(args);

	return str;
}