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(&reg, 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, &reg))
+        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