1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
3 #include "kwsysPrivate.h"
4 #include KWSYS_HEADER(MD5.h)
5 
6 /* Work-around CMake dependency scanning limitation.  This must
7    duplicate the above list of headers.  */
8 #if 0
9 #  include "MD5.h.in"
10 #endif
11 
12 #include <stdio.h>
13 #include <string.h>
14 
15 static const unsigned char testMD5input1[] =
16   "  A quick brown fox jumps over the lazy dog.\n"
17   "  This is sample text for MD5 sum input.\n";
18 static const char testMD5output1[] = "8f146af46ed4f267921bb937d4d3500c";
19 
20 static const int testMD5input2len = 28;
21 static const unsigned char testMD5input2[] = "the cow jumped over the moon";
22 static const char testMD5output2[] = "a2ad137b746138fae4e5adca9c85d3ae";
23 
testMD5_1(kwsysMD5 * md5)24 static int testMD5_1(kwsysMD5* md5)
25 {
26   char md5out[33];
27   kwsysMD5_Initialize(md5);
28   kwsysMD5_Append(md5, testMD5input1, -1);
29   kwsysMD5_FinalizeHex(md5, md5out);
30   md5out[32] = 0;
31   printf("md5sum 1: expected [%s]\n"
32          "               got [%s]\n",
33          testMD5output1, md5out);
34   return (strcmp(md5out, testMD5output1) != 0) ? 1 : 0;
35 }
36 
testMD5_2(kwsysMD5 * md5)37 static int testMD5_2(kwsysMD5* md5)
38 {
39   unsigned char digest[16];
40   char md5out[33];
41   kwsysMD5_Initialize(md5);
42   kwsysMD5_Append(md5, testMD5input2, testMD5input2len);
43   kwsysMD5_Finalize(md5, digest);
44   kwsysMD5_DigestToHex(digest, md5out);
45   md5out[32] = 0;
46   printf("md5sum 2: expected [%s]\n"
47          "               got [%s]\n",
48          testMD5output2, md5out);
49   return (strcmp(md5out, testMD5output2) != 0) ? 1 : 0;
50 }
51 
testEncode(int argc,char * argv[])52 int testEncode(int argc, char* argv[])
53 {
54   int result = 0;
55   (void)argc;
56   (void)argv;
57 
58   /* Test MD5 digest.  */
59   {
60     kwsysMD5* md5 = kwsysMD5_New();
61     result |= testMD5_1(md5);
62     result |= testMD5_2(md5);
63     kwsysMD5_Delete(md5);
64   }
65 
66   return result;
67 }
68