Juan Lang : crypt32: According to MSDN,
inner content is only decoded when the content type is data.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Aug 8 08:59:32 CDT 2007
Module: wine
Branch: master
Commit: c9a54102883bab8357993b982c4ef1954c4dcbf2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c9a54102883bab8357993b982c4ef1954c4dcbf2
Author: Juan Lang <juan.lang at gmail.com>
Date: Tue Aug 7 14:57:04 2007 -0700
crypt32: According to MSDN, inner content is only decoded when the content type is data.
---
dlls/crypt32/msg.c | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/dlls/crypt32/msg.c b/dlls/crypt32/msg.c
index 30ec62a..70527bd 100644
--- a/dlls/crypt32/msg.c
+++ b/dlls/crypt32/msg.c
@@ -1742,20 +1742,26 @@ static BOOL CDecodeSignedMsg_GetParam(CDecodeMsg *msg, DWORD dwParamType,
case CMSG_CONTENT_PARAM:
if (msg->u.signedInfo)
{
- CRYPT_DATA_BLOB *blob;
- DWORD size;
-
- /* FIXME: does this depend on inner content type? */
- ret = CryptDecodeObjectEx(X509_ASN_ENCODING, X509_OCTET_STRING,
- msg->u.signedInfo->content.Content.pbData,
- msg->u.signedInfo->content.Content.cbData, CRYPT_DECODE_ALLOC_FLAG,
- NULL, (LPBYTE)&blob, &size);
- if (ret)
+ if (!strcmp(msg->u.signedInfo->content.pszObjId, szOID_RSA_data))
{
- ret = CRYPT_CopyParam(pvData, pcbData, blob->pbData,
- blob->cbData);
- LocalFree(blob);
+ CRYPT_DATA_BLOB *blob;
+ DWORD size;
+
+ ret = CryptDecodeObjectEx(X509_ASN_ENCODING, X509_OCTET_STRING,
+ msg->u.signedInfo->content.Content.pbData,
+ msg->u.signedInfo->content.Content.cbData,
+ CRYPT_DECODE_ALLOC_FLAG, NULL, (LPBYTE)&blob, &size);
+ if (ret)
+ {
+ ret = CRYPT_CopyParam(pvData, pcbData, blob->pbData,
+ blob->cbData);
+ LocalFree(blob);
+ }
}
+ else
+ ret = CRYPT_CopyParam(pvData, pcbData,
+ msg->u.signedInfo->content.Content.pbData,
+ msg->u.signedInfo->content.Content.cbData);
}
else
SetLastError(CRYPT_E_INVALID_MSG_TYPE);
More information about the wine-cvs
mailing list