xref: /freebsd-src/lib/libmd/tests/mddriver.c (revision 01112a1711f3b7f329d84f7946ee0b8cdd1872c9)
1e0c51286SKyle Evans /* MDDRIVER.C - test driver for MD2, MD4 and MD5 */
2e0c51286SKyle Evans 
3e0c51286SKyle Evans /* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All rights
4e0c51286SKyle Evans  * reserved.
5e0c51286SKyle Evans  *
6e0c51286SKyle Evans  * RSA Data Security, Inc. makes no representations concerning either the
7e0c51286SKyle Evans  * merchantability of this software or the suitability of this software for
8e0c51286SKyle Evans  * any particular purpose. It is provided "as is" without express or implied
9e0c51286SKyle Evans  * warranty of any kind.
10e0c51286SKyle Evans  *
11e0c51286SKyle Evans  * These notices must be retained in any copies of any part of this
12e0c51286SKyle Evans  * documentation and/or software. */
13e0c51286SKyle Evans 
14e0c51286SKyle Evans #include <sys/types.h>
15e0c51286SKyle Evans 
16e0c51286SKyle Evans #include <stdio.h>
17e0c51286SKyle Evans #include <time.h>
18e0c51286SKyle Evans #include <string.h>
19e0c51286SKyle Evans 
20e0c51286SKyle Evans /* The following makes MD default to MD5 if it has not already been defined
21e0c51286SKyle Evans  * with C compiler flags. */
22e0c51286SKyle Evans #ifndef MD
23e0c51286SKyle Evans #define MD 5
24e0c51286SKyle Evans #endif
25e0c51286SKyle Evans 
26e0c51286SKyle Evans #if MD == 2
27e0c51286SKyle Evans #include "md2.h"
28e0c51286SKyle Evans #define MDData MD2Data
29e0c51286SKyle Evans #endif
30e0c51286SKyle Evans #if MD == 4
31e0c51286SKyle Evans #include "md4.h"
32e0c51286SKyle Evans #define MDData MD4Data
33e0c51286SKyle Evans #endif
34e0c51286SKyle Evans #if MD == 5
35e0c51286SKyle Evans #include "md5.h"
36e0c51286SKyle Evans #define MDData MD5Data
37e0c51286SKyle Evans #endif
38e0c51286SKyle Evans 
39e0c51286SKyle Evans /* Digests a string and prints the result. */
40e0c51286SKyle Evans static void
41*01112a17SKyle Evans MDString(const char *string)
42e0c51286SKyle Evans {
43e0c51286SKyle Evans 	char buf[33];
44e0c51286SKyle Evans 
45e0c51286SKyle Evans 	printf("MD%d (\"%s\") = %s\n",
46e0c51286SKyle Evans 	       MD, string, MDData(string, strlen(string), buf));
47e0c51286SKyle Evans }
48e0c51286SKyle Evans 
49e0c51286SKyle Evans /* Digests a reference suite of strings and prints the results. */
50e0c51286SKyle Evans int
51e0c51286SKyle Evans main(void)
52e0c51286SKyle Evans {
53e0c51286SKyle Evans 	printf("MD%d test suite:\n", MD);
54e0c51286SKyle Evans 
55e0c51286SKyle Evans 	MDString("");
56e0c51286SKyle Evans 	MDString("a");
57e0c51286SKyle Evans 	MDString("abc");
58e0c51286SKyle Evans 	MDString("message digest");
59e0c51286SKyle Evans 	MDString("abcdefghijklmnopqrstuvwxyz");
60e0c51286SKyle Evans 	MDString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
61e0c51286SKyle Evans 		"abcdefghijklmnopqrstuvwxyz0123456789");
62e0c51286SKyle Evans 	MDString("1234567890123456789012345678901234567890"
63e0c51286SKyle Evans 		"1234567890123456789012345678901234567890");
64e0c51286SKyle Evans 
65e0c51286SKyle Evans 	return 0;
66e0c51286SKyle Evans }
67