Jacek Caban : secur32: Added SECPKG_ATTR_REMOTE_CERT_CONTEXT tests.
Alexandre Julliard
julliard at winehq.org
Mon Jan 21 13:52:24 CST 2013
Module: wine
Branch: master
Commit: 63c7f8d8ee2141614fa2e6788edcfa5199d3e90b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=63c7f8d8ee2141614fa2e6788edcfa5199d3e90b
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Jan 21 15:04:05 2013 +0100
secur32: Added SECPKG_ATTR_REMOTE_CERT_CONTEXT tests.
---
dlls/secur32/tests/schannel.c | 28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/dlls/secur32/tests/schannel.c b/dlls/secur32/tests/schannel.c
index 99394c3..ddcc87d 100644
--- a/dlls/secur32/tests/schannel.c
+++ b/dlls/secur32/tests/schannel.c
@@ -45,6 +45,7 @@ static ENCRYPT_MESSAGE_FN pEncryptMessage;
static PCCERT_CONTEXT (WINAPI *pCertCreateCertificateContext)(DWORD,const BYTE*,DWORD);
static BOOL (WINAPI *pCertFreeCertificateContext)(PCCERT_CONTEXT);
static BOOL (WINAPI *pCertSetCertificateContextProperty)(PCCERT_CONTEXT,DWORD,DWORD,const void*);
+static PCCERT_CONTEXT (WINAPI *pCertEnumCertificatesInStore)(HCERTSTORE,PCCERT_CONTEXT);
static BOOL (WINAPI *pCryptAcquireContextW)(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD);
static BOOL (WINAPI *pCryptDestroyKey)(HCRYPTKEY);
@@ -148,6 +149,7 @@ static void InitFunctionPtrs(void)
GET_PROC(crypt32dll, CertFreeCertificateContext);
GET_PROC(crypt32dll, CertSetCertificateContextProperty);
GET_PROC(crypt32dll, CertCreateCertificateContext);
+ GET_PROC(crypt32dll, CertEnumCertificatesInStore);
#undef GET_PROC
}
@@ -467,6 +469,24 @@ static void testAcquireSecurityContext(void)
}
}
+static void test_remote_cert(PCCERT_CONTEXT remote_cert)
+{
+ PCCERT_CONTEXT iter = NULL;
+ BOOL incl_remote = FALSE;
+ unsigned cert_cnt = 0;
+
+ ok(remote_cert->hCertStore != NULL, "hCertStore == NULL\n");
+
+ while((iter = pCertEnumCertificatesInStore(remote_cert->hCertStore, iter))) {
+ if(iter == remote_cert)
+ incl_remote = TRUE;
+ cert_cnt++;
+ }
+
+ ok(cert_cnt == 2, "cert_cnt = %u\n", cert_cnt);
+ ok(incl_remote, "context does not contain cert itself\n");
+}
+
static const char http_request[] = "HEAD /test.html HTTP/1.1\r\nHost: www.codeweavers.com\r\nConnection: close\r\n\r\n";
static void init_cred(SCHANNEL_CRED *cred)
@@ -572,6 +592,7 @@ static void test_communication(void)
CredHandle cred_handle;
CtxtHandle context;
SecPkgContext_StreamSizes sizes;
+ CERT_CONTEXT *cert;
SecBufferDesc buffers[2];
SecBuffer *buf;
@@ -726,6 +747,13 @@ static void test_communication(void)
return;
}
+ status = pQueryContextAttributesA(&context, SECPKG_ATTR_REMOTE_CERT_CONTEXT, (void*)&cert);
+ ok(status == SEC_E_OK, "QueryContextAttributesW(SECPKG_ATTR_REMOTE_CERT_CONTEXT) failed: %08x\n", status);
+ if(status == SEC_E_OK) {
+ test_remote_cert(cert);
+ pCertFreeCertificateContext(cert);
+ }
+
pQueryContextAttributesA(&context, SECPKG_ATTR_STREAM_SIZES, &sizes);
reset_buffers(&buffers[0]);
More information about the wine-cvs
mailing list