Juan Lang : msisip: Implement DllRegisterServer/DllUnregisterServer.

Alexandre Julliard julliard at winehq.org
Fri Aug 1 05:33:52 CDT 2008


Module: wine
Branch: master
Commit: 8fbd2c851441162a9523f7c86ceb6acae9e7ebef
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8fbd2c851441162a9523f7c86ceb6acae9e7ebef

Author: Juan Lang <juan.lang at gmail.com>
Date:   Thu Jul 31 08:47:02 2008 -0700

msisip: Implement DllRegisterServer/DllUnregisterServer.

---

 dlls/msisip/Makefile.in |    2 +-
 dlls/msisip/main.c      |   50 +++++++++++++++++++++++++++++++++++++++++++++++
 dlls/msisip/msisip.spec |    4 +-
 3 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/dlls/msisip/Makefile.in b/dlls/msisip/Makefile.in
index 4106f63..51f6ee9 100644
--- a/dlls/msisip/Makefile.in
+++ b/dlls/msisip/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = msisip.dll
-IMPORTS   = kernel32
+IMPORTS   = crypt32 kernel32
 
 C_SRCS = \
 	main.c
diff --git a/dlls/msisip/main.c b/dlls/msisip/main.c
index c9dd75c..04ba033 100644
--- a/dlls/msisip/main.c
+++ b/dlls/msisip/main.c
@@ -20,6 +20,8 @@
 #include <stdarg.h>
 #include "windef.h"
 #include "winbase.h"
+#include "wincrypt.h"
+#include "mssip.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(msisip);
@@ -43,3 +45,51 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 
     return TRUE;
 }
+
+static GUID mySubject = { 0x000c10f1, 0x0000, 0x0000,
+ { 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 }};
+
+/***********************************************************************
+ *              DllRegisterServer (MSISIP.@)
+ */
+HRESULT WINAPI DllRegisterServer(void)
+{
+    static WCHAR msisip[] = { 'M','S','I','S','I','P','.','D','L','L',0 };
+    static WCHAR getSignedDataMsg[] = { 'M','s','i','S','I','P','G','e','t',
+     'S','i','g','n','e','d','D','a','t','a','M','s','g',0 };
+    static WCHAR putSignedDataMsg[] = { 'M','s','i','S','I','P','P','u','t',
+     'S','i','g','n','e','d','D','a','t','a','M','s','g',0 };
+    static WCHAR createIndirectData[] = { 'M','s','i','S','I','P',
+     'C','r','e','a','t','e','I','n','d','i','r','e','c','t','D','a','t','a',
+     0 };
+    static WCHAR verifyIndirectData[] = { 'M','s','i','S','I','P',
+     'V','e','r','i','f','y','I','n','d','i','r','e','c','t','D','a','t','a',
+     0 };
+    static WCHAR removeSignedDataMsg[] = { 'M','s','i','S','I','P','R','e','m',
+     'o','v','e','S','i','g','n','e','d','D','a','t','a','M','s','g', 0 };
+    static WCHAR isMyTypeOfFile[] = { 'M','s','i','S','I','P',
+     'I','s','M','y','T','y','p','e','O','f','F','i','l','e',0 };
+
+    SIP_ADD_NEWPROVIDER prov;
+
+    memset(&prov, 0, sizeof(prov));
+    prov.cbStruct = sizeof(prov);
+    prov.pwszDLLFileName = msisip;
+    prov.pgSubject = &mySubject;
+    prov.pwszGetFuncName = getSignedDataMsg;
+    prov.pwszPutFuncName = putSignedDataMsg;
+    prov.pwszCreateFuncName = createIndirectData;
+    prov.pwszVerifyFuncName = verifyIndirectData;
+    prov.pwszRemoveFuncName = removeSignedDataMsg;
+    prov.pwszIsFunctionNameFmt2 = isMyTypeOfFile;
+    return CryptSIPAddProvider(&prov) ? S_OK : S_FALSE;
+}
+
+/***********************************************************************
+ *              DllUnregisterServer (MSISIP.@)
+ */
+HRESULT WINAPI DllUnregisterServer(void)
+{
+    CryptSIPRemoveProvider(&mySubject);
+    return S_OK;
+}
diff --git a/dlls/msisip/msisip.spec b/dlls/msisip/msisip.spec
index 0b682b6..cfe1799 100644
--- a/dlls/msisip/msisip.spec
+++ b/dlls/msisip/msisip.spec
@@ -4,5 +4,5 @@
 8 stub MsiSIPRemoveSignedDataMsg
 9 stub MsiSIPCreateIndirectData
 10 stub MsiSIPVerifyIndirectData
-11 stub DllRegisterServer
-12 stub DllUnregisterServer
+11 stdcall DllRegisterServer()
+12 stdcall DllUnregisterServer()




More information about the wine-cvs mailing list