diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index 23e4a3c178f..1ec3a167bbd 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -3288,7 +3288,7 @@ BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV hCryptProv, HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, DWORD dwFlags) { FIXME("stub: %s %lx\n", debugstr_a(pszFuncName), dwFlags); - return NULL; + return (HCRYPTOIDFUNCSET)0xbaadf00d; } BOOL WINAPI CryptUnregisterDefaultOIDFunction(DWORD dwEncodingType, diff --git a/dlls/crypt32/crypt32.spec b/dlls/crypt32/crypt32.spec index 64db92d0a7e..fa513d47be8 100644 --- a/dlls/crypt32/crypt32.spec +++ b/dlls/crypt32/crypt32.spec @@ -104,11 +104,11 @@ @ stub CryptFormatObject @ stub CryptFreeOIDFunctionAddress @ stub CryptGetAsyncParam -@ stub CryptGetDefaultOIDDllList +@ stdcall CryptGetDefaultOIDDllList(long long ptr ptr) @ stub CryptGetDefaultOIDFunctionAddress @ stub CryptGetMessageCertificates @ stub CryptGetMessageSignerCount -@ stub CryptGetOIDFunctionAddress +@ stdcall CryptGetOIDFunctionAddress(long long str long ptr ptr) @ stdcall CryptGetOIDFunctionValue(long str str wstr ptr ptr ptr) @ stdcall CryptHashCertificate(long long long ptr long ptr ptr) @ stub CryptHashMessage @@ -118,7 +118,7 @@ @ stdcall CryptImportPublicKeyInfo(long long ptr ptr) @ stdcall CryptImportPublicKeyInfoEx(long long ptr long long ptr ptr) @ stdcall CryptInitOIDFunctionSet(str long) -@ stub CryptInstallOIDFunctionAddress +@ stdcall CryptInstallOIDFunctionAddress(ptr long str long ptr long) @ stub CryptLoadSip @ stdcall CryptMemAlloc(long) @ stdcall CryptMemFree(ptr) @@ -166,12 +166,12 @@ @ stub CryptVerifyMessageSignatureWithKey @ stub CryptVerifySignatureU @ stdcall I_CryptAllocTls() -@ stdcall I_CryptCreateLruCache(long long) +@ stdcall I_CryptCreateLruCache(ptr ptr) @ stub I_CryptCreateLruEntry @ stdcall I_CryptDetachTls(long) -@ stdcall I_CryptFindLruEntryData(long) -@ stdcall I_CryptFlushLruCache(long) -@ stdcall I_CryptFreeLruCache(long) +@ stdcall I_CryptFindLruEntryData(long long long) +@ stdcall I_CryptFlushLruCache(ptr long long) +@ stdcall I_CryptFreeLruCache(ptr long long) @ stdcall I_CryptFreeTls(long long) @ stub I_CryptGetDefaultCryptProv @ stub I_CryptGetDefaultCryptProvForEncrypt diff --git a/dlls/crypt32/main.c b/dlls/crypt32/main.c index 039449fbc23..a26499a0274 100644 --- a/dlls/crypt32/main.c +++ b/dlls/crypt32/main.c @@ -53,30 +53,37 @@ HCRYPTPROV CRYPT_GetDefaultProvider(void) return hDefProv; } -/* this function is called by Internet Explorer when it is about to verify a downloaded component */ -BOOL WINAPI I_CryptCreateLruCache(DWORD x, DWORD y) +typedef void * HLRUCACHE; + +/* this function is called by Internet Explorer when it is about to verify a + * downloaded component. The first parameter appears to be a pointer to an + * unknown type, native fails unless it points to a buffer of at least 20 bytes. + * The second parameter appears to be an out parameter, whatever it's set to is + * passed (by cryptnet.dll) to I_CryptFlushLruCache. + */ +BOOL WINAPI I_CryptCreateLruCache(void *unknown, HLRUCACHE *out) { - FIXME("stub!\n"); + FIXME("(%p, %p): stub!\n", unknown, out); + *out = (void *)0xbaadf00d; + return TRUE; +} + +BOOL WINAPI I_CryptFindLruEntryData(DWORD unk0, DWORD unk1, DWORD unk2) +{ + FIXME("(%08lx, %08lx, %08lx): stub!\n", unk0, unk1, unk2); return FALSE; } -/* these functions all have an unknown number of args */ -BOOL WINAPI I_CryptFindLruEntryData(DWORD x) +DWORD WINAPI I_CryptFlushLruCache(HLRUCACHE h, DWORD unk0, DWORD unk1) { - FIXME("stub!\n"); - return FALSE; + FIXME("(%p, %08lx, %08lx): stub!\n", h, unk0, unk1); + return 0; } -BOOL WINAPI I_CryptFlushLruCache(DWORD x) +HLRUCACHE WINAPI I_CryptFreeLruCache(HLRUCACHE h, DWORD unk0, DWORD unk1) { - FIXME("stub!\n"); - return FALSE; -} - -BOOL WINAPI I_CryptFreeLruCache(DWORD x) -{ - FIXME("stub!\n"); - return FALSE; + FIXME("(%p, %08lx, %08lx): stub!\n", h, unk0, unk1); + return h; } BOOL WINAPI CryptSIPRemoveProvider(GUID *pgProv) @@ -215,6 +222,37 @@ BOOL WINAPI CryptRegisterDefaultOIDFunction(DWORD dwEncodingType, return FALSE; } +BOOL WINAPI CryptInstallOIDFunctionAddress(HMODULE hModule, + DWORD dwEncodingType, LPCSTR pszFuncName, DWORD cFuncEntry, + const CRYPT_OID_FUNC_ENTRY rgFuncEntry[], DWORD dwFlags) +{ + FIXME("(%p, %ld, %s, %ld, %p, %08lx): stub\n", hModule, dwEncodingType, + debugstr_a(pszFuncName), cFuncEntry, rgFuncEntry, dwFlags); + return TRUE; +} + +BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, + DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, + HCRYPTOIDFUNCADDR *phFuncAddr) +{ + FIXME("(%p, %ld, %s, %08lx, %p, %p): stub\n", hFuncSet, dwEncodingType, + debugstr_a(pszOID), dwFlags, ppvFuncAddr, phFuncAddr); + return FALSE; +} + +BOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet, + DWORD dwEncodingType, LPWSTR pwszDllList, DWORD *pcchDllList) +{ + FIXME("(%p, %ld, %p, %p): stub\n", hFuncSet, dwEncodingType, pwszDllList, + pcchDllList); + + if (*pcchDllList) + *pwszDllList = '\0'; + *pcchDllList = 1; + + return TRUE; +} + struct OIDToAlgID { LPCSTR oid;