crypt32: Forward CryptDecodeObject to CryptDecodeObjectEx.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
855dab34bd
commit
98fad7df79
|
@ -6276,48 +6276,8 @@ BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType,
|
||||||
const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo,
|
const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo,
|
||||||
DWORD *pcbStructInfo)
|
DWORD *pcbStructInfo)
|
||||||
{
|
{
|
||||||
BOOL ret = FALSE;
|
return CryptDecodeObjectEx(dwCertEncodingType, lpszStructType,
|
||||||
CryptDecodeObjectFunc pCryptDecodeObject = NULL;
|
pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo);
|
||||||
CryptDecodeObjectExFunc pCryptDecodeObjectEx = NULL;
|
|
||||||
HCRYPTOIDFUNCADDR hFunc = NULL;
|
|
||||||
|
|
||||||
TRACE_(crypt)("(0x%08x, %s, %p, %d, 0x%08x, %p, %p)\n", dwCertEncodingType,
|
|
||||||
debugstr_a(lpszStructType), pbEncoded, cbEncoded, dwFlags,
|
|
||||||
pvStructInfo, pcbStructInfo);
|
|
||||||
|
|
||||||
if (!pvStructInfo && !pcbStructInfo)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
if (cbEncoded > MAX_ENCODED_LEN)
|
|
||||||
{
|
|
||||||
SetLastError(CRYPT_E_ASN1_LARGE);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(pCryptDecodeObjectEx = CRYPT_GetBuiltinDecoder(dwCertEncodingType,
|
|
||||||
lpszStructType)))
|
|
||||||
{
|
|
||||||
TRACE_(crypt)("OID %s not found or unimplemented, looking for DLL\n",
|
|
||||||
debugstr_a(lpszStructType));
|
|
||||||
pCryptDecodeObject = CRYPT_LoadDecoderFunc(dwCertEncodingType,
|
|
||||||
lpszStructType, &hFunc);
|
|
||||||
if (!pCryptDecodeObject)
|
|
||||||
pCryptDecodeObjectEx = CRYPT_LoadDecoderExFunc(dwCertEncodingType,
|
|
||||||
lpszStructType, &hFunc);
|
|
||||||
}
|
|
||||||
if (pCryptDecodeObject)
|
|
||||||
ret = pCryptDecodeObject(dwCertEncodingType, lpszStructType,
|
|
||||||
pbEncoded, cbEncoded, dwFlags, pvStructInfo, pcbStructInfo);
|
|
||||||
else if (pCryptDecodeObjectEx)
|
|
||||||
ret = pCryptDecodeObjectEx(dwCertEncodingType, lpszStructType,
|
|
||||||
pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, NULL,
|
|
||||||
pvStructInfo, pcbStructInfo);
|
|
||||||
if (hFunc)
|
|
||||||
CryptFreeOIDFunctionAddress(hFunc, 0);
|
|
||||||
TRACE_(crypt)("returning %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType,
|
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType,
|
||||||
|
|
Loading…
Reference in New Issue