mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 16:02:56 +00:00
[WINESYNC] wininet: Move INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT handling to helper.
Signed-off-by: Daniel Lehman <dlehman25@gmail.com> Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org> wine commit id a41cb33afaee0adc6fdf3b8c69b9fb545dc15a96 by Daniel Lehman <dlehman25@gmail.com>
This commit is contained in:
parent
94e13ca59b
commit
c1394ae71a
2 changed files with 34 additions and 30 deletions
|
@ -2102,6 +2102,38 @@ static DWORD str_to_buffer(const WCHAR *str, void *buffer, DWORD *size, BOOL uni
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DWORD get_security_cert_struct(http_request_t *req, INTERNET_CERTIFICATE_INFOA *info)
|
||||||
|
{
|
||||||
|
PCCERT_CONTEXT context;
|
||||||
|
DWORD len;
|
||||||
|
|
||||||
|
context = (PCCERT_CONTEXT)NETCON_GetCert(req->netconn);
|
||||||
|
if(!context)
|
||||||
|
return ERROR_NOT_SUPPORTED;
|
||||||
|
|
||||||
|
memset(info, 0, sizeof(*info));
|
||||||
|
info->ftExpiry = context->pCertInfo->NotAfter;
|
||||||
|
info->ftStart = context->pCertInfo->NotBefore;
|
||||||
|
len = CertNameToStrA(context->dwCertEncodingType,
|
||||||
|
&context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG, NULL, 0);
|
||||||
|
info->lpszSubjectInfo = LocalAlloc(0, len);
|
||||||
|
if(info->lpszSubjectInfo)
|
||||||
|
CertNameToStrA(context->dwCertEncodingType,
|
||||||
|
&context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG,
|
||||||
|
info->lpszSubjectInfo, len);
|
||||||
|
len = CertNameToStrA(context->dwCertEncodingType,
|
||||||
|
&context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG, NULL, 0);
|
||||||
|
info->lpszIssuerInfo = LocalAlloc(0, len);
|
||||||
|
if(info->lpszIssuerInfo)
|
||||||
|
CertNameToStrA(context->dwCertEncodingType,
|
||||||
|
&context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG,
|
||||||
|
info->lpszIssuerInfo, len);
|
||||||
|
info->dwKeySize = NETCON_GetCipherStrength(req->netconn);
|
||||||
|
|
||||||
|
CertFreeCertificateContext(context);
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffer, DWORD *size, BOOL unicode)
|
static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffer, DWORD *size, BOOL unicode)
|
||||||
{
|
{
|
||||||
http_request_t *req = (http_request_t*)hdr;
|
http_request_t *req = (http_request_t*)hdr;
|
||||||
|
@ -2254,8 +2286,6 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
|
||||||
}
|
}
|
||||||
|
|
||||||
case INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT: {
|
case INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT: {
|
||||||
PCCERT_CONTEXT context;
|
|
||||||
|
|
||||||
if(!req->netconn)
|
if(!req->netconn)
|
||||||
return ERROR_INTERNET_INVALID_OPERATION;
|
return ERROR_INTERNET_INVALID_OPERATION;
|
||||||
|
|
||||||
|
@ -2264,33 +2294,7 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
|
||||||
return ERROR_INSUFFICIENT_BUFFER;
|
return ERROR_INSUFFICIENT_BUFFER;
|
||||||
}
|
}
|
||||||
|
|
||||||
context = (PCCERT_CONTEXT)NETCON_GetCert(req->netconn);
|
return get_security_cert_struct(req, (INTERNET_CERTIFICATE_INFOA*)buffer);
|
||||||
if(context) {
|
|
||||||
INTERNET_CERTIFICATE_INFOA *info = (INTERNET_CERTIFICATE_INFOA*)buffer;
|
|
||||||
DWORD len;
|
|
||||||
|
|
||||||
memset(info, 0, sizeof(*info));
|
|
||||||
info->ftExpiry = context->pCertInfo->NotAfter;
|
|
||||||
info->ftStart = context->pCertInfo->NotBefore;
|
|
||||||
len = CertNameToStrA(context->dwCertEncodingType,
|
|
||||||
&context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG, NULL, 0);
|
|
||||||
info->lpszSubjectInfo = LocalAlloc(0, len);
|
|
||||||
if(info->lpszSubjectInfo)
|
|
||||||
CertNameToStrA(context->dwCertEncodingType,
|
|
||||||
&context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG,
|
|
||||||
info->lpszSubjectInfo, len);
|
|
||||||
len = CertNameToStrA(context->dwCertEncodingType,
|
|
||||||
&context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG, NULL, 0);
|
|
||||||
info->lpszIssuerInfo = LocalAlloc(0, len);
|
|
||||||
if(info->lpszIssuerInfo)
|
|
||||||
CertNameToStrA(context->dwCertEncodingType,
|
|
||||||
&context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG,
|
|
||||||
info->lpszIssuerInfo, len);
|
|
||||||
info->dwKeySize = NETCON_GetCipherStrength(req->netconn);
|
|
||||||
CertFreeCertificateContext(context);
|
|
||||||
return ERROR_SUCCESS;
|
|
||||||
}
|
|
||||||
return ERROR_NOT_SUPPORTED;
|
|
||||||
}
|
}
|
||||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||||
if (*size < sizeof(DWORD))
|
if (*size < sizeof(DWORD))
|
||||||
|
|
|
@ -5,4 +5,4 @@ files:
|
||||||
include/wininet.h: sdk/include/psdk/wininet.h
|
include/wininet.h: sdk/include/psdk/wininet.h
|
||||||
include/winineti.h: sdk/include/psdk/winineti.h
|
include/winineti.h: sdk/include/psdk/winineti.h
|
||||||
tags:
|
tags:
|
||||||
wine: c06e00ee6a15fd77faf66b28edac5e84ad30b550
|
wine: a41cb33afaee0adc6fdf3b8c69b9fb545dc15a96
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue