annotate SDL3/SDL_test_md5.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * MD5 related functions of SDL test framework.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * This code is a part of the SDL test library, not the main SDL library.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 ***********************************************************************
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 ** Header file for implementation of MD5 **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 ** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 ** Created: 2/17/90 RLR **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 ** Revised (for MD5): RLR 4/27/91 **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 ** -- G modified to have y&~z instead of y&z **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 ** -- FF, GG, HH modified to add in last register done **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 ** -- distinct additive constant for each step **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 ** -- round 4 added, working mod 7 **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 ***********************************************************************
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 ***********************************************************************
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 ** Message-digest routines: **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 ** To form the message digest for a message M **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 ** (1) Initialize a context buffer mdContext using MD5Init **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 ** (2) Call MD5Update on mdContext and M **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 ** (3) Call MD5Final on mdContext **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 ** The message digest is now in mdContext->digest[0...15] **
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 ***********************************************************************
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 #ifndef SDL_test_md5_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 #define SDL_test_md5_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 /* ------------ Definitions --------- */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 /* typedef a 32-bit type */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 typedef Uint32 MD5UINT4;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 /* Data structure for MD5 (Message-Digest) computation */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 typedef struct SDLTest_Md5Context {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 MD5UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 MD5UINT4 buf[4]; /* scratch buffer */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 unsigned char in[64]; /* input buffer */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 unsigned char digest[16]; /* actual digest after Md5Final call */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 } SDLTest_Md5Context;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 /* ---------- Function Prototypes ------------- */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 * initialize the context
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * \param mdContext pointer to context variable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 * Note: The function initializes the message-digest context
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 * mdContext. Call before each new use of the context -
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 * all fields are set to zero.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 void SDLCALL SDLTest_Md5Init(SDLTest_Md5Context *mdContext);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 * update digest from variable length data
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 * \param mdContext pointer to context variable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 * \param inBuf pointer to data array/string
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 * \param inLen length of data array/string
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 * Note: The function updates the message-digest context to account
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 * for the presence of each of the characters inBuf[0..inLen-1]
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 * in the message whose digest is being computed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 void SDLCALL SDLTest_Md5Update(SDLTest_Md5Context *mdContext, unsigned char *inBuf,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 unsigned int inLen);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 * complete digest computation
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 * \param mdContext pointer to context variable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 * Note: The function terminates the message-digest computation and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 * ends with the desired message digest in mdContext.digest[0..15].
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 * Always call before using the digest[] variable.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 void SDLCALL SDLTest_Md5Final(SDLTest_Md5Context *mdContext);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 #endif /* SDL_test_md5_h_ */