2 * Unit tests for SystemFunctionXXX (LMHash?)
4 * Copyright 2004 Hans Leidekker
5 * Copyright 2006 Mike McCormack
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
25 #define WIN32_NO_STATUS
26 #include "wine/test.h"
34 unsigned char *Buffer
;
37 typedef int (WINAPI
*descrypt
)(unsigned char *, unsigned char *, unsigned char *);
38 static NTSTATUS (WINAPI
*pSystemFunction001
)(const BYTE
*, const BYTE
*, LPBYTE
);
39 static NTSTATUS (WINAPI
*pSystemFunction002
)(const BYTE
*, const BYTE
*, LPBYTE
);
40 static NTSTATUS (WINAPI
*pSystemFunction003
)(const BYTE
*, LPBYTE
);
41 static NTSTATUS (WINAPI
*pSystemFunction004
)(const struct ustring
*, const struct ustring
*, struct ustring
*);
42 static NTSTATUS (WINAPI
*pSystemFunction005
)(const struct ustring
*, const struct ustring
*, struct ustring
*);
43 static VOID (WINAPI
*pSystemFunction006
)( PCSTR passwd
, PSTR lmhash
);
44 static NTSTATUS (WINAPI
*pSystemFunction008
)(const BYTE
*, const BYTE
*, LPBYTE
);
45 static NTSTATUS (WINAPI
*pSystemFunction009
)(const BYTE
*, const BYTE
*, LPBYTE
);
46 static NTSTATUS (WINAPI
*pSystemFunction032
)(struct ustring
*, const struct ustring
*);
48 /* encrypt two blocks */
49 static descrypt pSystemFunction012
;
50 static descrypt pSystemFunction014
;
51 static descrypt pSystemFunction016
;
52 static descrypt pSystemFunction018
;
53 static descrypt pSystemFunction020
;
54 static descrypt pSystemFunction022
;
56 /* decrypt two blocks */
57 static descrypt pSystemFunction013
;
58 static descrypt pSystemFunction015
;
59 static descrypt pSystemFunction017
;
60 static descrypt pSystemFunction019
;
61 static descrypt pSystemFunction021
;
62 static descrypt pSystemFunction023
;
64 /* encrypt two blocks with a 32bit key */
65 static descrypt pSystemFunction024
;
66 static descrypt pSystemFunction025
;
68 /* decrypt two blocks with a 32bit key */
69 static descrypt pSystemFunction026
;
70 static descrypt pSystemFunction027
;
72 typedef int (WINAPI
*memcmpfunc
)(unsigned char *, unsigned char *);
73 static memcmpfunc pSystemFunction030
;
74 static memcmpfunc pSystemFunction031
;
76 static void test_SystemFunction006(void)
80 char passwd
[] = { 's','e','c','r','e','t', 0, 0, 0, 0, 0, 0, 0, 0 };
81 unsigned char expect
[] =
82 { 0x85, 0xf5, 0x28, 0x9f, 0x09, 0xdc, 0xa7, 0xeb,
83 0xaa, 0xd3, 0xb4, 0x35, 0xb5, 0x14, 0x04, 0xee };
85 pSystemFunction006( passwd
, lmhash
);
87 ok( !memcmp( lmhash
, expect
, sizeof(expect
) ),
88 "lmhash: %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n",
89 lmhash
[0], lmhash
[1], lmhash
[2], lmhash
[3], lmhash
[4], lmhash
[5],
90 lmhash
[6], lmhash
[7], lmhash
[8], lmhash
[9], lmhash
[10], lmhash
[11],
91 lmhash
[12], lmhash
[13], lmhash
[14], lmhash
[15] );
94 static void test_SystemFunction008(void)
96 /* example data from http://davenport.sourceforge.net/ntlm.html */
97 unsigned char hash
[0x40] = {
98 0xff, 0x37, 0x50, 0xbc, 0xc2, 0xb2, 0x24, 0x12,
99 0xc2, 0x26, 0x5b, 0x23, 0x73, 0x4e, 0x0d, 0xac };
100 unsigned char challenge
[0x40] = {
101 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
102 unsigned char expected
[0x18] = {
103 0xc3, 0x37, 0xcd, 0x5c, 0xbd, 0x44, 0xfc, 0x97,
104 0x82, 0xa6, 0x67, 0xaf, 0x6d, 0x42, 0x7c, 0x6d,
105 0xe6, 0x7c, 0x20, 0xc2, 0xd3, 0xe7, 0x7c, 0x56 };
106 unsigned char output
[0x18];
109 r
= pSystemFunction008(0,0,0);
110 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
112 r
= pSystemFunction008(challenge
,0,0);
113 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
115 r
= pSystemFunction008(challenge
, hash
, 0);
116 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
121 r
= pSystemFunction008(challenge
, 0, output
);
122 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
125 r
= pSystemFunction008(0, 0, output
);
126 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
128 memset(output
, 0, sizeof output
);
129 r
= pSystemFunction008(challenge
, hash
, output
);
130 ok( r
== STATUS_SUCCESS
, "wrong error code\n");
132 ok( !memcmp(output
, expected
, sizeof expected
), "response wrong\n");
135 static void test_SystemFunction001(void)
137 unsigned char key
[8] = { 0xff, 0x37, 0x50, 0xbc, 0xc2, 0xb2, 0x24, 0 };
138 unsigned char data
[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
139 unsigned char expected
[8] = { 0xc3, 0x37, 0xcd, 0x5c, 0xbd, 0x44, 0xfc, 0x97 };
140 unsigned char output
[16];
143 r
= pSystemFunction001(0,0,0);
144 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
146 memset(output
, 0, sizeof output
);
148 r
= pSystemFunction001(data
,key
,output
);
149 ok( r
== STATUS_SUCCESS
, "wrong error code\n");
151 ok(!memcmp(output
, expected
, sizeof expected
), "response wrong\n");
154 static void test_SystemFunction002(void)
156 /* reverse of SystemFunction001 */
157 unsigned char key
[8] = { 0xff, 0x37, 0x50, 0xbc, 0xc2, 0xb2, 0x24, 0 };
158 unsigned char expected
[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
159 unsigned char data
[8] = { 0xc3, 0x37, 0xcd, 0x5c, 0xbd, 0x44, 0xfc, 0x97 };
160 unsigned char output
[8];
163 memset(output
, 0, sizeof output
);
164 r
= pSystemFunction002(data
, key
, output
);
165 ok(r
== STATUS_SUCCESS
, "function failed\n");
166 ok(!memcmp(output
, expected
, sizeof expected
), "response wrong\n");
169 static void test_SystemFunction032(void)
171 struct ustring key
, data
;
172 unsigned char szKey
[] = { 'f','o','o',0 };
173 unsigned char szData
[8] = { 'b','a','r',0 };
174 unsigned char expected
[] = {0x28, 0xb9, 0xf8, 0xe1};
177 /* crashes: pSystemFunction032(NULL,NULL); */
180 key
.Length
= sizeof szKey
;
181 key
.MaximumLength
= key
.Length
;
183 data
.Buffer
= szData
;
185 data
.MaximumLength
= 8;
187 r
= pSystemFunction032(&data
, &key
);
188 ok(r
== STATUS_SUCCESS
, "function failed\n");
190 ok(!memcmp(expected
, data
.Buffer
, data
.Length
), "wrong result\n");
193 static void test_SystemFunction003(void)
195 unsigned char output
[8], data
[8];
196 unsigned char key
[7] = { 0xff, 0x37, 0x50, 0xbc, 0xc2, 0xb2, 0x24 };
197 unsigned char exp1
[8] = { 0x9d, 0x21, 0xc8, 0x86, 0x6c, 0x21, 0xcf, 0x43 };
198 char exp2
[] = "KGS!@#$%";
201 r
= pSystemFunction003(NULL
, NULL
);
202 ok(r
== STATUS_UNSUCCESSFUL
, "function failed\n");
204 r
= pSystemFunction003(key
, NULL
);
205 ok(r
== STATUS_UNSUCCESSFUL
, "function failed\n");
207 memset(data
, 0, sizeof data
);
208 r
= pSystemFunction003(key
, data
);
209 ok(r
== STATUS_SUCCESS
, "function failed\n");
210 ok( !memcmp(exp1
, data
, sizeof data
), "decrypted message wrong\n");
212 memset(output
, 0, sizeof output
);
213 r
= pSystemFunction002(data
, key
, output
);
214 ok(r
== STATUS_SUCCESS
, "function failed\n");
216 ok( !memcmp(exp2
, output
, sizeof output
), "decrypted message wrong\n");
219 static void test_SystemFunction004(void)
221 unsigned char inbuf
[0x100], keybuf
[0x100], resbuf
[0x100];
222 unsigned char output
[8];
224 struct ustring in
, key
, out
;
227 r = pSystemFunction004(NULL, NULL, NULL);
228 ok(r == STATUS_UNSUCCESSFUL, "function failed\n");
231 memset(inbuf
, 0, sizeof inbuf
);
232 memset(keybuf
, 0, sizeof keybuf
);
233 memset(resbuf
, 0, sizeof resbuf
);
236 in
.Length
= in
.MaximumLength
= 0;
239 key
.Length
= key
.MaximumLength
= 0;
242 out
.Length
= out
.MaximumLength
= 0;
244 r
= pSystemFunction004(&in
, &key
, &out
);
245 ok(r
== STATUS_INVALID_PARAMETER_2
, "function failed\n");
249 key
.MaximumLength
= 0x100;
251 r
= pSystemFunction004(&in
, &key
, &out
);
252 ok(r
== STATUS_BUFFER_TOO_SMALL
, "function failed\n");
256 in
.MaximumLength
= 0;
258 /* add two identical blocks... */
269 /* check that the Length field is really obeyed */
274 key
.MaximumLength
= 0;
280 out
.MaximumLength
= 0x40;
281 r
= pSystemFunction004(&in
, &key
, &out
);
282 ok(r
== STATUS_SUCCESS
, "function failed\n");
286 memset(output
, 0, sizeof output
);
287 r
= pSystemFunction002(out
.Buffer
, key
.Buffer
, output
);
288 ok(r
== STATUS_SUCCESS
, "function failed\n");
290 ok(((unsigned int*)output
)[0] == in
.Length
, "encrypted length wrong\n");
291 ok(((unsigned int*)output
)[1] == 1, "encrypted value wrong\n");
293 memset(output
, 0, sizeof output
);
294 r
= pSystemFunction002(out
.Buffer
+8, key
.Buffer
, output
);
295 ok(r
== STATUS_SUCCESS
, "function failed\n");
296 ok(!memcmp(output
, inbuf
, sizeof output
), "encrypted data wrong\n");
298 memset(output
, 0, sizeof output
);
299 r
= pSystemFunction002(out
.Buffer
+16, key
.Buffer
, output
);
300 ok(r
== STATUS_SUCCESS
, "function failed\n");
301 ok(!memcmp(output
, inbuf
, sizeof output
), "encrypted data wrong\n");
304 static void test_SystemFunction005(void)
306 char output
[0x40], result
[0x40];
308 struct ustring in
, key
, out
, res
;
309 static char datastr
[] = "twinkle twinkle little star";
310 static char keystr
[] = "byolnim";
312 in
.Buffer
= (unsigned char *)datastr
;
313 in
.Length
= strlen(datastr
);
314 in
.MaximumLength
= 0;
316 key
.Buffer
= (unsigned char *)keystr
;
317 key
.Length
= strlen(keystr
);
318 key
.MaximumLength
= 0;
320 out
.Buffer
= (unsigned char *)output
;
321 out
.Length
= out
.MaximumLength
= sizeof output
;
323 r
= pSystemFunction004(&in
, &key
, &out
);
324 ok(r
== STATUS_SUCCESS
, "function failed\n");
326 memset(result
, 0, sizeof result
);
327 res
.Buffer
= (unsigned char *)result
;
329 res
.MaximumLength
= sizeof result
;
331 r
= pSystemFunction005(&out
, &key
, &res
);
332 ok(r
== STATUS_SUCCESS
, "function failed\n");
334 r
= pSystemFunction005(&out
, &key
, &res
);
335 ok(r
== STATUS_SUCCESS
, "function failed\n");
337 ok(res
.Length
== in
.Length
, "Length wrong\n");
338 ok(!memcmp(res
.Buffer
, in
.Buffer
, in
.Length
), "data wrong\n");
341 out
.MaximumLength
= 0;
342 r
= pSystemFunction005(&out
, &key
, &res
);
343 ok(r
== STATUS_SUCCESS
||
344 r
== STATUS_INVALID_PARAMETER_1
, /* Vista */
345 "Expected STATUS_SUCCESS or STATUS_INVALID_PARAMETER_1, got %08x\n", r
);
347 ok(res
.Length
== in
.Length
, "Length wrong\n");
348 ok(!memcmp(res
.Buffer
, in
.Buffer
, in
.Length
), "data wrong\n");
350 res
.MaximumLength
= 0;
351 r
= pSystemFunction005(&out
, &key
, &res
);
352 ok(r
== STATUS_BUFFER_TOO_SMALL
||
353 r
== STATUS_INVALID_PARAMETER_1
, /* Vista */
354 "Expected STATUS_BUFFER_TOO_SMALL or STATUS_INVALID_PARAMETER_1, got %08x\n", r
);
357 r
= pSystemFunction005(&out
, &key
, &res
);
358 ok(r
== STATUS_UNKNOWN_REVISION
||
359 r
== STATUS_INVALID_PARAMETER_1
, /* Vista */
360 "Expected STATUS_UNKNOWN_REVISION or STATUS_INVALID_PARAMETER_1, got %08x\n", r
);
363 r
= pSystemFunction005(&out
, &key
, &res
);
364 ok(r
== STATUS_INVALID_PARAMETER_2
, "function failed\n");
367 static void test_SystemFunction009(void)
369 unsigned char hash
[0x10] = {
370 0xff, 0x37, 0x50, 0xbc, 0xc2, 0xb2, 0x24, 0x12,
371 0xc2, 0x26, 0x5b, 0x23, 0x73, 0x4e, 0x0d, 0xac };
372 unsigned char challenge
[8] = {
373 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
374 unsigned char expected
[0x18] = {
375 0xc3, 0x37, 0xcd, 0x5c, 0xbd, 0x44, 0xfc, 0x97,
376 0x82, 0xa6, 0x67, 0xaf, 0x6d, 0x42, 0x7c, 0x6d,
377 0xe6, 0x7c, 0x20, 0xc2, 0xd3, 0xe7, 0x7c, 0x56 };
378 unsigned char output
[0x18];
381 memset(output
, 0, sizeof output
);
382 r
= pSystemFunction009(challenge
, hash
, output
);
383 ok( r
== STATUS_SUCCESS
, "wrong error code\n");
384 ok(!memcmp(output
, expected
, sizeof expected
), "response wrong\n");
387 static unsigned char des_key
[] = {
388 0xff, 0x37, 0x50, 0xbc, 0xc2, 0xb2, 0x24,
389 0xff, 0x37, 0x50, 0xbc, 0xc2, 0xb2, 0x24,
391 static unsigned char des_plaintext
[] = {
392 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
393 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0
395 static unsigned char des_ciphertext
[] = {
396 0xc3, 0x37, 0xcd, 0x5c, 0xbd, 0x44, 0xfc, 0x97,
397 0xc3, 0x37, 0xcd, 0x5c, 0xbd, 0x44, 0xfc, 0x97, 0
400 /* test functions that encrypt two DES blocks */
401 static void test_SystemFunction_encrypt(descrypt func
, int num
)
403 unsigned char output
[0x11];
408 win_skip("SystemFunction%03d is not available\n", num
);
412 r
= func(NULL
, NULL
, NULL
);
413 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
415 memset(output
, 0, sizeof output
);
416 r
= func(des_plaintext
, des_key
, output
);
417 ok( r
== STATUS_SUCCESS
, "wrong error code\n");
418 ok( !memcmp(des_ciphertext
, output
, sizeof des_ciphertext
), "ciphertext wrong (%d)\n", num
);
421 /* test functions that decrypt two DES blocks */
422 static void test_SystemFunction_decrypt(descrypt func
, int num
)
424 unsigned char output
[0x11];
429 win_skip("SystemFunction%03d is not available\n", num
);
433 r
= func(NULL
, NULL
, NULL
);
434 ok( r
== STATUS_UNSUCCESSFUL
, "wrong error code\n");
436 memset(output
, 0, sizeof output
);
438 r
= func(des_ciphertext
, des_key
, output
);
439 ok( r
== STATUS_SUCCESS
, "wrong error code\n");
440 ok( !memcmp(des_plaintext
, output
, sizeof des_plaintext
), "plaintext wrong (%d)\n", num
);
443 static unsigned char des_ciphertext32
[] = {
444 0x69, 0x51, 0x35, 0x69, 0x0d, 0x29, 0x24, 0xad,
445 0x23, 0x6d, 0xfd, 0x43, 0x0d, 0xd3, 0x25, 0x81, 0
448 static void test_SystemFunction_enc32(descrypt func
, int num
)
450 unsigned char key
[4], output
[0x11];
455 win_skip("SystemFunction%03d is not available\n", num
);
459 memset(output
, 0, sizeof output
);
461 /* two keys are generated using 4 bytes, repeated 4 times ... */
462 memcpy(key
, "foo", 4);
464 r
= func(des_plaintext
, key
, output
);
465 ok( r
== STATUS_SUCCESS
, "wrong error code (%d)\n", num
);
467 ok( !memcmp( output
, des_ciphertext32
, sizeof des_ciphertext32
), "ciphertext wrong (%d)\n", num
);
470 static void test_SystemFunction_dec32(descrypt func
, int num
)
472 unsigned char key
[4], output
[0x11];
477 win_skip("SystemFunction%03d is not available\n", num
);
481 memset(output
, 0, sizeof output
);
483 /* two keys are generated using 4 bytes, repeated 4 times ... */
484 memcpy(key
, "foo", 4);
486 r
= func(des_ciphertext32
, key
, output
);
487 ok( r
== STATUS_SUCCESS
, "wrong error code (%d)\n", num
);
489 ok( !memcmp( output
, des_plaintext
, sizeof des_plaintext
), "plaintext wrong (%d)\n", num
);
492 static void test_memcmpfunc(memcmpfunc fn
)
494 unsigned char arg1
[0x20], arg2
[0x20];
499 win_skip("function is not available\n");
503 memset(arg1
, 0, sizeof arg1
);
504 memset(arg2
, 0, sizeof arg2
);
508 ok( r
== 1, "wrong error code\n");
510 memset(arg1
, 1, sizeof arg1
);
511 memset(arg2
, 1, sizeof arg2
);
515 ok( r
== 1, "wrong error code\n");
517 memset(arg1
, 0, sizeof arg1
);
518 memset(arg2
, 1, sizeof arg2
);
521 ok( r
== 0, "wrong error code\n");
523 memset(arg1
, 1, sizeof arg1
);
524 memset(arg2
, 0, sizeof arg2
);
527 ok( r
== 0, "wrong error code\n");
530 START_TEST(crypt_lmhash
)
532 HMODULE module
= GetModuleHandleA("advapi32.dll");
534 pSystemFunction001
= (void *)GetProcAddress( module
, "SystemFunction001" );
535 if (pSystemFunction001
)
536 test_SystemFunction001();
538 win_skip("SystemFunction001 is not available\n");
540 pSystemFunction002
= (void *)GetProcAddress( module
, "SystemFunction002" );
541 if (pSystemFunction002
)
542 test_SystemFunction002();
544 win_skip("SystemFunction002 is not available\n");
546 pSystemFunction003
= (void *)GetProcAddress( module
, "SystemFunction003" );
547 if (pSystemFunction003
)
548 test_SystemFunction003();
550 win_skip("SystemFunction002 is not available\n");
552 pSystemFunction004
= (void *)GetProcAddress( module
, "SystemFunction004" );
553 if (pSystemFunction004
)
554 test_SystemFunction004();
556 win_skip("SystemFunction004 is not available\n");
558 pSystemFunction005
= (void *)GetProcAddress( module
, "SystemFunction005" );
559 if (pSystemFunction005
)
560 test_SystemFunction005();
562 win_skip("SystemFunction005 is not available\n");
564 pSystemFunction006
= (void *)GetProcAddress( module
, "SystemFunction006" );
565 if (pSystemFunction006
)
566 test_SystemFunction006();
568 win_skip("SystemFunction006 is not available\n");
570 pSystemFunction008
= (void *)GetProcAddress( module
, "SystemFunction008" );
571 if (pSystemFunction008
)
572 test_SystemFunction008();
574 win_skip("SystemFunction008 is not available\n");
576 pSystemFunction009
= (void *)GetProcAddress( module
, "SystemFunction009" );
577 if (pSystemFunction009
)
578 test_SystemFunction009();
580 win_skip("SystemFunction009 is not available\n");
582 pSystemFunction012
= (descrypt
) GetProcAddress( module
, "SystemFunction012");
583 pSystemFunction013
= (descrypt
) GetProcAddress( module
, "SystemFunction013");
584 pSystemFunction014
= (descrypt
) GetProcAddress( module
, "SystemFunction014");
585 pSystemFunction015
= (descrypt
) GetProcAddress( module
, "SystemFunction015");
586 pSystemFunction016
= (descrypt
) GetProcAddress( module
, "SystemFunction016");
587 pSystemFunction017
= (descrypt
) GetProcAddress( module
, "SystemFunction017");
588 pSystemFunction018
= (descrypt
) GetProcAddress( module
, "SystemFunction018");
589 pSystemFunction019
= (descrypt
) GetProcAddress( module
, "SystemFunction019");
590 pSystemFunction020
= (descrypt
) GetProcAddress( module
, "SystemFunction020");
591 pSystemFunction021
= (descrypt
) GetProcAddress( module
, "SystemFunction021");
592 pSystemFunction022
= (descrypt
) GetProcAddress( module
, "SystemFunction022");
593 pSystemFunction023
= (descrypt
) GetProcAddress( module
, "SystemFunction023");
595 /* these all encrypt two DES blocks */
596 test_SystemFunction_encrypt(pSystemFunction012
, 12);
597 test_SystemFunction_encrypt(pSystemFunction014
, 14);
598 test_SystemFunction_encrypt(pSystemFunction016
, 16);
599 test_SystemFunction_encrypt(pSystemFunction018
, 18);
600 test_SystemFunction_encrypt(pSystemFunction020
, 20);
601 test_SystemFunction_encrypt(pSystemFunction022
, 22);
603 /* these all decrypt two DES blocks */
604 test_SystemFunction_decrypt(pSystemFunction013
, 13);
605 test_SystemFunction_decrypt(pSystemFunction015
, 15);
606 test_SystemFunction_decrypt(pSystemFunction017
, 17);
607 test_SystemFunction_decrypt(pSystemFunction019
, 19);
608 test_SystemFunction_decrypt(pSystemFunction021
, 21);
609 test_SystemFunction_decrypt(pSystemFunction023
, 23);
611 pSystemFunction024
= (descrypt
) GetProcAddress( module
, "SystemFunction024");
612 pSystemFunction025
= (descrypt
) GetProcAddress( module
, "SystemFunction025");
613 pSystemFunction026
= (descrypt
) GetProcAddress( module
, "SystemFunction026");
614 pSystemFunction027
= (descrypt
) GetProcAddress( module
, "SystemFunction027");
616 /* these encrypt two DES blocks with a short key */
617 test_SystemFunction_enc32(pSystemFunction024
, 24);
618 test_SystemFunction_enc32(pSystemFunction026
, 26);
620 /* these descrypt two DES blocks with a short key */
621 test_SystemFunction_dec32(pSystemFunction025
, 25);
622 test_SystemFunction_dec32(pSystemFunction027
, 27);
624 pSystemFunction030
= (memcmpfunc
) GetProcAddress( module
, "SystemFunction030" );
625 pSystemFunction031
= (memcmpfunc
) GetProcAddress( module
, "SystemFunction031" );
627 test_memcmpfunc(pSystemFunction030
);
628 test_memcmpfunc(pSystemFunction031
);
630 pSystemFunction032
= (void *)GetProcAddress( module
, "SystemFunction032" );
631 if (pSystemFunction032
)
632 test_SystemFunction032();
634 win_skip("SystemFunction032 is not available\n");