Esempio n. 1
0
int ToBase64Crypto( const BYTE* pSrc, int nLenSrc, wchar_t* pDst, int nLenDst )
{
   DWORD nLenOut= nLenDst;
   BOOL fRet= CryptBinaryToStringW((const BYTE*)pSrc, nLenSrc,CRYPT_STRING_BASE64 | CRYPT_STRING_NOCRLF,pDst, &nLenOut);
   if (!fRet) nLenOut=0;
   return( nLenOut );
}
Esempio n. 2
0
BOOL CSyoboiCalUtil::Base64Enc(LPCSTR src, DWORD srcSize, LPWSTR dest, DWORD* destSize)
{
	if( destSize == NULL ){
		return FALSE;
	}
	DWORD dwDst = 0;
	if( CryptBinaryToStringW( (BYTE*)src, srcSize, CRYPT_STRING_BASE64, NULL, &dwDst ) == FALSE){
		return FALSE;
	}
	if( *destSize < dwDst+1 ){
		*destSize = dwDst+1;
		return FALSE;
	}
	if( dest != NULL ){
		if( CryptBinaryToStringW( (BYTE*)src, srcSize, CRYPT_STRING_BASE64, dest, destSize ) ){
		}
	}
	return TRUE;
}
Esempio n. 3
0
std::wstring CStringUtils::Encrypt(const wchar_t * text)
{
    DATA_BLOB blobin = { 0 };
    DATA_BLOB blobout = { 0 };
    std::wstring result;

    blobin.cbData = (DWORD)wcslen(text)*sizeof(wchar_t);
    blobin.pbData = (BYTE*)(LPCWSTR)text;
    if (CryptProtectData(&blobin, L"TSVNAuth", NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &blobout) == FALSE)
        return result;
    DWORD dwLen = 0;
    if (CryptBinaryToStringW(blobout.pbData, blobout.cbData, CRYPT_STRING_HEX | CRYPT_STRING_NOCRLF, NULL, &dwLen) == FALSE)
        return result;
    std::unique_ptr<wchar_t[]> strOut(new wchar_t[dwLen + 1]);
    if (CryptBinaryToStringW(blobout.pbData, blobout.cbData, CRYPT_STRING_HEX | CRYPT_STRING_NOCRLF, strOut.get(), &dwLen) == FALSE)
        return result;
    LocalFree(blobout.pbData);

    result = strOut.get();

    return result;
}
HRESULT SerializePropVariantAsString(REFPROPVARIANT propvar, PWSTR *ppszOut)
{
    SERIALIZEDPROPERTYVALUE *pBlob;
    ULONG cbBlob;

    // serialize PROPVARIANT to binary form
    HRESULT hr = StgSerializePropVariant(&propvar, &pBlob, &cbBlob);
    if (SUCCEEDED(hr))
    {
        // determine the required buffer size
        hr = E_FAIL;
        DWORD cchString;
        if (CryptBinaryToStringW((BYTE *)pBlob, cbBlob, CRYPT_STRING_BASE64, NULL, &cchString))
        {
            // allocate a sufficient buffer
            hr = E_OUTOFMEMORY;
            *ppszOut = (PWSTR)CoTaskMemAlloc(sizeof(WCHAR) * cchString);
            if (*ppszOut)
            {
                // convert the serialized binary blob to a string representation
                hr = E_FAIL;
                if (CryptBinaryToStringW((BYTE *)pBlob, cbBlob, CRYPT_STRING_BASE64, *ppszOut, &cchString))
                {
                    hr = S_OK;
                }
                else
                {
                    CoTaskMemFree(*ppszOut);
                    *ppszOut = NULL;
                }
            }
        }

        CoTaskMemFree(pBlob);
    }

    return hr;
}
Esempio n. 5
0
ULONG _Bin2Hex(CONST PBYTE Binary, ULONG Length, PWSTR* PtrBuffer)
{
	BOOL Result = FALSE;
	ULONG Request = 0;

	Result = CryptBinaryToStringW(Binary, Length, CRYPT_STRING_HEXASCII, NULL, &Request);
	if (Result == FALSE)
		return -1;

	PWSTR Buffer = reinterpret_cast<PWSTR>(VirtualAlloc(NULL, Request<<1, MEM_COMMIT, PAGE_READWRITE));
	if (Buffer == NULL)
		return -1;

	Result = CryptBinaryToStringW(Binary, Length, CRYPT_STRING_HEXASCII, Buffer, &Request);
	if (Result == FALSE)
		_ReleaseB2H(Buffer);
	else
	{
		*PtrBuffer = Buffer;
		return Request;
	}

	return -1;
}