From: Philippe Groarke Subject: crypt32: Add OCSP stubs. Message-Id: <1439049433-5189-2-git-send-email-philippe.groarke@gmail.com> Date: Sat, 8 Aug 2015 11:57:13 -0400 This is my first attempt at adding stubs to wine. I needed them while I was debugging another application. This can be useful to identify problems/crashes in applications that need OCSP. I tried to follow the stub guide and other examples throughout the code as thoroughly as possible. --- dlls/crypt32/cert.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ dlls/crypt32/crypt32.spec | 6 ++++++ include/wincrypt.h | 24 ++++++++++++++++++++++++ 3 files changed, 76 insertions(+) diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index ba804e0..d0c36f0 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -3461,3 +3461,49 @@ const void * WINAPI CertCreateContext(DWORD dwContextType, DWORD dwEncodingType, return NULL; } } + +/* OCSP functions */ +void WINAPI CertAddRefServerOcspResponse( + HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse) +{ + FIXME("(%p): stub\n", hServerOcspResponse); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); +} + +void WINAPI CertAddRefServerOcspResponseContext( + PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext) +{ + FIXME("(%p): stub\n", pServerOcspResponseContext); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); +} + +void WINAPI CertCloseServerOcspResponse( + HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags) +{ + FIXME("(%p, %d): stub\n", hServerOcspResponse, dwFlags); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); +} + +void WINAPI CertFreeServerOcspResponseContext( + PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext) +{ + FIXME("(%p): stub\n", pServerOcspResponseContext); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); +} + +PCCERT_SERVER_OCSP_RESPONSE_CONTEXT WINAPI CertGetServerOcspResponseContext( + HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags, + LPVOID pvReserved) +{ + FIXME("(%p, %d, %p): stub\n", hServerOcspResponse, dwFlags, pvReserved); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return NULL; +} + +HCERT_SERVER_OCSP_RESPONSE WINAPI CertOpenServerOcspResponse( + PCCERT_CHAIN_CONTEXT pChainContext, DWORD dwFlags, LPVOID pvReserved) +{ + FIXME("(%p, %d, %p): stub\n", pChainContext, dwFlags, pvReserved); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return NULL; +} diff --git a/dlls/crypt32/crypt32.spec b/dlls/crypt32/crypt32.spec index e639d7c..b21dcff 100644 --- a/dlls/crypt32/crypt32.spec +++ b/dlls/crypt32/crypt32.spec @@ -237,3 +237,9 @@ @ stub RegQueryInfoKeyU @ stub RegQueryValueExU @ stub RegSetValueExU +@ stdcall CertAddRefServerOcspResponse(ptr) +@ stdcall CertAddRefServerOcspResponseContext(ptr); +@ stdcall CertCloseServerOcspResponse(ptr long); +@ stdcall CertFreeServerOcspResponseContext(ptr); +@ stdcall CertGetServerOcspResponseContext(ptr long ptr); +@ stdcall CertOpenServerOcspResponse(ptr long ptr); diff --git a/include/wincrypt.h b/include/wincrypt.h index 55c9509..40fe302 100644 --- a/include/wincrypt.h +++ b/include/wincrypt.h @@ -3905,6 +3905,15 @@ typedef BOOL (WINAPI *PFN_CMSG_IMPORT_KEY_TRANS)( #define EXPORT_PRIVATE_KEYS 0x00000004 #define PKCS12_EXPORT_RESERVED_MASK 0xffff0000 +typedef void *HCERT_SERVER_OCSP_RESPONSE; + +typedef struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT { + DWORD cbSize; + BYTE *pbEncodedOcspResponse; + DWORD cbEncodedOcspResponse; +} CERT_SERVER_OCSP_RESPONSE_CONTEXT, *PCERT_SERVER_OCSP_RESPONSE_CONTEXT, + *PCCERT_SERVER_OCSP_RESPONSE_CONTEXT; + #define CRYPT_USERDATA 0x00000001 /* function declarations */ @@ -4556,6 +4565,21 @@ BOOL WINAPI PFXExportCertStore(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, BOOL WINAPI PFXVerifyPassword(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags); +/* OCSP functions */ +VOID WINAPI CertAddRefServerOcspResponse( + HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse); +VOID WINAPI CertAddRefServerOcspResponseContext( + PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext); +VOID WINAPI CertCloseServerOcspResponse( + HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags); +VOID WINAPI CertFreeServerOcspResponseContext( + PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext); +PCCERT_SERVER_OCSP_RESPONSE_CONTEXT WINAPI CertGetServerOcspResponseContext( + HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags, + LPVOID pvReserved); +HCERT_SERVER_OCSP_RESPONSE WINAPI CertOpenServerOcspResponse( + PCCERT_CHAIN_CONTEXT pChainContext, DWORD dwFlags, LPVOID pvReserved); + /* cryptnet.dll functions */ BOOL WINAPI CryptCancelAsyncRetrieval(HCRYPTASYNC hAsyncRetrieval); -- 2.4.5