diff --git a/dlls/wintrust/wintrust.spec b/dlls/wintrust/wintrust.spec
index 0627711f5fb..53a246882cd 100644
--- a/dlls/wintrust/wintrust.spec
+++ b/dlls/wintrust/wintrust.spec
@@ -50,7 +50,7 @@
 @ stdcall GenericChainFinalProv(ptr)
 @ stdcall HTTPSCertificateTrust(ptr)
 @ stdcall HTTPSFinalProv(ptr)
-@ stub IsCatalogFile
+@ stdcall IsCatalogFile(ptr wstr)
 @ stub MsCatConstructHashTag
 @ stub MsCatFreeHashTag
 @ stub OfficeCleanupPolicy
diff --git a/dlls/wintrust/wintrust_main.c b/dlls/wintrust/wintrust_main.c
index 1c87b6ee07f..302b2bd4283 100644
--- a/dlls/wintrust/wintrust_main.c
+++ b/dlls/wintrust/wintrust_main.c
@@ -1201,3 +1201,18 @@ HRESULT WINAPI WTHelperCertCheckValidSignature(CRYPT_PROVIDER_DATA *pProvData)
     FIXME("Stub\n");
     return S_OK;
 }
+
+/***********************************************************************
+ *              IsCatalogFile
+ */
+BOOL WINAPI IsCatalogFile(HANDLE hFile, WCHAR *pwszFileName)
+{
+    static const GUID catGUID = { 0xDE351A43, 0x8E59, 0x11D0, { 0x8C,0x47,0x00,0xC0,0x4F,0xC2,0x95,0xEE }};
+    GUID guid;
+
+    TRACE("(%p, %s)\n", hFile, debugstr_w(pwszFileName));
+
+    if (!CryptSIPRetrieveSubjectGuid(pwszFileName, hFile, &guid))
+        return FALSE;
+    return IsEqualGUID(&guid, &catGUID);
+}