Module: wine Branch: master Commit: 615d023bf1468c27444996f5e9d99991cd0e3779 URL: http://source.winehq.org/git/wine.git/?a=commit;h=615d023bf1468c27444996f5e9...
Author: Hans Leidekker hans@codeweavers.com Date: Tue Dec 23 11:50:46 2008 +0100
wintrust: Implement CryptCATAdminResolveCatalogPath and CryptCATCatalogInfoFromContext.
---
dlls/wintrust/crypt.c | 42 ++++++++++++++++++++++++++++++++++++++++++ dlls/wintrust/wintrust.spec | 4 ++-- 2 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/dlls/wintrust/crypt.c b/dlls/wintrust/crypt.c index 7b30ede..44ab4bb 100644 --- a/dlls/wintrust/crypt.c +++ b/dlls/wintrust/crypt.c @@ -475,6 +475,29 @@ BOOL WINAPI CryptCATAdminRemoveCatalog(HCATADMIN hCatAdmin, LPCWSTR pwszCatalogF }
/*********************************************************************** + * CryptCATAdminResolveCatalogPath (WINTRUST.@) + */ +BOOL WINAPI CryptCATAdminResolveCatalogPath(HCATADMIN hcatadmin, WCHAR *catalog_file, + CATALOG_INFO *info, DWORD flags) +{ + static const WCHAR slashW[] = {'\',0}; + struct catadmin *ca = hcatadmin; + + TRACE("%p %s %p %x\n", hcatadmin, debugstr_w(catalog_file), info, flags); + + if (!ca || ca->magic != CATADMIN_MAGIC || !info || info->cbStruct != sizeof(*info) || flags) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + strcpyW(info->wszCatalogFile, ca->path); + strcatW(info->wszCatalogFile, slashW); + strcatW(info->wszCatalogFile, catalog_file); + + return TRUE; +} + +/*********************************************************************** * CryptCATClose (WINTRUST.@) */ BOOL WINAPI CryptCATClose(HANDLE hCatalog) @@ -683,6 +706,25 @@ out: }
/*********************************************************************** + * CryptCATCatalogInfoFromContext (WINTRUST.@) + */ +BOOL WINAPI CryptCATCatalogInfoFromContext(HCATINFO hcatinfo, CATALOG_INFO *info, DWORD flags) +{ + struct catinfo *ci = hcatinfo; + + TRACE("%p, %p, %x\n", hcatinfo, info, flags); + + if (!hcatinfo || hcatinfo == INVALID_HANDLE_VALUE || ci->magic != CATINFO_MAGIC || + flags || !info || info->cbStruct != sizeof(*info)) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + strcpyW(info->wszCatalogFile, ci->file); + return TRUE; +} + +/*********************************************************************** * CryptCATOpen (WINTRUST.@) */ HANDLE WINAPI CryptCATOpen(LPWSTR pwszFileName, DWORD fdwOpenFlags, HCRYPTPROV hProv, diff --git a/dlls/wintrust/wintrust.spec b/dlls/wintrust/wintrust.spec index 6f83282..bc5fd41 100644 --- a/dlls/wintrust/wintrust.spec +++ b/dlls/wintrust/wintrust.spec @@ -8,7 +8,7 @@ @ stdcall CryptCATAdminReleaseCatalogContext(long long long) @ stdcall CryptCATAdminReleaseContext(long long) @ stdcall CryptCATAdminRemoveCatalog(ptr wstr long) -@ stub CryptCATAdminResolveCatalogPath +@ stdcall CryptCATAdminResolveCatalogPath(ptr wstr ptr long) @ stub CryptCATCDFClose @ stub CryptCATCDFEnumAttributes @ stub CryptCATCDFEnumAttributesWithCDFTag @@ -17,7 +17,7 @@ @ stub CryptCATCDFEnumMembersByCDFTag @ stub CryptCATCDFEnumMembersByCDFTagEx @ stub CryptCATCDFOpen -@ stub CryptCATCatalogInfoFromContext +@ stdcall CryptCATCatalogInfoFromContext(ptr ptr long) @ stdcall CryptCATClose(long) @ stub CryptCATEnumerateAttr @ stub CryptCATEnumerateCatAttr