crypt32(2/2): Implement CryptSIPGetSignedDataMsg...

Juan Lang juan.lang at gmail.com
Mon Jul 9 19:10:03 CDT 2007


CryptSIPPutSignedDataMsg, CryptSIPCreateIndirectData,
CryptSIPVerifyIndirectData,
and CryptSIPRemoveSignedDataMsg

This isn't any different from my last send of this, I'm resending to
avoid any confusion.

Depends on the patch implementing CryptSIPLoad.
--Juan
-------------- next part --------------
From ffd3965855dcc7172bd6f5c0f3d80456a5fd2d3f Mon Sep 17 00:00:00 2001
From: Juan Lang <juanlang at juan.corp.google.com>
Date: Mon, 9 Jul 2007 13:44:38 -0700
Subject: [PATCH] Implement CryptSIPGetSignedDataMsg, CryptSIPPutSignedDataMsg,
CryptSIPCreateIndirectData, CryptSIPVerifyIndirectData, and
CryptSIPRemoveSignedDataMsg
---
 dlls/crypt32/sip.c |   47 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 37 insertions(+), 10 deletions(-)

diff --git a/dlls/crypt32/sip.c b/dlls/crypt32/sip.c
index 389e434..d7cf7d4 100644
--- a/dlls/crypt32/sip.c
+++ b/dlls/crypt32/sip.c
@@ -576,9 +576,14 @@ BOOL WINAPI CryptSIPLoad
 BOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO* pSubjectInfo, DWORD* pcbIndirectData,
                                        SIP_INDIRECT_DATA* pIndirectData)
 {
-    FIXME("(%p %p %p) stub\n", pSubjectInfo, pcbIndirectData, pIndirectData);
+    WINE_SIP_PROVIDER *sip;
+    BOOL ret = FALSE;
 
-    return FALSE;
+    TRACE("(%p %p %p)\n", pSubjectInfo, pcbIndirectData, pIndirectData);
+
+    if ((sip = CRYPT_GetCachedSIP(pSubjectInfo->pgSubjectType)))
+        ret = sip->info.pfCreate(pSubjectInfo, pcbIndirectData, pIndirectData);
+    return ret;
 }
 
 /***********************************************************************
@@ -587,10 +592,16 @@ BOOL WINAPI CryptSIPCreateIndirectData(S
 BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO* pSubjectInfo, DWORD* pdwEncodingType,
                                        DWORD dwIndex, DWORD* pcbSignedDataMsg, BYTE* pbSignedDataMsg)
 {
-    FIXME("(%p %p %d %p %p) stub\n", pSubjectInfo, pdwEncodingType, dwIndex,
+    WINE_SIP_PROVIDER *sip;
+    BOOL ret = FALSE;
+
+    TRACE("(%p %p %d %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
           pcbSignedDataMsg, pbSignedDataMsg);
 
-    return FALSE;
+    if ((sip = CRYPT_GetCachedSIP(pSubjectInfo->pgSubjectType)))
+        ret = sip->info.pfGet(pSubjectInfo, pdwEncodingType, dwIndex,
+         pcbSignedDataMsg, pbSignedDataMsg);
+    return ret;
 }
 
 /***********************************************************************
@@ -599,10 +610,16 @@ BOOL WINAPI CryptSIPGetSignedDataMsg(SIP
 BOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO* pSubjectInfo, DWORD pdwEncodingType,
                                        DWORD* pdwIndex, DWORD cbSignedDataMsg, BYTE* pbSignedDataMsg)
 {
-    FIXME("(%p %d %p %d %p) stub\n", pSubjectInfo, pdwEncodingType, pdwIndex,
+    WINE_SIP_PROVIDER *sip;
+    BOOL ret = FALSE;
+
+    TRACE("(%p %d %p %d %p)\n", pSubjectInfo, pdwEncodingType, pdwIndex,
           cbSignedDataMsg, pbSignedDataMsg);
 
-    return FALSE;
+    if ((sip = CRYPT_GetCachedSIP(pSubjectInfo->pgSubjectType)))
+        ret = sip->info.pfPut(pSubjectInfo, pdwEncodingType, pdwIndex,
+         cbSignedDataMsg, pbSignedDataMsg);
+    return ret;
 }
 
 /***********************************************************************
@@ -611,9 +628,14 @@ BOOL WINAPI CryptSIPPutSignedDataMsg(SIP
 BOOL WINAPI CryptSIPRemoveSignedDataMsg(SIP_SUBJECTINFO* pSubjectInfo,
                                        DWORD dwIndex)
 {
-    FIXME("(%p %d) stub\n", pSubjectInfo, dwIndex);
+    WINE_SIP_PROVIDER *sip;
+    BOOL ret = FALSE;
 
-    return FALSE;
+    TRACE("(%p %d)\n", pSubjectInfo, dwIndex);
+
+    if ((sip = CRYPT_GetCachedSIP(pSubjectInfo->pgSubjectType)))
+        ret = sip->info.pfRemove(pSubjectInfo, dwIndex);
+    return ret;
 }
 
 /***********************************************************************
@@ -622,7 +644,12 @@ BOOL WINAPI CryptSIPRemoveSignedDataMsg(
 BOOL WINAPI CryptSIPVerifyIndirectData(SIP_SUBJECTINFO* pSubjectInfo,
                                        SIP_INDIRECT_DATA* pIndirectData)
 {
-    FIXME("(%p %p) stub\n", pSubjectInfo, pIndirectData);
+    WINE_SIP_PROVIDER *sip;
+    BOOL ret = FALSE;
 
-    return FALSE;
+    TRACE("(%p %p)\n", pSubjectInfo, pIndirectData);
+
+    if ((sip = CRYPT_GetCachedSIP(pSubjectInfo->pgSubjectType)))
+        ret = sip->info.pfVerify(pSubjectInfo, pIndirectData);
+    return ret;
 }
-- 
1.4.1


More information about the wine-patches mailing list