BOOL WINAPI CertSetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, DWORD dwFlags, const void *pvData) { PWINECRYPT_CERTSTORE store = hCertStore; BOOL ret = FALSE; TRACE("(%p, %d, %08x, %p)\n", hCertStore, dwPropId, dwFlags, pvData); if (!store->properties) store->properties = ContextPropertyList_Create(); switch (dwPropId) { case CERT_ACCESS_STATE_PROP_ID: SetLastError(E_INVALIDARG); break; default: if (pvData) { const CRYPT_DATA_BLOB *blob = pvData; ret = ContextPropertyList_SetProperty(store->properties, dwPropId, blob->pbData, blob->cbData); } else { ContextPropertyList_RemoveProperty(store->properties, dwPropId); ret = TRUE; } } return ret; }
context_t *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, WINECRYPT_CERTSTORE *store) { context_t *context; context = CryptMemAlloc(sizeof(context_t) + contextSize); if (!context) return NULL; context->properties = ContextPropertyList_Create(); if (!context->properties) { CryptMemFree(context); return NULL; } context->vtbl = vtbl; context->ref = 1; context->linked = NULL; store->vtbl->addref(store); context->store = store; TRACE("returning %p\n", context); return context; }