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