crypt32: Return context_t from Context_CreateDataContext.
This commit is contained in:
parent
0f57425a8f
commit
e7ab43c4bb
|
@ -129,14 +129,12 @@ static context_t *Cert_clone(context_t *context, WINECRYPT_CERTSTORE *store, BOO
|
|||
return NULL;
|
||||
}else {
|
||||
const cert_t *cloned = (const cert_t*)context;
|
||||
void *new_context;
|
||||
DWORD size = 0;
|
||||
BOOL res;
|
||||
|
||||
new_context = Context_CreateDataContext(sizeof(CERT_CONTEXT), &cert_vtbl, store);
|
||||
if(!new_context)
|
||||
cert = (cert_t*)Context_CreateDataContext(sizeof(CERT_CONTEXT), &cert_vtbl, store);
|
||||
if(!cert)
|
||||
return NULL;
|
||||
cert = cert_from_ptr(new_context);
|
||||
|
||||
Context_CopyProperties(&cert->ctx, &cloned->ctx);
|
||||
|
||||
|
@ -312,7 +310,8 @@ BOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore,
|
|||
PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType,
|
||||
const BYTE *pbCertEncoded, DWORD cbCertEncoded)
|
||||
{
|
||||
PCERT_CONTEXT cert = NULL;
|
||||
cert_t *cert = NULL;
|
||||
BYTE *data = NULL;
|
||||
BOOL ret;
|
||||
PCERT_INFO certInfo = NULL;
|
||||
DWORD size = 0;
|
||||
|
@ -329,30 +328,27 @@ PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType,
|
|||
ret = CryptDecodeObjectEx(dwCertEncodingType, X509_CERT_TO_BE_SIGNED,
|
||||
pbCertEncoded, cbCertEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL,
|
||||
&certInfo, &size);
|
||||
if (ret)
|
||||
{
|
||||
BYTE *data = NULL;
|
||||
if (!ret)
|
||||
return NULL;
|
||||
|
||||
cert = Context_CreateDataContext(sizeof(CERT_CONTEXT), &cert_vtbl, &empty_store);
|
||||
cert = (cert_t*)Context_CreateDataContext(sizeof(CERT_CONTEXT), &cert_vtbl, &empty_store);
|
||||
if (!cert)
|
||||
goto end;
|
||||
return NULL;
|
||||
data = CryptMemAlloc(cbCertEncoded);
|
||||
if (!data)
|
||||
{
|
||||
CertFreeCertificateContext(cert);
|
||||
cert = NULL;
|
||||
goto end;
|
||||
}
|
||||
memcpy(data, pbCertEncoded, cbCertEncoded);
|
||||
cert->dwCertEncodingType = dwCertEncodingType;
|
||||
cert->pbCertEncoded = data;
|
||||
cert->cbCertEncoded = cbCertEncoded;
|
||||
cert->pCertInfo = certInfo;
|
||||
cert->hCertStore = &empty_store;
|
||||
Context_Release(&cert->base);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
end:
|
||||
return cert;
|
||||
memcpy(data, pbCertEncoded, cbCertEncoded);
|
||||
cert->ctx.dwCertEncodingType = dwCertEncodingType;
|
||||
cert->ctx.pbCertEncoded = data;
|
||||
cert->ctx.cbCertEncoded = cbCertEncoded;
|
||||
cert->ctx.pCertInfo = certInfo;
|
||||
cert->ctx.hCertStore = &empty_store;
|
||||
|
||||
return &cert->ctx;
|
||||
}
|
||||
|
||||
PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(PCCERT_CONTEXT pCertContext)
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(context);
|
||||
|
||||
void *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, WINECRYPT_CERTSTORE *store)
|
||||
context_t *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, WINECRYPT_CERTSTORE *store)
|
||||
{
|
||||
context_t *context;
|
||||
|
||||
|
@ -48,7 +48,7 @@ void *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl,
|
|||
context->store = store;
|
||||
|
||||
TRACE("returning %p\n", context);
|
||||
return context_ptr(context);
|
||||
return context;
|
||||
}
|
||||
|
||||
context_t *Context_CreateLinkContext(unsigned int contextSize, context_t *linked, WINECRYPT_CERTSTORE *store)
|
||||
|
|
|
@ -49,14 +49,12 @@ static context_t *CRL_clone(context_t *context, WINECRYPT_CERTSTORE *store, BOOL
|
|||
return NULL;
|
||||
}else {
|
||||
const crl_t *cloned = (const crl_t*)context;
|
||||
void *new_context;
|
||||
DWORD size = 0;
|
||||
BOOL res;
|
||||
|
||||
new_context = Context_CreateDataContext(sizeof(CRL_CONTEXT), &crl_vtbl, store);
|
||||
if(!new_context)
|
||||
crl = (crl_t*)Context_CreateDataContext(sizeof(CRL_CONTEXT), &crl_vtbl, store);
|
||||
if(!crl)
|
||||
return NULL;
|
||||
crl = crl_from_ptr(new_context);
|
||||
|
||||
Context_CopyProperties(&crl->ctx, &cloned->ctx);
|
||||
|
||||
|
@ -87,9 +85,10 @@ static const context_vtbl_t crl_vtbl = {
|
|||
PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType,
|
||||
const BYTE* pbCrlEncoded, DWORD cbCrlEncoded)
|
||||
{
|
||||
PCRL_CONTEXT crl = NULL;
|
||||
crl_t *crl = NULL;
|
||||
BOOL ret;
|
||||
PCRL_INFO crlInfo = NULL;
|
||||
BYTE *data = NULL;
|
||||
DWORD size = 0;
|
||||
|
||||
TRACE("(%08x, %p, %d)\n", dwCertEncodingType, pbCrlEncoded,
|
||||
|
@ -103,30 +102,28 @@ PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType,
|
|||
ret = CryptDecodeObjectEx(dwCertEncodingType, X509_CERT_CRL_TO_BE_SIGNED,
|
||||
pbCrlEncoded, cbCrlEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL,
|
||||
&crlInfo, &size);
|
||||
if (ret)
|
||||
{
|
||||
BYTE *data = NULL;
|
||||
if (!ret)
|
||||
return NULL;
|
||||
|
||||
crl = Context_CreateDataContext(sizeof(CRL_CONTEXT), &crl_vtbl, &empty_store);
|
||||
crl = (crl_t*)Context_CreateDataContext(sizeof(CRL_CONTEXT), &crl_vtbl, &empty_store);
|
||||
if (!crl)
|
||||
goto end;
|
||||
return NULL;
|
||||
|
||||
data = CryptMemAlloc(cbCrlEncoded);
|
||||
if (!data)
|
||||
{
|
||||
CertFreeCRLContext(crl);
|
||||
crl = NULL;
|
||||
goto end;
|
||||
}
|
||||
memcpy(data, pbCrlEncoded, cbCrlEncoded);
|
||||
crl->dwCertEncodingType = dwCertEncodingType;
|
||||
crl->pbCrlEncoded = data;
|
||||
crl->cbCrlEncoded = cbCrlEncoded;
|
||||
crl->pCrlInfo = crlInfo;
|
||||
crl->hCertStore = &empty_store;
|
||||
Context_Release(&crl->base);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
end:
|
||||
return crl;
|
||||
memcpy(data, pbCrlEncoded, cbCrlEncoded);
|
||||
crl->ctx.dwCertEncodingType = dwCertEncodingType;
|
||||
crl->ctx.pbCrlEncoded = data;
|
||||
crl->ctx.cbCrlEncoded = cbCrlEncoded;
|
||||
crl->ctx.pCrlInfo = crlInfo;
|
||||
crl->ctx.hCertStore = &empty_store;
|
||||
|
||||
return &crl->ctx;
|
||||
}
|
||||
|
||||
BOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore,
|
||||
|
|
|
@ -389,7 +389,7 @@ DWORD cert_name_to_str_with_indent(DWORD dwCertEncodingType, DWORD indent,
|
|||
* which should be one of CERT_CONTEXT, CRL_CONTEXT, or CTL_CONTEXT.
|
||||
* Free with Context_Release.
|
||||
*/
|
||||
void *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, struct WINE_CRYPTCERTSTORE*) DECLSPEC_HIDDEN;
|
||||
context_t *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, struct WINE_CRYPTCERTSTORE*) DECLSPEC_HIDDEN;
|
||||
|
||||
/* Creates a new link context. The context refers to linked
|
||||
* rather than owning its own properties. If addRef is TRUE (which ordinarily
|
||||
|
|
|
@ -367,7 +367,7 @@ BOOL WINAPI CertDeleteCTLFromStore(PCCTL_CONTEXT pCtlContext)
|
|||
PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType,
|
||||
const BYTE *pbCtlEncoded, DWORD cbCtlEncoded)
|
||||
{
|
||||
PCTL_CONTEXT ctl = NULL;
|
||||
ctl_t *ctl = NULL;
|
||||
HCRYPTMSG msg;
|
||||
BOOL ret;
|
||||
BYTE *content = NULL;
|
||||
|
@ -440,7 +440,7 @@ PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType,
|
|||
&ctlInfo, &size);
|
||||
if (ret)
|
||||
{
|
||||
ctl = Context_CreateDataContext(sizeof(CTL_CONTEXT), &ctl_vtbl, &empty_store);
|
||||
ctl = (ctl_t*)Context_CreateDataContext(sizeof(CTL_CONTEXT), &ctl_vtbl, &empty_store);
|
||||
if (ctl)
|
||||
{
|
||||
BYTE *data = CryptMemAlloc(cbCtlEncoded);
|
||||
|
@ -448,15 +448,15 @@ PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType,
|
|||
if (data)
|
||||
{
|
||||
memcpy(data, pbCtlEncoded, cbCtlEncoded);
|
||||
ctl->dwMsgAndCertEncodingType =
|
||||
ctl->ctx.dwMsgAndCertEncodingType =
|
||||
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
|
||||
ctl->pbCtlEncoded = data;
|
||||
ctl->cbCtlEncoded = cbCtlEncoded;
|
||||
ctl->pCtlInfo = ctlInfo;
|
||||
ctl->hCertStore = &empty_store;
|
||||
ctl->hCryptMsg = msg;
|
||||
ctl->pbCtlContext = content;
|
||||
ctl->cbCtlContext = contentSize;
|
||||
ctl->ctx.pbCtlEncoded = data;
|
||||
ctl->ctx.cbCtlEncoded = cbCtlEncoded;
|
||||
ctl->ctx.pCtlInfo = ctlInfo;
|
||||
ctl->ctx.hCertStore = &empty_store;
|
||||
ctl->ctx.hCryptMsg = msg;
|
||||
ctl->ctx.pbCtlContext = content;
|
||||
ctl->ctx.cbCtlContext = contentSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -481,13 +481,15 @@ PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType,
|
|||
end:
|
||||
if (!ret)
|
||||
{
|
||||
CertFreeCTLContext(ctl);
|
||||
if(ctl)
|
||||
Context_Release(&ctl->base);
|
||||
ctl = NULL;
|
||||
LocalFree(ctlInfo);
|
||||
CryptMemFree(content);
|
||||
CryptMsgClose(msg);
|
||||
return NULL;
|
||||
}
|
||||
return ctl;
|
||||
return &ctl->ctx;
|
||||
}
|
||||
|
||||
PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(PCCTL_CONTEXT pCtlContext)
|
||||
|
|
Loading…
Reference in New Issue