crypt32(17/21): Make constructing handles a member of signed msg
data
Juan Lang
juan.lang at gmail.com
Tue Aug 21 09:26:31 CDT 2007
--Juan
-------------- next part --------------
From da9ef387220ac9c713081680e02a316a48cd4cb7 Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Mon, 20 Aug 2007 17:49:15 -0700
Subject: [PATCH] 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(D
&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);
--
1.4.1
More information about the wine-patches
mailing list