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#ifndef @KWSYS_NAMESPACE@_MD5_h
4#define @KWSYS_NAMESPACE@_MD5_h
5
6#include <@KWSYS_NAMESPACE@/Configure.h>
7
8/* Redefine all public interface symbol names to be in the proper
9   namespace.  These macros are used internally to kwsys only, and are
10   not visible to user code.  Use kwsysHeaderDump.pl to reproduce
11   these macros after making changes to the interface.  */
12#if !defined(KWSYS_NAMESPACE)
13#  define kwsys_ns(x) @KWSYS_NAMESPACE@##x
14#  define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
15#endif
16#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
17#  define kwsysMD5 kwsys_ns(MD5)
18#  define kwsysMD5_s kwsys_ns(MD5_s)
19#  define kwsysMD5_New kwsys_ns(MD5_New)
20#  define kwsysMD5_Delete kwsys_ns(MD5_Delete)
21#  define kwsysMD5_Initialize kwsys_ns(MD5_Initialize)
22#  define kwsysMD5_Append kwsys_ns(MD5_Append)
23#  define kwsysMD5_Finalize kwsys_ns(MD5_Finalize)
24#  define kwsysMD5_FinalizeHex kwsys_ns(MD5_FinalizeHex)
25#  define kwsysMD5_DigestToHex kwsys_ns(MD5_DigestToHex)
26#endif
27
28#if defined(__cplusplus)
29extern "C" {
30#endif
31
32/**
33 * MD5 state data structure.
34 */
35typedef struct kwsysMD5_s kwsysMD5;
36
37/**
38 * Create a new MD5 instance.  The returned instance is not initialized.
39 */
40kwsysEXPORT kwsysMD5* kwsysMD5_New(void);
41
42/**
43 * Delete an old MD5 instance.
44 */
45kwsysEXPORT void kwsysMD5_Delete(kwsysMD5* md5);
46
47/**
48 * Initialize a new MD5 digest.
49 */
50kwsysEXPORT void kwsysMD5_Initialize(kwsysMD5* md5);
51
52/**
53 * Append data to an MD5 digest.  If the given length is negative,
54 * data will be read up to but not including a terminating null.
55 */
56kwsysEXPORT void kwsysMD5_Append(kwsysMD5* md5, unsigned char const* data,
57                                 int length);
58
59/**
60 * Finalize a MD5 digest and get the 16-byte hash value.
61 */
62kwsysEXPORT void kwsysMD5_Finalize(kwsysMD5* md5, unsigned char digest[16]);
63
64/**
65 * Finalize a MD5 digest and get the 32-bit hexadecimal representation.
66 */
67kwsysEXPORT void kwsysMD5_FinalizeHex(kwsysMD5* md5, char buffer[32]);
68
69/**
70 * Convert a MD5 digest 16-byte value to a 32-byte hexadecimal representation.
71 */
72kwsysEXPORT void kwsysMD5_DigestToHex(unsigned char const digest[16],
73                                      char buffer[32]);
74
75#if defined(__cplusplus)
76} /* extern "C" */
77#endif
78
79/* If we are building a kwsys .c or .cxx file, let it use these macros.
80   Otherwise, undefine them to keep the namespace clean.  */
81#if !defined(KWSYS_NAMESPACE)
82#  undef kwsys_ns
83#  undef kwsysEXPORT
84#  if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
85#    undef kwsysMD5
86#    undef kwsysMD5_s
87#    undef kwsysMD5_New
88#    undef kwsysMD5_Delete
89#    undef kwsysMD5_Initialize
90#    undef kwsysMD5_Append
91#    undef kwsysMD5_Finalize
92#    undef kwsysMD5_FinalizeHex
93#    undef kwsysMD5_DigestToHex
94#  endif
95#endif
96
97#endif
98