Juan Lang : cryptdlg: Implement DllRegisterServer/DllUnregisterServer.
Alexandre Julliard
julliard at winehq.org
Mon Jun 30 08:26:53 CDT 2008
Module: wine
Branch: master
Commit: 60bb8bd808c7c501a3ff24382edbd47fd8b25a32
URL: http://source.winehq.org/git/wine.git/?a=commit;h=60bb8bd808c7c501a3ff24382edbd47fd8b25a32
Author: Juan Lang <juan.lang at gmail.com>
Date: Sat Jun 28 09:45:04 2008 -0700
cryptdlg: Implement DllRegisterServer/DllUnregisterServer.
---
dlls/cryptdlg/Makefile.in | 2 +-
dlls/cryptdlg/cryptdlg.spec | 4 +-
dlls/cryptdlg/main.c | 56 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 59 insertions(+), 3 deletions(-)
diff --git a/dlls/cryptdlg/Makefile.in b/dlls/cryptdlg/Makefile.in
index 612a90d..bb06a0b 100644
--- a/dlls/cryptdlg/Makefile.in
+++ b/dlls/cryptdlg/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = cryptdlg.dll
-IMPORTS = crypt32 kernel32
+IMPORTS = crypt32 wintrust kernel32
C_SRCS = \
main.c
diff --git a/dlls/cryptdlg/cryptdlg.spec b/dlls/cryptdlg/cryptdlg.spec
index 135f803..6556944 100644
--- a/dlls/cryptdlg/cryptdlg.spec
+++ b/dlls/cryptdlg/cryptdlg.spec
@@ -15,7 +15,7 @@
15 stub CertSelectCertificateW
16 stub CertViewPropertiesA
17 stub CertViewPropertiesW
-18 stub DllRegisterServer
-19 stub DllUnregisterServer
+18 stdcall -private DllRegisterServer()
+19 stdcall -private DllUnregisterServer()
20 stdcall GetFriendlyNameOfCertA(ptr ptr long)
21 stdcall GetFriendlyNameOfCertW(ptr ptr long)
diff --git a/dlls/cryptdlg/main.c b/dlls/cryptdlg/main.c
index 624a3cd..316d83e 100644
--- a/dlls/cryptdlg/main.c
+++ b/dlls/cryptdlg/main.c
@@ -104,3 +104,59 @@ HRESULT WINAPI CertTrustFinalPolicy(CRYPT_PROVIDER_DATA *pProvData)
FIXME("(%p)\n", pProvData);
return E_NOTIMPL;
}
+
+/***********************************************************************
+ * DllRegisterServer (CRYPTDLG.@)
+ */
+HRESULT WINAPI DllRegisterServer(void)
+{
+ static WCHAR cryptdlg[] = { 'c','r','y','p','t','d','l','g','.',
+ 'd','l','l',0 };
+ static WCHAR wintrust[] = { 'w','i','n','t','r','u','s','t','.',
+ 'd','l','l',0 };
+ static WCHAR certTrustInit[] = { 'C','e','r','t','T','r','u','s','t',
+ 'I','n','i','t',0 };
+ static WCHAR wintrustCertificateTrust[] = { 'W','i','n','t','r','u','s','t',
+ 'C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t',0 };
+ static WCHAR certTrustCertPolicy[] = { 'C','e','r','t','T','r','u','s','t',
+ 'C','e','r','t','P','o','l','i','c','y',0 };
+ static WCHAR certTrustFinalPolicy[] = { 'C','e','r','t','T','r','u','s','t',
+ 'F','i','n','a','l','P','o','l','i','c','y',0 };
+ static WCHAR certTrustCleanup[] = { 'C','e','r','t','T','r','u','s','t',
+ 'C','l','e','a','n','u','p',0 };
+ CRYPT_REGISTER_ACTIONID reg;
+ GUID guid = CERT_CERTIFICATE_ACTION_VERIFY;
+ HRESULT hr = S_OK;
+
+ memset(®, 0, sizeof(reg));
+ reg.cbStruct = sizeof(reg);
+ reg.sInitProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
+ reg.sInitProvider.pwszDLLName = cryptdlg;
+ reg.sInitProvider.pwszFunctionName = certTrustInit;
+ reg.sCertificateProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
+ reg.sCertificateProvider.pwszDLLName = wintrust;
+ reg.sCertificateProvider.pwszFunctionName = wintrustCertificateTrust;
+ reg.sCertificatePolicyProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
+ reg.sCertificatePolicyProvider.pwszDLLName = cryptdlg;
+ reg.sCertificatePolicyProvider.pwszFunctionName = certTrustCertPolicy;
+ reg.sFinalPolicyProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
+ reg.sFinalPolicyProvider.pwszDLLName = cryptdlg;
+ reg.sFinalPolicyProvider.pwszFunctionName = certTrustFinalPolicy;
+ reg.sCleanupProvider.cbStruct = sizeof(CRYPT_TRUST_REG_ENTRY);
+ reg.sCleanupProvider.pwszDLLName = cryptdlg;
+ reg.sCleanupProvider.pwszFunctionName = certTrustCleanup;
+ if (!WintrustAddActionID(&guid, WT_ADD_ACTION_ID_RET_RESULT_FLAG, ®))
+ hr = GetLastError();
+ return hr;
+}
+
+/***********************************************************************
+ * DllUnregisterServer (CRYPTDLG.@)
+ */
+HRESULT WINAPI DllUnregisterServer(void)
+{
+ GUID guid = CERT_CERTIFICATE_ACTION_VERIFY;
+
+ WintrustRemoveActionID(&guid);
+ return S_OK;
+}
More information about the wine-cvs
mailing list