b66045d4489b8cf3695c89d38d07572f144c4b1b
[sip-router] / md5utils.c
1 /* MDDRIVER.C - test driver for MD2, MD4 and MD5
2  */
3
4
5 /* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All
6 rights reserved.
7
8 RSA Data Security, Inc. makes no representations concerning either
9 the merchantability of this software or the suitability of this
10 software for any particular purpose. It is provided "as is"
11 without express or implied warranty of any kind.
12
13 These notices must be retained in any copies of any part of this
14 documentation and/or software.
15  */
16
17 /*
18
19 jku: added support to deal with vectors
20
21 */
22
23 #define MD 5
24
25 #include <stdio.h>
26 #include <time.h>
27 #include <string.h>
28 #include "md5global.h"
29 #include "md5.h"
30 #include "md5utils.h"
31 #include "dprint.h"
32 #include "ut.h"
33
34
35 /*static void MDString PROTO_LIST ((char *));*/
36
37 #define MD_CTX MD5_CTX
38 #define MDInit MD5Init
39 #define MDUpdate MD5Update
40 #define MDFinal MD5Final
41
42
43 /* Digests a string array and store the result in dst; assumes
44   32 bytes in dst
45  */
46 void MDStringArray (char *dst, str src[], int size)
47 {
48         MD_CTX context;
49         unsigned char digest[16];
50         int i;
51         int len;
52         char *s;
53
54 /*
55 #       ifdef EXTRA_DEBUG
56         int j;
57         int sum;
58 #endif
59 */
60
61         MDInit (&context);
62         for (i=0; i<size; i++) {
63                 trim_len( len, s, src[i] );
64 /*
65 #               ifdef EXTRA_DEBUG
66                 fprintf(stderr, "EXTRA_DEBUG: %d. (%d) {", i+1, len);
67                 sum=0;
68                 for (j=0; j<len; j++) {
69                         fprintf( stderr, "%c ", *(s+j));
70                         sum+=*(s+j);
71                 }
72                 for (j=0; j<len; j++) {
73                         fprintf( stderr, "%d ", *(s+j));
74                         sum+=*(s+j);
75                 }
76                 fprintf(stderr, " [%d]\n", sum );       
77 #               endif
78 */
79                 MDUpdate (&context, s, len);
80   }
81   MDFinal (digest, &context);
82
83   string2hex(digest, 16, dst );
84   DBG("DEBUG: MD5 calculated: %.*s\n", MD5_LEN, dst );
85
86 }