4 * Copyright 2006 Robert Reif
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
25 #define SECURITY_WIN32
29 #include "wine/test.h"
31 static HMODULE secdll
;
33 static BOOLEAN (WINAPI
* pGetComputerObjectNameA
)(EXTENDED_NAME_FORMAT NameFormat
, LPSTR lpNameBuffer
, PULONG lpnSize
);
34 static BOOLEAN (WINAPI
* pGetComputerObjectNameW
)(EXTENDED_NAME_FORMAT NameFormat
, LPWSTR lpNameBuffer
, PULONG lpnSize
);
35 static PSecurityFunctionTableA (SEC_ENTRY
* pInitSecurityInterfaceA
)(void);
36 static PSecurityFunctionTableW (SEC_ENTRY
* pInitSecurityInterfaceW
)(void);
38 static EXTENDED_NAME_FORMAT formats
[] = {
39 NameUnknown
, NameFullyQualifiedDN
, NameSamCompatible
, NameDisplay
,
40 NameUniqueId
, NameCanonical
, NameUserPrincipal
, NameCanonicalEx
,
41 NameServicePrincipal
, NameDnsDomain
44 static void testGetComputerObjectNameA(void)
51 for (i
= 0; i
< (sizeof(formats
) / sizeof(formats
[0])); i
++) {
53 ZeroMemory(name
, sizeof(name
));
54 rc
= pGetComputerObjectNameA(formats
[i
], name
, &size
);
55 ok(rc
|| ((formats
[i
] == NameUnknown
) &&
56 (GetLastError() == ERROR_INVALID_PARAMETER
)) ||
57 (GetLastError() == ERROR_CANT_ACCESS_DOMAIN_INFO
) ||
58 (GetLastError() == ERROR_NO_SUCH_DOMAIN
),
59 "GetComputerObjectNameA(%d) failed: %d\n",
60 formats
[i
], GetLastError());
62 trace("GetComputerObjectNameA() returned %s\n", name
);
66 static void testGetComputerObjectNameW(void)
73 for (i
= 0; i
< (sizeof(formats
) / sizeof(formats
[0])); i
++) {
74 size
= sizeof(nameW
)/sizeof(nameW
[0]);
75 ZeroMemory(nameW
, sizeof(nameW
));
76 rc
= pGetComputerObjectNameW(formats
[i
], nameW
, &size
);
77 ok(rc
|| ((formats
[i
] == NameUnknown
) &&
78 (GetLastError() == ERROR_INVALID_PARAMETER
)) ||
79 (GetLastError() == ERROR_CANT_ACCESS_DOMAIN_INFO
) ||
80 (GetLastError() == ERROR_NO_SUCH_DOMAIN
),
81 "GetComputerObjectNameW(%d) failed: %d\n",
82 formats
[i
], GetLastError());
85 WideCharToMultiByte( CP_ACP
, 0, nameW
, -1, name
, sizeof(name
), NULL
, NULL
);
86 trace("GetComputerObjectNameW() returned %s\n", name
);
91 static void test_InitSecurityInterface(void)
93 PSecurityFunctionTableA sftA
;
94 PSecurityFunctionTableW sftW
;
96 sftA
= pInitSecurityInterfaceA();
97 ok(sftA
!= NULL
, "pInitSecurityInterfaceA failed\n");
98 ok(sftA
->dwVersion
== SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION
, "wrong dwVersion %ld in security function table\n", sftA
->dwVersion
);
99 ok(!sftA
->Reserved2
, "Reserved2 should be NULL instead of %p in security function table\n", sftA
->Reserved2
);
101 ok(sftA
->Reserved3
!= NULL
, "Reserved3 should not be NULL in security function table\n");
103 ok(sftA
->Reserved4
!= NULL
, "Reserved4 should not be NULL in security function table\n");
104 ok(!sftA
->Reserved8
, "Reserved8 should be NULL instead of %p in security function table\n", sftA
->Reserved8
);
106 if (!pInitSecurityInterfaceW
)
108 skip("InitSecurityInterfaceW not exported by secur32.dll\n");
112 sftW
= pInitSecurityInterfaceW();
113 ok(sftW
!= NULL
, "pInitSecurityInterfaceW failed\n");
114 ok(sftW
->dwVersion
== SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION
, "wrong dwVersion %ld in security function table\n", sftW
->dwVersion
);
115 ok(!sftW
->Reserved2
, "Reserved2 should be NULL instead of %p in security function table\n", sftW
->Reserved2
);
117 ok(sftW
->Reserved3
!= NULL
, "Reserved3 should note be NULL in security function table\n");
119 ok(sftW
->Reserved4
!= NULL
, "Reserved4 should not be NULL in security function table\n");
120 ok(!sftW
->Reserved8
, "Reserved8 should be NULL instead of %p in security function table\n", sftW
->Reserved8
);
125 secdll
= LoadLibraryA("secur32.dll");
128 secdll
= LoadLibraryA("security.dll");
132 pGetComputerObjectNameA
= (PVOID
)GetProcAddress(secdll
, "GetComputerObjectNameA");
133 pGetComputerObjectNameW
= (PVOID
)GetProcAddress(secdll
, "GetComputerObjectNameW");
134 pInitSecurityInterfaceA
= (PVOID
)GetProcAddress(secdll
, "InitSecurityInterfaceA");
135 pInitSecurityInterfaceW
= (PVOID
)GetProcAddress(secdll
, "InitSecurityInterfaceW");
137 if (pGetComputerObjectNameA
)
138 testGetComputerObjectNameA();
140 if (pGetComputerObjectNameW
)
141 testGetComputerObjectNameW();
143 test_InitSecurityInterface();