crypt32: Fix reading key prov info from serialized data.

This commit is contained in:
Juan Lang 2006-07-17 23:02:57 -07:00 committed by Alexandre Julliard
parent 11d018471b
commit 30bf5d9adb
3 changed files with 19 additions and 6 deletions

View File

@ -244,12 +244,7 @@ static BOOL WINAPI CertContext_GetProperty(void *context, DWORD dwPropId,
return ret;
}
/* info is assumed to be a CRYPT_KEY_PROV_INFO, followed by its container name,
* provider name, and any provider parameters, in a contiguous buffer, but
* where info's pointers are assumed to be invalid. Upon return, info's
* pointers point to the appropriate memory locations.
*/
static void CRYPT_FixKeyProvInfoPointers(PCRYPT_KEY_PROV_INFO info)
void CRYPT_FixKeyProvInfoPointers(PCRYPT_KEY_PROV_INFO info)
{
DWORD i, containerLen, provNameLen;
LPBYTE data = (LPBYTE)info + sizeof(CRYPT_KEY_PROV_INFO);

View File

@ -97,6 +97,14 @@ extern PCWINE_CONTEXT_INTERFACE pCTLInterface;
const void *CRYPT_ReadSerializedElement(const BYTE *pbElement,
DWORD cbElement, DWORD dwContextTypeFlags, DWORD *pdwContentType);
/* Fixes up the the pointers in info, where info is assumed to be a
* CRYPT_KEY_PROV_INFO, followed by its container name, provider name, and any
* provider parameters, in a contiguous buffer, but where info's pointers are
* assumed to be invalid. Upon return, info's pointers point to the
* appropriate memory locations.
*/
void CRYPT_FixKeyProvInfoPointers(PCRYPT_KEY_PROV_INFO info);
DWORD CertStore_GetAccessState(HCERTSTORE hCertStore);
/**

View File

@ -363,6 +363,16 @@ const void *CRYPT_ReadSerializedElement(const BYTE *pbElement, DWORD cbElement,
ret = contextInterface->setProp(context,
hdr->propID, 0, pbElement);
break;
case CERT_KEY_PROV_INFO_PROP_ID:
{
PCRYPT_KEY_PROV_INFO info =
(PCRYPT_KEY_PROV_INFO)pbElement;
CRYPT_FixKeyProvInfoPointers(info);
ret = contextInterface->setProp(context,
hdr->propID, 0, pbElement);
break;
}
default:
FIXME("prop ID %ld: stub\n", hdr->propID);
}