Juan Lang : crypt32: Support the KeyId type of signer in CMSG_SIGNER_CERT_INFO_PARAM.
Alexandre Julliard
julliard at winehq.org
Thu Aug 21 10:02:13 CDT 2008
Module: wine
Branch: master
Commit: 1b7121e7ad2ec9087547797c5b37e50aa0528c14
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1b7121e7ad2ec9087547797c5b37e50aa0528c14
Author: Juan Lang <juan.lang at gmail.com>
Date: Wed Aug 20 12:02:46 2008 -0700
crypt32: Support the KeyId type of signer in CMSG_SIGNER_CERT_INFO_PARAM.
---
dlls/crypt32/msg.c | 22 ++++++++++++++--------
1 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/dlls/crypt32/msg.c b/dlls/crypt32/msg.c
index 0ec75af..22d740e 100644
--- a/dlls/crypt32/msg.c
+++ b/dlls/crypt32/msg.c
@@ -2174,7 +2174,7 @@ static BOOL CRYPT_CopyCMSSignerInfo(void *pvData, DWORD *pcbData,
static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData,
const CMSG_CMS_SIGNER_INFO *in)
{
- DWORD size = sizeof(CERT_INFO);
+ DWORD size = sizeof(CERT_INFO), rdnSize;
BOOL ret;
TRACE("(%p, %d, %p)\n", pvData, pvData ? *pcbData : 0, in);
@@ -2186,8 +2186,8 @@ static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData,
}
else
{
- FIXME("unimplemented for key id\n");
- return FALSE;
+ rdnSize = CRYPT_SizeOfKeyIdAsIssuerAndSerial(&in->SignerId.KeyId);
+ size += rdnSize;
}
if (!pvData)
{
@@ -2206,11 +2206,17 @@ static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData,
CERT_INFO *out = (CERT_INFO *)pvData;
memset(out, 0, sizeof(CERT_INFO));
- CRYPT_CopyBlob(&out->Issuer,
- &in->SignerId.IssuerSerialNumber.Issuer, &nextData);
- CRYPT_CopyBlob(&out->SerialNumber,
- &in->SignerId.IssuerSerialNumber.SerialNumber, &nextData);
- ret = TRUE;
+ if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
+ {
+ CRYPT_CopyBlob(&out->Issuer,
+ &in->SignerId.IssuerSerialNumber.Issuer, &nextData);
+ CRYPT_CopyBlob(&out->SerialNumber,
+ &in->SignerId.IssuerSerialNumber.SerialNumber, &nextData);
+ ret = TRUE;
+ }
+ else
+ ret = CRYPT_CopyKeyIdAsIssuerAndSerial(&out->Issuer, &out->SerialNumber,
+ &in->SignerId.KeyId, rdnSize, &nextData);
}
TRACE("returning %d\n", ret);
return ret;
More information about the wine-cvs
mailing list