Deleted Added
sdiff udiff text old ( 22990 ) new ( 32074 )
full compact
1/*
2 * $Id$
3 *
4 * Derived from:
5 */
6
7/*
8 * MDDRIVER.C - test driver for MD2, MD4 and MD5
9 */
10

--- 11 unchanged lines hidden (view full) ---

22 */
23
24#include <sys/types.h>
25#include <md5.h>
26
27#include <stdio.h>
28#include <string.h>
29#include <time.h>
30
31#include "global.h"
32
33/*
34 * Length of test block, number of test blocks.
35 */
36#define TEST_BLOCK_LEN 1000
37#define TEST_BLOCK_COUNT 1000
38
39static void MDString PROTO_LIST((char *));
40static void MDTimeTrial PROTO_LIST((void));
41static void MDTestSuite PROTO_LIST((void));
42static void MDFilter PROTO_LIST((int));
43
44/* Main driver.
45
46Arguments (may be any combination):
47 -sstring - digests string
48 -t - runs time trial
49 -x - runs test script
50 filename - digests file
51 (none) - digests standard input
52 */
53int
54main(argc, argv)
55 int argc;
56 char *argv[];
57{
58 int i;
59 char *p;
60 char buf[33];
61
62 if (argc > 1)
63 for (i = 1; i < argc; i++)
64 if (argv[i][0] == '-' && argv[i][1] == 's')
65 MDString(argv[i] + 2);
66 else if (strcmp(argv[i], "-t") == 0)
67 MDTimeTrial();
68 else if (strcmp(argv[i], "-p") == 0)
69 MDFilter(1);
70 else if (strcmp(argv[i], "-x") == 0)
71 MDTestSuite();
72 else {
73 p = MD5File(argv[i],buf);
74 if (!p)
75 perror(argv[i]);
76 else
77 printf("MD5 (%s) = %s\n", argv[i], p);
78 }
79 else
80 MDFilter(0);
81
82 return (0);
83}
84/*
85 * Digests a string and prints the result.
86 */
87static void

--- 69 unchanged lines hidden (view full) ---

157/*
158 * Digests the standard input and prints the result.
159 */
160static void
161MDFilter(int pipe)
162{
163 MD5_CTX context;
164 int len;
165 unsigned char buffer[BUFSIZ], digest[16];
166 char buf[33];
167
168 MD5Init(&context);
169 while (len = fread(buffer, 1, BUFSIZ, stdin)) {
170 if(pipe && (len != fwrite(buffer, 1, len, stdout))) {
171 perror("stdout");
172 exit(1);
173 }
174 MD5Update(&context, buffer, len);
175 }
176 printf("%s\n", MD5End(&context,buf));
177}