Jacek Caban : wininet: Use CRLF separator in INTERNET_CERTIFICATE_INFO.
Alexandre Julliard
julliard at winehq.org
Wed May 30 13:18:52 CDT 2012
Module: wine
Branch: master
Commit: 37e483d567327fb65c71970fe2992ddd12b7f937
URL: http://source.winehq.org/git/wine.git/?a=commit;h=37e483d567327fb65c71970fe2992ddd12b7f937
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed May 30 12:13:53 2012 +0200
wininet: Use CRLF separator in INTERNET_CERTIFICATE_INFO.
---
dlls/wininet/http.c | 8 ++++----
dlls/wininet/tests/http.c | 41 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 74c9006..54ac0d5 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -2130,18 +2130,18 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
info->ftExpiry = context->pCertInfo->NotAfter;
info->ftStart = context->pCertInfo->NotBefore;
len = CertNameToStrA(context->dwCertEncodingType,
- &context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR, NULL, 0);
+ &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,
+ &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, NULL, 0);
+ &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,
+ &context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR|CERT_NAME_STR_CRLF_FLAG,
info->lpszIssuerInfo, len);
info->dwKeySize = NETCON_GetCipherStrength(req->netconn);
CertFreeCertificateContext(context);
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 2e7b693..204c5b7 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -2878,6 +2878,45 @@ static void release_cert_info(INTERNET_CERTIFICATE_INFOA *info)
LocalFree(info->lpszEncryptionAlgName);
}
+static void test_cert_struct(HINTERNET req)
+{
+ INTERNET_CERTIFICATE_INFOA info;
+ DWORD size;
+ BOOL res;
+
+ static const char ex_subject[] =
+ "US\r\n"
+ "Minnesota\r\n"
+ "Saint Paul\r\n"
+ "WineHQ\r\n"
+ "test.winehq.org\r\n"
+ "webmaster at winehq.org";
+
+ static const char ex_issuer[] =
+ "US\r\n"
+ "Minnesota\r\n"
+ "WineHQ\r\n"
+ "test.winehq.org\r\n"
+ "webmaster at winehq.org";
+
+ memset(&info, 0x5, sizeof(&info));
+
+ size = sizeof(info);
+ res = InternetQueryOption(req, INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, &info, &size);
+ ok(res, "InternetQueryOption failed: %u\n", GetLastError());
+ ok(size == sizeof(info), "size = %u\n", size);
+
+ ok(!strcmp(info.lpszSubjectInfo, ex_subject), "lpszSubjectInfo = %s\n", info.lpszSubjectInfo);
+ ok(!strcmp(info.lpszIssuerInfo, ex_issuer), "lpszIssuerInfo = %s\n", info.lpszIssuerInfo);
+ ok(!info.lpszSignatureAlgName, "lpszSignatureAlgName = %s\n", info.lpszSignatureAlgName);
+ ok(!info.lpszEncryptionAlgName, "lpszEncryptionAlgName = %s\n", info.lpszEncryptionAlgName);
+ ok(!info.lpszProtocolName, "lpszProtocolName = %s\n", info.lpszProtocolName);
+ todo_wine
+ ok(info.dwKeySize == 128, "dwKeySize = %u\n", info.dwKeySize);
+
+ release_cert_info(&info);
+}
+
#define test_secflags_option(a,b) _test_secflags_option(__LINE__,a,b)
static void _test_secflags_option(unsigned line, HINTERNET req, DWORD ex_flags)
{
@@ -3058,6 +3097,8 @@ static void test_security_flags(void)
test_secflags_option(req, SECURITY_FLAG_SECURE|SECURITY_FLAG_IGNORE_UNKNOWN_CA
|SECURITY_FLAG_STRENGTH_STRONG|0x800000);
+ test_cert_struct(req);
+
res = InternetReadFile(req, buf, sizeof(buf), &size);
ok(res, "InternetReadFile failed: %u\n", GetLastError());
ok(size, "size = 0\n");
More information about the wine-cvs
mailing list