From 615d023bf1468c27444996f5e9d99991cd0e3779 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 23 Dec 2008 11:50:46 +0100 Subject: [PATCH] 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 7b30edefedc..44ab4bb9be0 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 6f8328281d6..bc5fd4145e5 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 -- 2.11.4.GIT