diff --git a/reactos/dll/win32/mscat32/mscat32.spec b/reactos/dll/win32/mscat32/mscat32.spec index 5d277deca02..3c3c9d8d4c1 100644 --- a/reactos/dll/win32/mscat32/mscat32.spec +++ b/reactos/dll/win32/mscat32/mscat32.spec @@ -5,30 +5,30 @@ @ stdcall CryptCATAdminEnumCatalogFromHash(long ptr long long ptr) wintrust.CryptCATAdminEnumCatalogFromHash @ stdcall CryptCATAdminReleaseCatalogContext(long long long) wintrust.CryptCATAdminReleaseCatalogContext @ stdcall CryptCATAdminReleaseContext(long long) wintrust.CryptCATAdminReleaseContext -@ stub CryptCATCDFClose +@ stdcall CryptCATCDFClose(ptr) wintrust.CryptCATCDFClose @ stub CryptCATCDFEnumAttributes -@ stub CryptCATCDFEnumAttributesWithCDFTag -@ stub CryptCATCDFEnumCatAttributes +@ stdcall CryptCATCDFEnumAttributesWithCDFTag(ptr wstr ptr ptr ptr) wintrust.CryptCATCDFEnumAttributesWithCDFTag +@ stdcall CryptCATCDFEnumCatAttributes(ptr ptr ptr) wintrust.CryptCATCDFEnumCatAttributes @ stub CryptCATCDFEnumMembers -@ stub CryptCATCDFEnumMembersByCDFTag -@ stub CryptCATCDFOpen -@ stub CryptCATCatalogInfoFromContext +@ stdcall CryptCATCDFEnumMembersByCDFTag(ptr wstr ptr ptr long) wintrust.CryptCATCDFEnumMembersByCDFTag +@ stdcall CryptCATCDFOpen(wstr ptr) wintrust.CryptCATCDFOpen +@ stdcall CryptCATCatalogInfoFromContext(ptr ptr long) wintrust.CryptCATCatalogInfoFromContext @ stdcall CryptCATClose(long) wintrust.CryptCATClose -@ stub CryptCATEnumerateAttr -@ stub CryptCATEnumerateCatAttr +@ stdcall CryptCATEnumerateAttr(ptr ptr ptr) wintrust.CryptCATEnumerateAttr +@ stdcall CryptCATEnumerateCatAttr(ptr ptr) wintrust.CryptCATEnumerateCatAttr @ stdcall CryptCATEnumerateMember(long ptr) wintrust.CryptCATEnumerateMember -@ stub CryptCATGetAttrInfo -@ stub CryptCATGetCatAttrInfo -@ stub CryptCATGetMemberInfo -@ stub CryptCATHandleFromStore +@ stdcall CryptCATGetAttrInfo(ptr ptr wstr) wintrust.CryptCATGetAttrInfo +@ stdcall CryptCATGetCatAttrInfo(ptr wstr) wintrust.CryptCATGetCatAttrInfo +@ stdcall CryptCATGetMemberInfo(ptr wstr) wintrust.CryptCATGetMemberInfo +@ stdcall CryptCATHandleFromStore(ptr) wintrust.CryptCATHandleFromStore @ stdcall CryptCATOpen(wstr long long long long) wintrust.CryptCATOpen -@ stub CryptCATPersistStore -@ stub CryptCATPutAttrInfo -@ stub CryptCATPutCatAttrInfo -@ stub CryptCATPutMemberInfo -@ stub CryptCATStoreFromHandle +@ stdcall CryptCATPersistStore(ptr) wintrust.CryptCATPersistStore +@ stdcall CryptCATPutAttrInfo(ptr ptr wstr long long ptr) wintrust.CryptCATPutAttrInfo +@ stdcall CryptCATPutCatAttrInfo(ptr wstr long long ptr) wintrust.CryptCATPutCatAttrInfo +@ stdcall CryptCATPutMemberInfo(ptr wstr wstr ptr long long ptr) wintrust.CryptCATPutMemberInfo +@ stdcall CryptCATStoreFromHandle(ptr) wintrust.CryptCATStoreFromHandle @ stdcall -private DllRegisterServer() wintrust.mscat32DllRegisterServer @ stdcall -private DllUnregisterServer() wintrust.mscat32DllUnregisterServer -@ stub IsCatalogFile +@ stdcall IsCatalogFile(ptr wstr) wintrust.IsCatalogFile @ stub MsCatConstructHashTag @ stub MsCatFreeHashTag diff --git a/reactos/dll/win32/wintrust/asn.c b/reactos/dll/win32/wintrust/asn.c index d3ac3e97a11..e9d3a7f2d12 100644 --- a/reactos/dll/win32/wintrust/asn.c +++ b/reactos/dll/win32/wintrust/asn.c @@ -100,7 +100,7 @@ static BOOL WINAPI CRYPT_AsnEncodeOctets(DWORD dwCertEncodingType, DWORD *pcbEncoded) { BOOL ret = TRUE; - const CRYPT_DATA_BLOB *blob = (const CRYPT_DATA_BLOB *)pvStructInfo; + const CRYPT_DATA_BLOB *blob = pvStructInfo; DWORD bytesNeeded, lenBytes; TRACE("(%d, %p), %p, %d\n", blob->cbData, blob->pbData, pbEncoded, @@ -140,7 +140,7 @@ BOOL WINAPI WVTAsn1SpcLinkEncode(DWORD dwCertEncodingType, __TRY { - const SPC_LINK *link = (const SPC_LINK *)pvStructInfo; + const SPC_LINK *link = pvStructInfo; DWORD bytesNeeded, lenBytes; switch (link->dwLinkChoice) @@ -352,7 +352,7 @@ static BOOL WINAPI CRYPT_AsnEncodeBits(DWORD dwCertEncodingType, __TRY { - const CRYPT_BIT_BLOB *blob = (const CRYPT_BIT_BLOB *)pvStructInfo; + const CRYPT_BIT_BLOB *blob = pvStructInfo; DWORD bytesNeeded, lenBytes, dataBytes; BYTE unusedBits; @@ -426,8 +426,7 @@ static BOOL WINAPI CRYPT_AsnEncodeConstructed(DWORD dwCertEncodingType, DWORD *pcbEncoded) { BOOL ret; - const struct AsnConstructedItem *item = - (const struct AsnConstructedItem *)pvStructInfo; + const struct AsnConstructedItem *item = pvStructInfo; DWORD len; if ((ret = item->encodeFunc(dwCertEncodingType, lpszStructType, @@ -473,8 +472,7 @@ BOOL WINAPI WVTAsn1SpcPeImageDataEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded) { - const SPC_PE_IMAGE_DATA *imageData = - (const SPC_PE_IMAGE_DATA *)pvStructInfo; + const SPC_PE_IMAGE_DATA *imageData = pvStructInfo; BOOL ret = FALSE; TRACE("(0x%08x, %s, %p, %p, %p)\n", dwCertEncodingType, @@ -519,7 +517,7 @@ static BOOL WINAPI CRYPT_AsnEncodeOid(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded) { - LPCSTR pszObjId = (LPCSTR)pvStructInfo; + LPCSTR pszObjId = pvStructInfo; DWORD bytesNeeded = 0, lenBytes; BOOL ret = TRUE; int firstPos = 0; @@ -637,7 +635,7 @@ static BOOL WINAPI CRYPT_CopyEncodedBlob(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_DER_BLOB *blob = (const CRYPT_DER_BLOB *)pvStructInfo; + const CRYPT_DER_BLOB *blob = pvStructInfo; BOOL ret = TRUE; if (!pbEncoded) @@ -661,8 +659,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAlgorithmIdWithNullParams( DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_ALGORITHM_IDENTIFIER *algo = - (const CRYPT_ALGORITHM_IDENTIFIER *)pvStructInfo; + const CRYPT_ALGORITHM_IDENTIFIER *algo = pvStructInfo; static const BYTE asn1Null[] = { ASN_NULL, 0 }; static const CRYPT_DATA_BLOB nullBlob = { sizeof(asn1Null), (LPBYTE)asn1Null }; @@ -685,8 +682,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAttributeTypeValue(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_ATTRIBUTE_TYPE_VALUE *typeValue = - (const CRYPT_ATTRIBUTE_TYPE_VALUE *)pvStructInfo; + const CRYPT_ATTRIBUTE_TYPE_VALUE *typeValue = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { &typeValue->pszObjId, CRYPT_AsnEncodeOid, 0 }, { &typeValue->Value, CRYPT_CopyEncodedBlob, 0 }, @@ -706,7 +702,7 @@ static BOOL WINAPI CRYPT_AsnEncodeSPCDigest(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded) { - const struct SPCDigest *digest = (const struct SPCDigest *)pvStructInfo; + const struct SPCDigest *digest = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { &digest->DigestAlgorithm, CRYPT_AsnEncodeAlgorithmIdWithNullParams, 0 }, { &digest->Digest, CRYPT_CopyEncodedBlob, 0 }, @@ -727,8 +723,7 @@ BOOL WINAPI WVTAsn1SpcIndirectDataContentEncode(DWORD dwCertEncodingType, __TRY { - const SPC_INDIRECT_DATA_CONTENT *data = - (const SPC_INDIRECT_DATA_CONTENT *)pvStructInfo; + const SPC_INDIRECT_DATA_CONTENT *data = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { &data->Data, CRYPT_AsnEncodeAttributeTypeValue, 0 }, { &data->DigestAlgorithm, CRYPT_AsnEncodeSPCDigest, 0 }, @@ -750,7 +745,7 @@ static BOOL WINAPI CRYPT_AsnEncodeBMPString(DWORD dwCertEncodingType, DWORD *pcbEncoded) { BOOL ret = TRUE; - LPCWSTR str = (LPCWSTR)pvStructInfo; + LPCWSTR str = pvStructInfo; DWORD bytesNeeded, lenBytes, strLen; if (str) @@ -895,8 +890,7 @@ static BOOL CRYPT_AsnEncodeInteger(DWORD dwCertEncodingType, DWORD significantBytes, lenBytes, bytesNeeded; BYTE padByte = 0; BOOL pad = FALSE; - const CRYPT_INTEGER_BLOB *blob = - (const CRYPT_INTEGER_BLOB *)pvStructInfo; + const CRYPT_INTEGER_BLOB *blob = pvStructInfo; significantBytes = blob->cbData; if (significantBytes) @@ -996,7 +990,7 @@ BOOL WINAPI WVTAsn1CatMemberInfoEncode(DWORD dwCertEncodingType, __TRY { - const CAT_MEMBERINFO *info = (const CAT_MEMBERINFO *)pvStructInfo; + const CAT_MEMBERINFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { info->pwszSubjGuid, CRYPT_AsnEncodeBMPString, 0 }, { &info->dwCertVersion, CRYPT_AsnEncodeInt, 0 }, @@ -1024,7 +1018,7 @@ BOOL WINAPI WVTAsn1CatNameValueEncode(DWORD dwCertEncodingType, __TRY { - const CAT_NAMEVALUE *value = (const CAT_NAMEVALUE *)pvStructInfo; + const CAT_NAMEVALUE *value = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { value->pwszTag, CRYPT_AsnEncodeBMPString, 0 }, { &value->fdwFlags, CRYPT_AsnEncodeInt, 0 }, @@ -1215,7 +1209,7 @@ static BOOL WINAPI CRYPT_AsnDecodeOctets(DWORD dwCertEncodingType, CRYPT_DATA_BLOB *blob; BYTE lenBytes = GET_LEN_BYTES(pbEncoded[1]); - blob = (CRYPT_DATA_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->cbData = dataLen; if (dwFlags & CRYPT_DECODE_NOCOPY_FLAG) blob->pbData = (BYTE *)pbEncoded + 1 + lenBytes; @@ -1260,7 +1254,7 @@ static BOOL CRYPT_AsnDecodeSPCLinkInternal(DWORD dwCertEncodingType, } else { - PSPC_LINK link = (PSPC_LINK)pvStructInfo; + PSPC_LINK link = pvStructInfo; DWORD i; link->dwLinkChoice = SPC_URL_LINK_CHOICE; @@ -1309,7 +1303,7 @@ static BOOL CRYPT_AsnDecodeSPCLinkInternal(DWORD dwCertEncodingType, } else { - PSPC_LINK link = (PSPC_LINK)pvStructInfo; + PSPC_LINK link = pvStructInfo; link->dwLinkChoice = SPC_MONIKER_LINK_CHOICE; /* pwszFile pointer was set by caller, copy it @@ -1347,7 +1341,7 @@ static BOOL CRYPT_AsnDecodeSPCLinkInternal(DWORD dwCertEncodingType, } else { - PSPC_LINK link = (PSPC_LINK)pvStructInfo; + PSPC_LINK link = pvStructInfo; DWORD i; const BYTE *ptr = pbEncoded + 2 + lenBytes + realLenBytes; @@ -1372,7 +1366,7 @@ static BOOL CRYPT_AsnDecodeSPCLinkInternal(DWORD dwCertEncodingType, } else { - PSPC_LINK link = (PSPC_LINK)pvStructInfo; + PSPC_LINK link = pvStructInfo; link->dwLinkChoice = SPC_FILE_LINK_CHOICE; link->u.pwszFile[0] = '\0'; @@ -1415,7 +1409,7 @@ BOOL WINAPI WVTAsn1SpcLinkDecode(DWORD dwCertEncodingType, } else { - SPC_LINK *link = (SPC_LINK *)pvStructInfo; + SPC_LINK *link = pvStructInfo; link->u.pwszFile = (LPWSTR)((BYTE *)pvStructInfo + sizeof(SPC_LINK)); @@ -1655,7 +1649,7 @@ static BOOL CRYPT_AsnDecodeSequence(DWORD dwCertEncodingType, *pcbStructInfo = bytesNeeded; if (startingPointer) - nextData = (BYTE *)startingPointer; + nextData = startingPointer; else nextData = (BYTE *)pvStructInfo + structSize; memset(pvStructInfo, 0, structSize); @@ -1706,7 +1700,7 @@ static BOOL WINAPI CRYPT_AsnDecodeBitsInternal(DWORD dwCertEncodingType, { CRYPT_BIT_BLOB *blob; - blob = (CRYPT_BIT_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->cbData = dataLen - 1; blob->cUnusedBits = *(pbEncoded + 1 + GET_LEN_BYTES(pbEncoded[1])); @@ -1750,7 +1744,7 @@ static BOOL WINAPI CRYPT_AsnDecodeSPCLinkPointer(DWORD dwCertEncodingType, { BYTE lenBytes = GET_LEN_BYTES(pbEncoded[1]); DWORD size; - SPC_LINK **pLink = (SPC_LINK **)pvStructInfo; + SPC_LINK **pLink = pvStructInfo; ret = CRYPT_AsnDecodeSPCLinkInternal(dwCertEncodingType, lpszStructType, pbEncoded + 1 + lenBytes, dataLen, dwFlags, NULL, &size); @@ -1959,7 +1953,7 @@ static BOOL WINAPI CRYPT_AsnDecodeCopyBytes(DWORD dwCertEncodingType, } else { - PCRYPT_OBJID_BLOB blob = (PCRYPT_OBJID_BLOB)pvStructInfo; + PCRYPT_OBJID_BLOB blob = pvStructInfo; *pcbStructInfo = bytesNeeded; blob->cbData = cbEncoded; @@ -1978,8 +1972,7 @@ static BOOL WINAPI CRYPT_AsnDecodeAttributeTypeValue(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo) { - CRYPT_ATTRIBUTE_TYPE_VALUE *typeValue = - (CRYPT_ATTRIBUTE_TYPE_VALUE *)pvStructInfo; + CRYPT_ATTRIBUTE_TYPE_VALUE *typeValue = pvStructInfo; struct AsnDecodeSequenceItem items[] = { { ASN_OBJECTIDENTIFIER, offsetof(CRYPT_ATTRIBUTE_TYPE_VALUE, pszObjId), CRYPT_AsnDecodeOid, sizeof(LPSTR), FALSE, TRUE, @@ -2002,8 +1995,7 @@ static BOOL WINAPI CRYPT_AsnDecodeAlgorithmId(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo) { - CRYPT_ALGORITHM_IDENTIFIER *algo = - (CRYPT_ALGORITHM_IDENTIFIER *)pvStructInfo; + CRYPT_ALGORITHM_IDENTIFIER *algo = pvStructInfo; BOOL ret = TRUE; struct AsnDecodeSequenceItem items[] = { { ASN_OBJECTIDENTIFIER, offsetof(CRYPT_ALGORITHM_IDENTIFIER, pszObjId), @@ -2032,8 +2024,7 @@ static BOOL WINAPI CRYPT_AsnDecodeSPCDigest(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo) { - struct SPCDigest *digest = - (struct SPCDigest *)pvStructInfo; + struct SPCDigest *digest = pvStructInfo; struct AsnDecodeSequenceItem items[] = { { ASN_SEQUENCEOF, offsetof(struct SPCDigest, DigestAlgorithm), CRYPT_AsnDecodeAlgorithmId, sizeof(CRYPT_ALGORITHM_IDENTIFIER), @@ -2156,7 +2147,7 @@ static BOOL CRYPT_AsnDecodeInteger(const BYTE *pbEncoded, } else { - CRYPT_INTEGER_BLOB *blob = (CRYPT_INTEGER_BLOB *)pvStructInfo; + CRYPT_INTEGER_BLOB *blob = pvStructInfo; *pcbStructInfo = bytesNeeded; blob->cbData = dataLen; diff --git a/reactos/dll/win32/wintrust/crypt.c b/reactos/dll/win32/wintrust/crypt.c index 8049f33dcf9..e01a23006fa 100644 --- a/reactos/dll/win32/wintrust/crypt.c +++ b/reactos/dll/win32/wintrust/crypt.c @@ -188,6 +188,8 @@ HCATINFO WINAPI CryptCATAdminAddCatalog(HCATADMIN catAdmin, PWSTR catalogFile, HeapFree(GetProcessHeap(), 0, target); return NULL; } + SetFileAttributesW(target, FILE_ATTRIBUTE_SYSTEM); + if (!(ci = HeapAlloc(GetProcessHeap(), 0, sizeof(*ci)))) { HeapFree(GetProcessHeap(), 0, target); @@ -961,6 +963,54 @@ BOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO* pSubjectInfo, DWORD* pcb return FALSE; } + +/*********************************************************************** + * CryptCATCDFClose (WINTRUST.@) + */ +BOOL WINAPI CryptCATCDFClose(CRYPTCATCDF *pCDF) +{ + FIXME("(%p) stub\n", pCDF); + + return FALSE; +} + +/*********************************************************************** + * CryptCATCDFEnumCatAttributes (WINTRUST.@) + */ +CRYPTCATATTRIBUTE * WINAPI CryptCATCDFEnumCatAttributes(CRYPTCATCDF *pCDF, + CRYPTCATATTRIBUTE *pPrevAttr, + PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError) +{ + FIXME("(%p %p %p) stub\n", pCDF, pPrevAttr, pfnParseError); + + return NULL; +} + +/*********************************************************************** + * CryptCATCDFEnumMembersByCDFTagEx (WINTRUST.@) + */ +LPWSTR WINAPI CryptCATCDFEnumMembersByCDFTagEx(CRYPTCATCDF *pCDF, LPWSTR pwszPrevCDFTag, + PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError, + CRYPTCATMEMBER **ppMember, BOOL fContinueOnError, + LPVOID pvReserved) +{ + FIXME("(%p %s %p %p %d %p) stub\n", pCDF, debugstr_w(pwszPrevCDFTag), pfnParseError, + ppMember, fContinueOnError, pvReserved); + + return NULL; +} + +/*********************************************************************** + * CryptCATCDFOpen (WINTRUST.@) + */ +CRYPTCATCDF * WINAPI CryptCATCDFOpen(LPWSTR pwszFilePath, + PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError) +{ + FIXME("(%s %p) stub\n", debugstr_w(pwszFilePath), pfnParseError); + + return NULL; +} + static BOOL WINTRUST_GetSignedMsgFromPEFile(SIP_SUBJECTINFO *pSubjectInfo, DWORD *pdwEncodingType, DWORD dwIndex, DWORD *pcbSignedDataMsg, BYTE *pbSignedDataMsg) diff --git a/reactos/dll/win32/wintrust/softpub.c b/reactos/dll/win32/wintrust/softpub.c index e0acf0340c7..9a78838839a 100644 --- a/reactos/dll/win32/wintrust/softpub.c +++ b/reactos/dll/win32/wintrust/softpub.c @@ -795,7 +795,7 @@ HRESULT WINAPI GenericChainCertificateTrust(CRYPT_PROVIDER_DATA *data) { BOOL ret; WTD_GENERIC_CHAIN_POLICY_DATA *policyData = - (WTD_GENERIC_CHAIN_POLICY_DATA *)data->pWintrustData->pPolicyCallbackData; + data->pWintrustData->pPolicyCallbackData; TRACE("(%p)\n", data); @@ -961,7 +961,7 @@ HRESULT WINAPI GenericChainFinalProv(CRYPT_PROVIDER_DATA *data) { HRESULT err = NO_ERROR; /* not a typo, MS confused the types */ WTD_GENERIC_CHAIN_POLICY_DATA *policyData = - (WTD_GENERIC_CHAIN_POLICY_DATA *)data->pWintrustData->pPolicyCallbackData; + data->pWintrustData->pPolicyCallbackData; TRACE("(%p)\n", data); diff --git a/reactos/dll/win32/wintrust/wintrust.spec b/reactos/dll/win32/wintrust/wintrust.spec index bf5ee1f096d..9c5b1cb8e20 100644 --- a/reactos/dll/win32/wintrust/wintrust.spec +++ b/reactos/dll/win32/wintrust/wintrust.spec @@ -9,14 +9,14 @@ @ stdcall CryptCATAdminReleaseContext(long long) @ stdcall CryptCATAdminRemoveCatalog(ptr wstr long) @ stdcall CryptCATAdminResolveCatalogPath(ptr wstr ptr long) -@ stub CryptCATCDFClose +@ stdcall CryptCATCDFClose(ptr) @ stub CryptCATCDFEnumAttributes @ stub CryptCATCDFEnumAttributesWithCDFTag -@ stub CryptCATCDFEnumCatAttributes +@ stdcall CryptCATCDFEnumCatAttributes(ptr ptr ptr) @ stub CryptCATCDFEnumMembers @ stub CryptCATCDFEnumMembersByCDFTag -@ stub CryptCATCDFEnumMembersByCDFTagEx -@ stub CryptCATCDFOpen +@ stdcall CryptCATCDFEnumMembersByCDFTagEx(ptr wstr ptr ptr long ptr) +@ stdcall CryptCATCDFOpen(wstr ptr) @ stdcall CryptCATCatalogInfoFromContext(ptr ptr long) @ stdcall CryptCATClose(long) @ stdcall CryptCATEnumerateAttr(ptr ptr ptr) diff --git a/reactos/dll/win32/wintrust/wintrust_main.c b/reactos/dll/win32/wintrust/wintrust_main.c index f9d33293f5d..d6800b85f34 100644 --- a/reactos/dll/win32/wintrust/wintrust_main.c +++ b/reactos/dll/win32/wintrust/wintrust_main.c @@ -184,7 +184,7 @@ static LONG WINTRUST_DefaultVerify(HWND hwnd, GUID *actionID, goto error; } - data->hWVTStateData = (HANDLE)provData; + data->hWVTStateData = provData; provData->pWintrustData = data; if (hwnd == INVALID_HANDLE_VALUE) provData->hWndParent = GetDesktopWindow(); @@ -215,7 +215,7 @@ static LONG WINTRUST_DefaultClose(HWND hwnd, GUID *actionID, WINTRUST_DATA *data) { DWORD err = ERROR_SUCCESS; - CRYPT_PROVIDER_DATA *provData = (CRYPT_PROVIDER_DATA *)data->hWVTStateData; + CRYPT_PROVIDER_DATA *provData = data->hWVTStateData; TRACE("(%p, %s, %p)\n", hwnd, debugstr_guid(actionID), data); @@ -254,8 +254,7 @@ static LONG WINTRUST_PublishedSoftware(HWND hwnd, GUID *actionID, /* Undocumented: the published software action is passed a path, * and pSIPClientData points to a WIN_TRUST_SUBJECT_FILE. */ - LPWIN_TRUST_SUBJECT_FILE subjectFile = - (LPWIN_TRUST_SUBJECT_FILE)data->pSIPClientData; + LPWIN_TRUST_SUBJECT_FILE subjectFile = data->pSIPClientData; WINTRUST_FILE_INFO fileInfo = { sizeof(fileInfo), 0 }; TRACE("subjectFile->hFile: %p\n", subjectFile->hFile); @@ -377,7 +376,7 @@ static LONG WINTRUST_CertVerify(HWND hwnd, GUID *actionID, /* Not sure why, but native skips the policy check */ provData->psPfns->pfnCertCheckPolicy = NULL; - data->hWVTStateData = (HANDLE)provData; + data->hWVTStateData = provData; provData->pWintrustData = data; if (hwnd == INVALID_HANDLE_VALUE) provData->hWndParent = GetDesktopWindow(); @@ -584,7 +583,7 @@ LONG WINAPI WinVerifyTrust( HWND hwnd, GUID *ActionID, LPVOID ActionData ) static const GUID generic_chain_verify = WINTRUST_ACTION_GENERIC_CHAIN_VERIFY; static const GUID cert_action_verify = CERT_CERTIFICATE_ACTION_VERIFY; LONG err = ERROR_SUCCESS; - WINTRUST_DATA *actionData = (WINTRUST_DATA *)ActionData; + WINTRUST_DATA *actionData = ActionData; TRACE("(%p, %s, %p)\n", hwnd, debugstr_guid(ActionID), ActionData); dump_wintrust_data(ActionData); @@ -709,7 +708,7 @@ CRYPT_PROVIDER_PRIVDATA *WINAPI WTHelperGetProvPrivateDataFromChain( CRYPT_PROVIDER_DATA * WINAPI WTHelperProvDataFromStateData(HANDLE hStateData) { TRACE("%p\n", hStateData); - return (CRYPT_PROVIDER_DATA *)hStateData; + return hStateData; } /*********************************************************************** @@ -738,7 +737,7 @@ HANDLE WINAPI WTHelperGetFileHandle(WINTRUST_DATA *data) static BOOL WINAPI WINTRUST_enumUsages(PCCRYPT_OID_INFO pInfo, void *pvArg) { - PCCRYPT_OID_INFO **usages = (PCCRYPT_OID_INFO **)pvArg; + PCCRYPT_OID_INFO **usages = pvArg; DWORD cUsages; BOOL ret; @@ -756,7 +755,7 @@ static BOOL WINAPI WINTRUST_enumUsages(PCCRYPT_OID_INFO pInfo, void *pvArg) */ for (cUsages = 0, ptr = *usages; *ptr; ptr++, cUsages++) ; - *usages = WINTRUST_ReAlloc((CRYPT_OID_INFO *)*usages, + *usages = WINTRUST_ReAlloc(*usages, (cUsages + 2) * sizeof(PCCRYPT_OID_INFO)); } if (*usages) @@ -809,7 +808,7 @@ BOOL WINAPI WTHelperGetKnownUsages(DWORD action, PCCRYPT_OID_INFO **usages) } else if (action == 2) { - WINTRUST_Free((CRYPT_OID_INFO *)*usages); + WINTRUST_Free(*usages); *usages = NULL; ret = TRUE; } diff --git a/reactos/include/psdk/mscat.h b/reactos/include/psdk/mscat.h index 5e7e09765e2..7c5c86b71b0 100644 --- a/reactos/include/psdk/mscat.h +++ b/reactos/include/psdk/mscat.h @@ -28,16 +28,46 @@ typedef HANDLE HCATINFO; extern "C" { #endif +#define CRYPTCAT_OPEN_CREATENEW 0x00000001 +#define CRYPTCAT_OPEN_ALWAYS 0x00000002 +#define CRYPTCAT_OPEN_EXISTING 0x00000004 +#define CRYPTCAT_OPEN_EXCLUDE_PAGE_HASHES 0x00010000 +#define CRYPTCAT_OPEN_INCLUDE_PAGE_HASHES 0x00020000 +#define CRYPTCAT_OPEN_VERIFYSIGHASH 0x10000000 +#define CRYPTCAT_OPEN_NO_CONTENT_HCRYPTMSG 0x20000000 +#define CRYPTCAT_OPEN_SORTED 0x40000000 +#define CRYPTCAT_OPEN_FLAGS_MASK 0xffff0000 -#define CRYPTCAT_OPEN_CREATENEW 1 -#define CRYPTCAT_OPEN_ALWAYS 2 -#define CRYPTCAT_OPEN_EXISTING 4 +#define CRYPTCAT_E_AREA_HEADER 0x00000000 +#define CRYPTCAT_E_AREA_MEMBER 0x00010000 +#define CRYPTCAT_E_AREA_ATTRIBUTE 0x00020000 +#define CRYPTCAT_E_CDF_UNSUPPORTED 0x00000001 +#define CRYPTCAT_E_CDF_DUPLICATE 0x00000002 +#define CRYPTCAT_E_CDF_TAGNOTFOUND 0x00000004 +#define CRYPTCAT_E_CDF_MEMBER_FILE_PATH 0x00010001 +#define CRYPTCAT_E_CDF_MEMBER_INDIRECTDATA 0x00010002 +#define CRYPTCAT_E_CDF_MEMBER_FILENOTFOUND 0x00010004 + +#define CRYPTCAT_E_CDF_BAD_GUID_CONV 0x00020001 +#define CRYPTCAT_E_CDF_ATTR_TOOFEWVALUES 0x00020002 +#define CRYPTCAT_E_CDF_ATTR_TYPECOMBO 0x00020004 #include -typedef struct CRYPTCATMEMBER_ { +typedef struct CRYPTCATATTRIBUTE_ +{ + DWORD cbStruct; + LPWSTR pwszReferenceTag; + DWORD dwAttrTypeAndAction; + DWORD cbValue; + BYTE *pbValue; + DWORD dwReserved; +} CRYPTCATATTRIBUTE; + +typedef struct CRYPTCATMEMBER_ +{ DWORD cbStruct; LPWSTR pwszReferenceTag; LPWSTR pwszFileName; @@ -51,25 +81,27 @@ typedef struct CRYPTCATMEMBER_ { CRYPT_ATTR_BLOB sEncodedMemberInfo; } CRYPTCATMEMBER; -typedef struct CRYPTCATATTRIBUTE_ -{ - DWORD cbStruct; - LPWSTR pwszReferenceTag; - DWORD dwAttrTypeAndAction; - DWORD cbValue; - BYTE *pbValue; - DWORD dwReserved; -}CRYPTCATATTRIBUTE; - -typedef struct CATALOG_INFO_ +typedef struct CATALOG_INFO_ { DWORD cbStruct; WCHAR wszCatalogFile[MAX_PATH]; } CATALOG_INFO; +typedef struct CRYPTCATCDF_ +{ + DWORD cbStruct; + HANDLE hFile; + DWORD dwCurFilePos; + DWORD dwLastMemberOffset; + BOOL fEOF; + LPWSTR pwszResultDir; + HANDLE hCATStore; +} CRYPTCATCDF; #include +typedef void (WINAPI *PFN_CDF_PARSE_ERROR_CALLBACK)(DWORD, DWORD, WCHAR *); + BOOL WINAPI CryptCATAdminAcquireContext(HCATADMIN*,const GUID*,DWORD); HCATINFO WINAPI CryptCATAdminAddCatalog(HCATADMIN,PWSTR,PWSTR,DWORD); BOOL WINAPI CryptCATAdminCalcHashFromFileHandle(HANDLE,DWORD*,BYTE*,DWORD); @@ -77,13 +109,23 @@ HCATINFO WINAPI CryptCATAdminEnumCatalogFromHash(HCATADMIN,BYTE*,DWORD,DWORD,HC BOOL WINAPI CryptCATAdminReleaseCatalogContext(HCATADMIN,HCATINFO,DWORD); BOOL WINAPI CryptCATAdminReleaseContext(HCATADMIN,DWORD); BOOL WINAPI CryptCATAdminRemoveCatalog(HCATADMIN,LPCWSTR,DWORD); -BOOL WINAPI CryptCATClose(HANDLE); -BOOL WINAPI CryptCATCatalogInfoFromContext(HCATINFO,CATALOG_INFO*,DWORD); - -CRYPTCATMEMBER* WINAPI CryptCATEnumerateMember(HANDLE,CRYPTCATMEMBER*); +BOOL WINAPI CryptCATAdminResolveCatalogPath(HCATADMIN, WCHAR *, CATALOG_INFO *, DWORD); +BOOL WINAPI CryptCATCatalogInfoFromContext(HCATINFO, CATALOG_INFO *, DWORD); +BOOL WINAPI CryptCATCDFClose(CRYPTCATCDF *); +CRYPTCATATTRIBUTE * WINAPI CryptCATCDFEnumCatAttributes(CRYPTCATCDF *, CRYPTCATATTRIBUTE *, + PFN_CDF_PARSE_ERROR_CALLBACK); +LPWSTR WINAPI CryptCATCDFEnumMembersByCDFTagEx(CRYPTCATCDF *, LPWSTR, + PFN_CDF_PARSE_ERROR_CALLBACK, + CRYPTCATMEMBER **, BOOL, LPVOID); +CRYPTCATCDF * WINAPI CryptCATCDFOpen(LPWSTR, PFN_CDF_PARSE_ERROR_CALLBACK); +BOOL WINAPI CryptCATClose(HANDLE); +CRYPTCATATTRIBUTE * WINAPI CryptCATEnumerateAttr(HANDLE, CRYPTCATMEMBER *, CRYPTCATATTRIBUTE *); +CRYPTCATATTRIBUTE * WINAPI CryptCATEnumerateCatAttr(HANDLE, CRYPTCATATTRIBUTE *); +CRYPTCATMEMBER * WINAPI CryptCATEnumerateMember(HANDLE,CRYPTCATMEMBER *); +CRYPTCATATTRIBUTE * WINAPI CryptCATGetAttrInfo(HANDLE, CRYPTCATMEMBER *, LPWSTR); +CRYPTCATATTRIBUTE * WINAPI CryptCATGetCatAttrInfo(HANDLE, LPWSTR); +CRYPTCATMEMBER * WINAPI CryptCATGetMemberInfo(HANDLE, LPWSTR); HANDLE WINAPI CryptCATOpen(LPWSTR,DWORD,HCRYPTPROV,DWORD,DWORD); -CRYPTCATATTRIBUTE* WINAPI CryptCATEnumerateAttr(HANDLE hCatalog, CRYPTCATMEMBER*,CRYPTCATATTRIBUTE*); -CRYPTCATATTRIBUTE* WINAPI CryptCATEnumerateCatAttr(HANDLE,CRYPTCATATTRIBUTE*); #ifdef __cplusplus }