Juan Lang : crypt32: Make constructing handles a member of signed msg data.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Aug 21 15:22:26 CDT 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Aug 20 17:49:15 2007 -0700

crypt32: Make constructing handles a member of signed msg data.

---

 dlls/crypt32/msg.c |   28 ++++++++++++++--------------
 1 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/dlls/crypt32/msg.c b/dlls/crypt32/msg.c
index 6a9acb4..7507e13 100644
--- a/dlls/crypt32/msg.c
+++ b/dlls/crypt32/msg.c
@@ -790,20 +790,23 @@ typedef struct _CSignedEncodeMsg
     CSignedMsgData  msg_data;
 } CSignedEncodeMsg;
 
-/* Constructs a CSignerHandles with a hash handle based on HashAlgorithm, and
- * an authenticated attributes hash handle if hasAuthAttrs is TRUE.
+/* Constructs the signer handles for the signerIndex'th signer of msg_data.
+ * Assumes signerIndex is a valid idnex, and that msg_data's info has already
+ * been constructed.
  */
-static BOOL CSignerHandles_Construct(CSignerHandles *handles,
- HCRYPTPROV crypt_prov, CRYPT_ALGORITHM_IDENTIFIER *HashAlgorithm,
- BOOL hasAuthAttrs)
+static BOOL CSignedMsgData_ConstructSignerHandles(CSignedMsgData *msg_data,
+ DWORD signerIndex, HCRYPTPROV crypt_prov)
 {
     ALG_ID algID;
     BOOL ret;
 
-    algID = CertOIDToAlgId(HashAlgorithm->pszObjId);
-    ret = CryptCreateHash(crypt_prov, algID, 0, 0, &handles->contentHash);
-    if (ret && hasAuthAttrs)
-        ret = CryptCreateHash(crypt_prov, algID, 0, 0, &handles->authAttrHash);
+    algID = CertOIDToAlgId(
+     msg_data->info->rgSignerInfo[signerIndex].HashAlgorithm.pszObjId);
+    ret = CryptCreateHash(crypt_prov, algID, 0, 0,
+     &msg_data->signerHandles->contentHash);
+    if (ret && msg_data->info->rgSignerInfo[signerIndex].AuthAttrs.cAttr > 0)
+        ret = CryptCreateHash(crypt_prov, algID, 0, 0,
+         &msg_data->signerHandles->authAttrHash);
     return ret;
 }
 
@@ -1222,11 +1225,8 @@ static HCRYPTMSG CSignedEncodeMsg_Open(DWORD dwFlags,
                      &info->rgSigners[i]);
                     if (ret)
                     {
-                        ret = CSignerHandles_Construct(
-                         &msg->msg_data.signerHandles[i],
-                         info->rgSigners[i].hCryptProv,
-                         &info->rgSigners[i].HashAlgorithm,
-                         info->rgSigners[i].cAuthAttr > 0);
+                        ret = CSignedMsgData_ConstructSignerHandles(
+                         &msg->msg_data, i, info->rgSigners[i].hCryptProv);
                         if (dwFlags & CMSG_CRYPT_RELEASE_CONTEXT_FLAG)
                             CryptReleaseContext(info->rgSigners[i].hCryptProv,
                              0);




More information about the wine-cvs mailing list