crypt32: Correct CryptVerifyMessageSignature's use of pcbDecoded.
This commit is contained in:
parent
faa917b567
commit
78c9015861
|
@ -210,9 +210,6 @@ BOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
|
|||
if (msg)
|
||||
{
|
||||
ret = CryptMsgUpdate(msg, pbSignedBlob, cbSignedBlob, TRUE);
|
||||
if (ret && pcbDecoded)
|
||||
ret = CryptMsgGetParam(msg, CMSG_CONTENT_PARAM, 0, pbDecoded,
|
||||
pcbDecoded);
|
||||
if (ret)
|
||||
{
|
||||
CERT_INFO *certInfo = CRYPT_GetSignerCertInfoFromMsg(msg,
|
||||
|
@ -244,6 +241,20 @@ BOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
|
|||
}
|
||||
CryptMemFree(certInfo);
|
||||
}
|
||||
if (ret)
|
||||
{
|
||||
/* The caller is expected to pass a valid pointer to pcbDecoded
|
||||
* when the message verifies successfully.
|
||||
*/
|
||||
if (pcbDecoded)
|
||||
ret = CryptMsgGetParam(msg, CMSG_CONTENT_PARAM, 0, pbDecoded,
|
||||
pcbDecoded);
|
||||
else
|
||||
{
|
||||
SetLastError(CRYPT_E_NOT_FOUND);
|
||||
ret = FALSE;
|
||||
}
|
||||
}
|
||||
CryptMsgClose(msg);
|
||||
}
|
||||
if(!ret && pcbDecoded)
|
||||
|
|
|
@ -580,7 +580,6 @@ static void test_verify_message_signature(void)
|
|||
ret = CryptVerifyMessageSignature(¶, 0,
|
||||
signedWithCertWithValidPubKeyContent,
|
||||
sizeof(signedWithCertWithValidPubKeyContent), NULL, 0, NULL);
|
||||
todo_wine
|
||||
ok(!ret, "Expected failure\n");
|
||||
/* Finally, a message signed with a valid public key verifies successfully
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue