Author: akhaldi
Date: Thu Aug 18 09:33:29 2016
New Revision: 72256
URL:
http://svn.reactos.org/svn/reactos?rev=72256&view=rev
Log:
[SECUR32_WINETEST] Sync with Wine Staging 1.9.16. CORE-11866
Modified:
trunk/rostests/winetests/secur32/CMakeLists.txt
trunk/rostests/winetests/secur32/negotiate.c
trunk/rostests/winetests/secur32/schannel.c
trunk/rostests/winetests/secur32/secur32.c
Modified: trunk/rostests/winetests/secur32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/secur32/CMakeLi…
==============================================================================
--- trunk/rostests/winetests/secur32/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/winetests/secur32/CMakeLists.txt [iso-8859-1] Thu Aug 18 09:33:29 2016
@@ -9,5 +9,5 @@
add_executable(secur32_winetest ${SOURCE})
set_module_type(secur32_winetest win32cui)
-add_importlibs(secur32_winetest advapi32 ws2_32 msvcrt kernel32)
+add_importlibs(secur32_winetest advapi32 ws2_32 crypt32 secur32 msvcrt kernel32)
add_cd_file(TARGET secur32_winetest DESTINATION reactos/bin FOR all)
Modified: trunk/rostests/winetests/secur32/negotiate.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/secur32/negotia…
==============================================================================
--- trunk/rostests/winetests/secur32/negotiate.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/secur32/negotiate.c [iso-8859-1] Thu Aug 18 09:33:29 2016
@@ -31,45 +31,6 @@
#include "wine/test.h"
-static HMODULE hsecur32;
-static SECURITY_STATUS (SEC_ENTRY * pAcceptSecurityContext)(PCredHandle, PCtxtHandle,
- PSecBufferDesc, ULONG, ULONG, PCtxtHandle, PSecBufferDesc, PULONG, PTimeStamp);
-static SECURITY_STATUS (SEC_ENTRY * pAcquireCredentialsHandleA)(SEC_CHAR *, SEC_CHAR *,
- ULONG, PLUID, PVOID, SEC_GET_KEY_FN, PVOID, PCredHandle, PTimeStamp);
-static SECURITY_STATUS (SEC_ENTRY * pCompleteAuthToken)(PCtxtHandle, PSecBufferDesc);
-static SECURITY_STATUS (SEC_ENTRY * pDecryptMessage)(PCtxtHandle, PSecBufferDesc, ULONG,
PULONG);
-static SECURITY_STATUS (SEC_ENTRY * pDeleteSecurityContext)(PCtxtHandle);
-static SECURITY_STATUS (SEC_ENTRY * pEncryptMessage)(PCtxtHandle, ULONG, PSecBufferDesc,
ULONG);
-static SECURITY_STATUS (SEC_ENTRY * pFreeContextBuffer)(PVOID);
-static SECURITY_STATUS (SEC_ENTRY * pFreeCredentialsHandle)(PCredHandle);
-static SECURITY_STATUS (SEC_ENTRY * pInitializeSecurityContextA)(PCredHandle,
PCtxtHandle,
- SEC_CHAR *, ULONG, ULONG, ULONG, PSecBufferDesc, ULONG, PCtxtHandle, PSecBufferDesc,
- PULONG, PTimeStamp);
-static PSecurityFunctionTableA (SEC_ENTRY * pInitSecurityInterfaceA)(void);
-static SECURITY_STATUS (SEC_ENTRY * pMakeSignature)(PCtxtHandle, ULONG, PSecBufferDesc,
ULONG);
-static SECURITY_STATUS (SEC_ENTRY * pQueryContextAttributesA)(PCtxtHandle, ULONG,
PVOID);
-static SECURITY_STATUS (SEC_ENTRY * pQuerySecurityPackageInfoA)(SEC_CHAR *, PSecPkgInfoA
*);
-static SECURITY_STATUS (SEC_ENTRY * pVerifySignature)(PCtxtHandle, PSecBufferDesc, ULONG,
PULONG);
-
-static void init_function_ptrs(void)
-{
- if (!(hsecur32 = LoadLibraryA("secur32.dll"))) return;
- pAcceptSecurityContext = (void *)GetProcAddress(hsecur32,
"AcceptSecurityContext");
- pAcquireCredentialsHandleA = (void *)GetProcAddress(hsecur32,
"AcquireCredentialsHandleA");
- pCompleteAuthToken = (void *)GetProcAddress(hsecur32,
"CompleteAuthToken");
- pDecryptMessage = (void *)GetProcAddress(hsecur32,
"DecryptMessage");
- pDeleteSecurityContext = (void *)GetProcAddress(hsecur32,
"DeleteSecurityContext");
- pEncryptMessage = (void *)GetProcAddress(hsecur32,
"EncryptMessage");
- pFreeContextBuffer = (void *)GetProcAddress(hsecur32,
"FreeContextBuffer");
- pFreeCredentialsHandle = (void *)GetProcAddress(hsecur32,
"FreeCredentialsHandle");
- pInitializeSecurityContextA = (void *)GetProcAddress(hsecur32,
"InitializeSecurityContextA");
- pInitSecurityInterfaceA = (void *)GetProcAddress(hsecur32,
"InitSecurityInterfaceA");
- pMakeSignature = (void *)GetProcAddress(hsecur32,
"MakeSignature");
- pQueryContextAttributesA = (void *)GetProcAddress(hsecur32,
"QueryContextAttributesA");
- pQuerySecurityPackageInfoA = (void *)GetProcAddress(hsecur32,
"QuerySecurityPackageInfoA");
- pVerifySignature = (void *)GetProcAddress(hsecur32,
"VerifySignature");
-}
-
#define NEGOTIATE_BASE_CAPS ( \
SECPKG_FLAG_INTEGRITY | \
SECPKG_FLAG_PRIVACY | \
@@ -158,14 +119,14 @@
trace( "setting up client\n" );
- ret = pQuerySecurityPackageInfoA( provider, &info );
+ ret = QuerySecurityPackageInfoA( provider, &info );
ok( ret == SEC_E_OK, "QuerySecurityPackageInfo returned %08x\n", ret );
setup_buffers( data, info );
- pFreeContextBuffer( info );
-
- ret = pAcquireCredentialsHandleA( NULL, provider, SECPKG_CRED_OUTBOUND, NULL,
- data->id, NULL, NULL, &data->cred,
&ttl );
+ FreeContextBuffer( info );
+
+ ret = AcquireCredentialsHandleA( NULL, provider, SECPKG_CRED_OUTBOUND, NULL,
+ data->id, NULL, NULL, &data->cred,
&ttl );
ok( ret == SEC_E_OK, "AcquireCredentialsHandleA returned %08x\n", ret );
return ret;
}
@@ -178,14 +139,14 @@
trace( "setting up server\n" );
- ret = pQuerySecurityPackageInfoA( provider, &info );
+ ret = QuerySecurityPackageInfoA( provider, &info );
ok( ret == SEC_E_OK, "QuerySecurityPackageInfo returned %08x\n", ret );
setup_buffers( data, info );
- pFreeContextBuffer( info );
-
- ret = pAcquireCredentialsHandleA( NULL, provider, SECPKG_CRED_INBOUND, NULL,
- NULL, NULL, NULL, &data->cred, &ttl );
+ FreeContextBuffer( info );
+
+ ret = AcquireCredentialsHandleA( NULL, provider, SECPKG_CRED_INBOUND, NULL,
+ NULL, NULL, NULL, &data->cred, &ttl );
ok( ret == SEC_E_OK, "AcquireCredentialsHandleA returned %08x\n", ret );
return ret;
}
@@ -201,12 +162,12 @@
data->out_buf->pBuffers[0].cbBuffer = data->max_token;
data->out_buf->pBuffers[0].BufferType = SECBUFFER_TOKEN;
- ret = pInitializeSecurityContextA( first ? &data->cred : NULL, first ? NULL :
&data->ctxt,
- NULL, 0, 0, SECURITY_NETWORK_DREP, first ? NULL :
data->in_buf,
- 0, &data->ctxt, data->out_buf,
&attr, &ttl );
+ ret = InitializeSecurityContextA( first ? &data->cred : NULL, first ? NULL :
&data->ctxt,
+ NULL, 0, 0, SECURITY_NETWORK_DREP, first ? NULL :
data->in_buf,
+ 0, &data->ctxt, data->out_buf, &attr,
&ttl );
if (ret == SEC_I_COMPLETE_AND_CONTINUE || ret == SEC_I_COMPLETE_NEEDED)
{
- pCompleteAuthToken( &data->ctxt, data->out_buf );
+ CompleteAuthToken( &data->ctxt, data->out_buf );
if (ret == SEC_I_COMPLETE_AND_CONTINUE)
ret = SEC_I_CONTINUE_NEEDED;
else if (ret == SEC_I_COMPLETE_NEEDED)
@@ -227,12 +188,12 @@
trace( "running server for the %s time\n", first ? "first" :
"second" );
- ret = pAcceptSecurityContext( &data->cred, first ? NULL : &data->ctxt,
- data->in_buf, 0, SECURITY_NETWORK_DREP,
- &data->ctxt, data->out_buf, &attr,
&ttl );
+ ret = AcceptSecurityContext( &data->cred, first ? NULL : &data->ctxt,
+ data->in_buf, 0, SECURITY_NETWORK_DREP,
+ &data->ctxt, data->out_buf, &attr,
&ttl );
if (ret == SEC_I_COMPLETE_AND_CONTINUE || ret == SEC_I_COMPLETE_NEEDED)
{
- pCompleteAuthToken( &data->ctxt, data->out_buf );
+ CompleteAuthToken( &data->ctxt, data->out_buf );
if (ret == SEC_I_COMPLETE_AND_CONTINUE)
ret = SEC_I_CONTINUE_NEEDED;
else if (ret == SEC_I_COMPLETE_NEEDED)
@@ -282,7 +243,7 @@
if ((status = setup_server( &server, (SEC_CHAR *)"Negotiate" )))
{
skip( "setup_server returned %08x, skipping test\n", status );
- pFreeCredentialsHandle( &client.cred );
+ FreeCredentialsHandle( &client.cred );
return;
}
@@ -313,7 +274,7 @@
sizes.cbMaxSignature = 0xdeadbeef;
sizes.cbSecurityTrailer = 0xdeadbeef;
sizes.cbBlockSize = 0xdeadbeef;
- status_c = pQueryContextAttributesA( &client.ctxt, SECPKG_ATTR_SIZES, &sizes
);
+ status_c = QueryContextAttributesA( &client.ctxt, SECPKG_ATTR_SIZES, &sizes
);
ok( status_c == SEC_E_OK, "pQueryContextAttributesA returned %08x\n",
status_c );
ok( sizes.cbMaxToken == 2888 || sizes.cbMaxToken == 1904,
"expected 2888 or 1904, got %u\n", sizes.cbMaxToken );
@@ -322,7 +283,7 @@
ok( !sizes.cbBlockSize, "expected 0, got %u\n", sizes.cbBlockSize );
memset( &info, 0, sizeof(info) );
- status_c = pQueryContextAttributesA( &client.ctxt, SECPKG_ATTR_NEGOTIATION_INFO,
&info );
+ status_c = QueryContextAttributesA( &client.ctxt, SECPKG_ATTR_NEGOTIATION_INFO,
&info );
ok( status_c == SEC_E_OK, "pQueryContextAttributesA returned %08x\n",
status_c );
pi = info.PackageInfo;
@@ -347,25 +308,25 @@
if (client.ctxt.dwLower || client.ctxt.dwUpper)
{
- status_c = pDeleteSecurityContext( &client.ctxt );
+ status_c = DeleteSecurityContext( &client.ctxt );
ok( status_c == SEC_E_OK, "DeleteSecurityContext returned %08x\n",
status_c );
}
if (server.ctxt.dwLower || server.ctxt.dwUpper)
{
- status_s = pDeleteSecurityContext( &server.ctxt );
+ status_s = DeleteSecurityContext( &server.ctxt );
ok( status_s == SEC_E_OK, "DeleteSecurityContext returned %08x\n",
status_s );
}
if (client.cred.dwLower || client.cred.dwUpper)
{
- status_c = pFreeCredentialsHandle( &client.cred );
+ status_c = FreeCredentialsHandle( &client.cred );
ok( status_c == SEC_E_OK, "FreeCredentialsHandle returned %08x\n",
status_c );
}
if (server.cred.dwLower || server.cred.dwUpper)
{
- status_s = pFreeCredentialsHandle(&server.cred);
+ status_s = FreeCredentialsHandle(&server.cred);
ok( status_s == SEC_E_OK, "FreeCredentialsHandle returned %08x\n",
status_s );
}
}
@@ -374,15 +335,7 @@
{
SecPkgInfoA *info;
- init_function_ptrs();
-
- if (!pFreeCredentialsHandle || !pAcquireCredentialsHandleA ||
!pQuerySecurityPackageInfoA ||
- !pFreeContextBuffer)
- {
- win_skip("functions are not available\n");
- return;
- }
- if (pQuerySecurityPackageInfoA( (SEC_CHAR *)"Negotiate", &info ))
+ if (QuerySecurityPackageInfoA( (SEC_CHAR *)"Negotiate", &info ))
{
ok( 0, "Negotiate package not installed, skipping test\n" );
return;
@@ -396,7 +349,7 @@
ok( info->wVersion == 1, "got %u\n", info->wVersion );
ok( info->wRPCID == RPC_C_AUTHN_GSS_NEGOTIATE, "got %u\n",
info->wRPCID );
ok( !lstrcmpA( info->Name, "Negotiate" ), "got %s\n",
info->Name );
- pFreeContextBuffer( info );
+ FreeContextBuffer( info );
test_authentication();
}
Modified: trunk/rostests/winetests/secur32/schannel.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/secur32/schanne…
==============================================================================
--- trunk/rostests/winetests/secur32/schannel.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/secur32/schannel.c [iso-8859-1] Thu Aug 18 09:33:29 2016
@@ -29,7 +29,7 @@
#include "wine/test.h"
-static HMODULE secdll, crypt32dll;
+static HMODULE secdll;
static ACQUIRE_CREDENTIALS_HANDLE_FN_A pAcquireCredentialsHandleA;
static ENUMERATE_SECURITY_PACKAGES_FN_A pEnumerateSecurityPackagesA;
@@ -41,16 +41,6 @@
static DELETE_SECURITY_CONTEXT_FN pDeleteSecurityContext;
static DECRYPT_MESSAGE_FN pDecryptMessage;
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);
-static BOOL (WINAPI *pCryptImportKey)(HCRYPTPROV,const
BYTE*,DWORD,HCRYPTKEY,DWORD,HCRYPTKEY*);
-static BOOL (WINAPI *pCryptReleaseContext)(HCRYPTPROV,ULONG_PTR);
static const BYTE bigCert[] = { 0x30, 0x7a, 0x02, 0x01, 0x01, 0x30, 0x02, 0x06,
0x00, 0x30, 0x15, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
@@ -119,13 +109,9 @@
static void InitFunctionPtrs(void)
{
- HMODULE advapi32dll;
-
- crypt32dll = LoadLibraryA("crypt32.dll");
secdll = LoadLibraryA("secur32.dll");
if(!secdll)
secdll = LoadLibraryA("security.dll");
- advapi32dll = LoadLibraryA("advapi32.dll");
#define GET_PROC(h, func) p ## func = (void*)GetProcAddress(h, #func)
@@ -142,16 +128,6 @@
GET_PROC(secdll, DecryptMessage);
GET_PROC(secdll, EncryptMessage);
}
-
- GET_PROC(advapi32dll, CryptAcquireContextW);
- GET_PROC(advapi32dll, CryptDestroyKey);
- GET_PROC(advapi32dll, CryptImportKey);
- GET_PROC(advapi32dll, CryptReleaseContext);
-
- GET_PROC(crypt32dll, CertFreeCertificateContext);
- GET_PROC(crypt32dll, CertSetCertificateContextProperty);
- GET_PROC(crypt32dll, CertCreateCertificateContext);
- GET_PROC(crypt32dll, CertEnumCertificatesInStore);
#undef GET_PROC
}
@@ -336,9 +312,9 @@
HCRYPTKEY key;
CRYPT_KEY_PROV_INFO keyProvInfo;
- if (!pAcquireCredentialsHandleA || !pCertCreateCertificateContext ||
+ if (!pAcquireCredentialsHandleA ||
!pEnumerateSecurityPackagesA || !pFreeContextBuffer ||
- !pFreeCredentialsHandle || !pCryptAcquireContextW)
+ !pFreeCredentialsHandle)
{
win_skip("Needed functions are not available\n");
return;
@@ -372,13 +348,11 @@
keyProvInfo.rgProvParam = NULL;
keyProvInfo.dwKeySpec = AT_SIGNATURE;
- certs[0] = pCertCreateCertificateContext(X509_ASN_ENCODING, bigCert,
- sizeof(bigCert));
- certs[1] = pCertCreateCertificateContext(X509_ASN_ENCODING, selfSignedCert,
- sizeof(selfSignedCert));
+ certs[0] = CertCreateCertificateContext(X509_ASN_ENCODING, bigCert,
sizeof(bigCert));
+ certs[1] = CertCreateCertificateContext(X509_ASN_ENCODING, selfSignedCert,
sizeof(selfSignedCert));
SetLastError(0xdeadbeef);
- ret = pCryptAcquireContextW(&csp, cspNameW, MS_DEF_PROV_W, PROV_RSA_FULL,
+ ret = CryptAcquireContextW(&csp, cspNameW, MS_DEF_PROV_W, PROV_RSA_FULL,
CRYPT_DELETEKEYSET);
if (!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
{
@@ -497,31 +471,26 @@
"or SEC_E_INTERNAL_ERROR, got %08x\n", st);
/* Good cert, with CRYPT_KEY_PROV_INFO set before it's had a key loaded. */
- if (pCertSetCertificateContextProperty)
- {
- ret = pCertSetCertificateContextProperty(certs[1],
- CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo);
- schanCred.dwVersion = SCH_CRED_V3;
- ok(ret, "CertSetCertificateContextProperty failed: %08x\n",
GetLastError());
- st = pAcquireCredentialsHandleA(NULL, unisp_name_a, SECPKG_CRED_OUTBOUND,
- NULL, &schanCred, NULL, NULL, &cred, NULL);
- ok(st == SEC_E_UNKNOWN_CREDENTIALS || st == SEC_E_INTERNAL_ERROR /* WinNT */,
- "Expected SEC_E_UNKNOWN_CREDENTIALS or SEC_E_INTERNAL_ERROR, got
%08x\n", st);
- st = pAcquireCredentialsHandleA(NULL, unisp_name_a, SECPKG_CRED_INBOUND,
- NULL, &schanCred, NULL, NULL, &cred, NULL);
- ok(st == SEC_E_UNKNOWN_CREDENTIALS || st == SEC_E_INTERNAL_ERROR /* WinNT */,
- "Expected SEC_E_UNKNOWN_CREDENTIALS or SEC_E_INTERNAL_ERROR, got
%08x\n", st);
- }
-
- ret = pCryptAcquireContextW(&csp, cspNameW, MS_DEF_PROV_W, PROV_RSA_FULL,
+ ret = CertSetCertificateContextProperty(certs[1],
+ CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo);
+ schanCred.dwVersion = SCH_CRED_V3;
+ ok(ret, "CertSetCertificateContextProperty failed: %08x\n",
GetLastError());
+ st = pAcquireCredentialsHandleA(NULL, unisp_name_a, SECPKG_CRED_OUTBOUND,
+ NULL, &schanCred, NULL, NULL, &cred, NULL);
+ ok(st == SEC_E_UNKNOWN_CREDENTIALS || st == SEC_E_INTERNAL_ERROR /* WinNT */,
+ "Expected SEC_E_UNKNOWN_CREDENTIALS or SEC_E_INTERNAL_ERROR, got
%08x\n", st);
+ st = pAcquireCredentialsHandleA(NULL, unisp_name_a, SECPKG_CRED_INBOUND,
+ NULL, &schanCred, NULL, NULL, &cred, NULL);
+ ok(st == SEC_E_UNKNOWN_CREDENTIALS || st == SEC_E_INTERNAL_ERROR /* WinNT */,
+ "Expected SEC_E_UNKNOWN_CREDENTIALS or SEC_E_INTERNAL_ERROR, got
%08x\n", st);
+
+ ret = CryptAcquireContextW(&csp, cspNameW, MS_DEF_PROV_W, PROV_RSA_FULL,
CRYPT_NEWKEYSET);
ok(ret, "CryptAcquireContextW failed: %08x\n", GetLastError());
ret = 0;
- if (pCryptImportKey)
- {
- ret = pCryptImportKey(csp, privKey, sizeof(privKey), 0, 0, &key);
- ok(ret, "CryptImportKey failed: %08x\n", GetLastError());
- }
+
+ ret = CryptImportKey(csp, privKey, sizeof(privKey), 0, 0, &key);
+ ok(ret, "CryptImportKey failed: %08x\n", GetLastError());
if (ret)
{
PCCERT_CONTEXT tmp;
@@ -610,20 +579,14 @@
"Expected SEC_E_UNKNOWN_CREDENTIALS, got %08x\n", st);
/* FIXME: what about two valid certs? */
- if (pCryptDestroyKey)
- pCryptDestroyKey(key);
- }
-
- if (pCryptReleaseContext)
- pCryptReleaseContext(csp, 0);
- pCryptAcquireContextW(&csp, cspNameW, MS_DEF_PROV_W, PROV_RSA_FULL,
- CRYPT_DELETEKEYSET);
-
- if (pCertFreeCertificateContext)
- {
- pCertFreeCertificateContext(certs[0]);
- pCertFreeCertificateContext(certs[1]);
- }
+ CryptDestroyKey(key);
+ }
+
+ CryptReleaseContext(csp, 0);
+ CryptAcquireContextW(&csp, cspNameW, MS_DEF_PROV_W, PROV_RSA_FULL,
CRYPT_DELETEKEYSET);
+
+ CertFreeCertificateContext(certs[0]);
+ CertFreeCertificateContext(certs[1]);
}
static void test_remote_cert(PCCERT_CONTEXT remote_cert)
@@ -634,7 +597,7 @@
ok(remote_cert->hCertStore != NULL, "hCertStore == NULL\n");
- while((iter = pCertEnumCertificatesInStore(remote_cert->hCertStore, iter))) {
+ while((iter = CertEnumCertificatesInStore(remote_cert->hCertStore, iter))) {
if(iter == remote_cert)
incl_remote = TRUE;
cert_cnt++;
@@ -927,7 +890,7 @@
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);
+ CertFreeCertificateContext(cert);
}
status = pQueryContextAttributesA(&context, SECPKG_ATTR_CONNECTION_INFO,
(void*)&conn_info);
@@ -1032,6 +995,4 @@
if(secdll)
FreeLibrary(secdll);
- if(crypt32dll)
- FreeLibrary(crypt32dll);
-}
+}
Modified: trunk/rostests/winetests/secur32/secur32.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/secur32/secur32…
==============================================================================
--- trunk/rostests/winetests/secur32/secur32.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/secur32/secur32.c [iso-8859-1] Thu Aug 18 09:33:29 2016
@@ -315,6 +315,55 @@
pSspiFreeAuthIdentity( id );
}
+static void test_kerberos(void)
+{
+ SecPkgInfoA *info;
+ TimeStamp ttl;
+ CredHandle cred;
+ SECURITY_STATUS status;
+
+ SEC_CHAR provider[] =
{'K','e','r','b','e','r','o','s',0};
+
+ static const ULONG expected_flags =
+ SECPKG_FLAG_INTEGRITY
+ | SECPKG_FLAG_PRIVACY
+ | SECPKG_FLAG_TOKEN_ONLY
+ | SECPKG_FLAG_DATAGRAM
+ | SECPKG_FLAG_CONNECTION
+ | SECPKG_FLAG_MULTI_REQUIRED
+ | SECPKG_FLAG_EXTENDED_ERROR
+ | SECPKG_FLAG_IMPERSONATION
+ | SECPKG_FLAG_ACCEPT_WIN32_NAME
+ | SECPKG_FLAG_NEGOTIABLE
+ | SECPKG_FLAG_GSS_COMPATIBLE
+ | SECPKG_FLAG_LOGON
+ | SECPKG_FLAG_MUTUAL_AUTH
+ | SECPKG_FLAG_DELEGATION
+ | SECPKG_FLAG_READONLY_WITH_CHECKSUM;
+ static const ULONG optional_mask =
+ SECPKG_FLAG_RESTRICTED_TOKENS
+ | SECPKG_FLAG_APPCONTAINER_CHECKS;
+
+ status = QuerySecurityPackageInfoA(provider, &info);
+ ok(status == SEC_E_OK, "Kerberos package not installed, skipping test\n");
+ if(status != SEC_E_OK)
+ return;
+
+ ok( (info->fCapabilities & ~optional_mask) == expected_flags, "got %08x,
expected %08x\n", info->fCapabilities, expected_flags );
+ ok( info->wVersion == 1, "got %u\n", info->wVersion );
+ ok( info->wRPCID == RPC_C_AUTHN_GSS_KERBEROS, "got %u\n",
info->wRPCID );
+ ok( info->cbMaxToken >= 12000, "got %u\n", info->cbMaxToken );
+ ok( !lstrcmpA( info->Name, "Kerberos" ), "got %s\n",
info->Name );
+ ok( !lstrcmpA( info->Comment, "Microsoft Kerberos V1.0" ), "got
%s\n", info->Comment );
+ FreeContextBuffer( info );
+
+ status = AcquireCredentialsHandleA( NULL, provider, SECPKG_CRED_OUTBOUND, NULL,
+ NULL, NULL, NULL, &cred, &ttl );
+ todo_wine ok( status == SEC_E_OK, "AcquireCredentialsHandleA returned
%08x\n", status );
+ if(status == SEC_E_OK)
+ FreeCredentialHandle( &cred );
+}
+
START_TEST(secur32)
{
secdll = LoadLibraryA("secur32.dll");
@@ -361,4 +410,6 @@
FreeLibrary(secdll);
}
-}
+
+ test_kerberos();
+}