crypt32: Implement getting the hash for each signer of a signed encoded message.

This commit is contained in:
Juan Lang 2007-07-23 18:09:42 -07:00 committed by Alexandre Julliard
parent 4e2b3ab9e1
commit 71a5859ded
2 changed files with 17 additions and 5 deletions

View File

@ -765,9 +765,23 @@ static void CSignedEncodeMsg_Close(HCRYPTMSG hCryptMsg)
static BOOL CSignedEncodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType,
DWORD dwIndex, void *pvData, DWORD *pcbData)
{
FIXME("(%p, %d, %d, %p, %p)\n", hCryptMsg, dwParamType, dwIndex, pvData,
pcbData);
return FALSE;
CSignedEncodeMsg *msg = (CSignedEncodeMsg *)hCryptMsg;
BOOL ret = FALSE;
switch (dwParamType)
{
case CMSG_COMPUTED_HASH_PARAM:
if (dwIndex >= msg->cSigners)
SetLastError(CRYPT_E_INVALID_INDEX);
else
ret = CryptGetHashParam(msg->signers[dwIndex].hash, HP_HASHVAL,
pvData, pcbData, 0);
break;
default:
FIXME("unimplemented for %d\n", dwParamType);
SetLastError(CRYPT_E_INVALID_MSG_TYPE);
}
return ret;
}
static BOOL CSignedEncodeMsg_UpdateHash(CSignedEncodeMsg *msg,

View File

@ -1298,7 +1298,6 @@ static void test_signed_msg_encoding(void)
signedEmptyContent, sizeof(signedEmptyContent));
ret = CryptMsgUpdate(msg, msgData, sizeof(msgData), TRUE);
ok(ret, "CryptMsgUpdate failed: %x\n", GetLastError());
todo_wine
check_param("detached signed hash", msg, CMSG_COMPUTED_HASH_PARAM,
signedHash, sizeof(signedHash));
todo_wine
@ -1309,7 +1308,6 @@ static void test_signed_msg_encoding(void)
detachedSignedContent, sizeof(detachedSignedContent));
SetLastError(0xdeadbeef);
ret = CryptMsgGetParam(msg, CMSG_COMPUTED_HASH_PARAM, 1, NULL, &size);
todo_wine
ok(!ret && GetLastError() == CRYPT_E_INVALID_INDEX,
"Expected CRYPT_E_INVALID_INDEX, got %x\n", GetLastError());