Blender  V3.3
md5.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Zlib
2  * Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved.
3  * L. Peter Deutsch
4  * ghost@aladdin.com */
5 
6 /* Minor modifications done to remove some code and change style. */
7 
8 #include "util/md5.h"
9 #include "util/path.h"
10 
11 #include <stdio.h>
12 #include <string.h>
13 
15 
16 #define T_MASK ((uint32_t)~0)
17 #define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
18 #define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
19 #define T3 0x242070db
20 #define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
21 #define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
22 #define T6 0x4787c62a
23 #define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
24 #define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
25 #define T9 0x698098d8
26 #define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
27 #define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
28 #define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
29 #define T13 0x6b901122
30 #define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
31 #define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
32 #define T16 0x49b40821
33 #define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
34 #define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
35 #define T19 0x265e5a51
36 #define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
37 #define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
38 #define T22 0x02441453
39 #define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
40 #define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
41 #define T25 0x21e1cde6
42 #define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
43 #define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
44 #define T28 0x455a14ed
45 #define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
46 #define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
47 #define T31 0x676f02d9
48 #define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
49 #define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
50 #define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
51 #define T35 0x6d9d6122
52 #define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
53 #define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
54 #define T38 0x4bdecfa9
55 #define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
56 #define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
57 #define T41 0x289b7ec6
58 #define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
59 #define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
60 #define T44 0x04881d05
61 #define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
62 #define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
63 #define T47 0x1fa27cf8
64 #define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
65 #define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
66 #define T50 0x432aff97
67 #define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
68 #define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
69 #define T53 0x655b59c3
70 #define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
71 #define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
72 #define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
73 #define T57 0x6fa87e4f
74 #define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
75 #define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
76 #define T60 0x4e0811a1
77 #define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
78 #define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
79 #define T63 0x2ad7d2bb
80 #define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
81 
82 void MD5Hash::process(const uint8_t *data /*[64]*/)
83 {
84  uint32_t a = abcd[0], b = abcd[1], c = abcd[2], d = abcd[3];
85  uint32_t t;
86  /* Define storage for little-endian or both types of CPUs. */
87  uint32_t xbuf[16];
88  const uint32_t *X;
89 
90  {
91  /*
92  * Determine dynamically whether this is a big-endian or
93  * little-endian machine, since we can use a more efficient
94  * algorithm on the latter.
95  */
96  static const int w = 1;
97 
98  if (*((const uint8_t *)&w)) /* dynamic little-endian */
99  {
100  /*
101  * On little-endian machines, we can process properly aligned
102  * data without copying it.
103  */
104  if (!((data - (const uint8_t *)0) & 3)) {
105  /* data are properly aligned */
106  X = (const uint32_t *)data;
107  }
108  else {
109  /* not aligned */
110  memcpy(xbuf, data, 64);
111  X = xbuf;
112  }
113  }
114  else { /* dynamic big-endian */
115  /*
116  * On big-endian machines, we must arrange the bytes in the
117  * right order.
118  */
119  const uint8_t *xp = data;
120  int i;
121 
122  X = xbuf; /* (dynamic only) */
123  for (i = 0; i < 16; ++i, xp += 4)
124  xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
125  }
126  }
127 
128 #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
129 
130  /* Round 1. */
131  /* Let [abcd k s i] denote the operation
132  * a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
133 #define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
134 #define SET(a, b, c, d, k, s, Ti) \
135  t = a + F(b, c, d) + X[k] + Ti; \
136  a = ROTATE_LEFT(t, s) + b
137  /* Do the following 16 operations. */
138  SET(a, b, c, d, 0, 7, T1);
139  SET(d, a, b, c, 1, 12, T2);
140  SET(c, d, a, b, 2, 17, T3);
141  SET(b, c, d, a, 3, 22, T4);
142  SET(a, b, c, d, 4, 7, T5);
143  SET(d, a, b, c, 5, 12, T6);
144  SET(c, d, a, b, 6, 17, T7);
145  SET(b, c, d, a, 7, 22, T8);
146  SET(a, b, c, d, 8, 7, T9);
147  SET(d, a, b, c, 9, 12, T10);
148  SET(c, d, a, b, 10, 17, T11);
149  SET(b, c, d, a, 11, 22, T12);
150  SET(a, b, c, d, 12, 7, T13);
151  SET(d, a, b, c, 13, 12, T14);
152  SET(c, d, a, b, 14, 17, T15);
153  SET(b, c, d, a, 15, 22, T16);
154 #undef SET
155 
156  /* Round 2. */
157  /* Let [abcd k s i] denote the operation
158  * a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
159 #define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
160 #define SET(a, b, c, d, k, s, Ti) \
161  t = a + G(b, c, d) + X[k] + Ti; \
162  a = ROTATE_LEFT(t, s) + b
163  /* Do the following 16 operations. */
164  SET(a, b, c, d, 1, 5, T17);
165  SET(d, a, b, c, 6, 9, T18);
166  SET(c, d, a, b, 11, 14, T19);
167  SET(b, c, d, a, 0, 20, T20);
168  SET(a, b, c, d, 5, 5, T21);
169  SET(d, a, b, c, 10, 9, T22);
170  SET(c, d, a, b, 15, 14, T23);
171  SET(b, c, d, a, 4, 20, T24);
172  SET(a, b, c, d, 9, 5, T25);
173  SET(d, a, b, c, 14, 9, T26);
174  SET(c, d, a, b, 3, 14, T27);
175  SET(b, c, d, a, 8, 20, T28);
176  SET(a, b, c, d, 13, 5, T29);
177  SET(d, a, b, c, 2, 9, T30);
178  SET(c, d, a, b, 7, 14, T31);
179  SET(b, c, d, a, 12, 20, T32);
180 #undef SET
181 
182  /* Round 3. */
183  /* Let [abcd k s t] denote the operation
184  * a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
185 #define H(x, y, z) ((x) ^ (y) ^ (z))
186 #define SET(a, b, c, d, k, s, Ti) \
187  t = a + H(b, c, d) + X[k] + Ti; \
188  a = ROTATE_LEFT(t, s) + b
189  /* Do the following 16 operations. */
190  SET(a, b, c, d, 5, 4, T33);
191  SET(d, a, b, c, 8, 11, T34);
192  SET(c, d, a, b, 11, 16, T35);
193  SET(b, c, d, a, 14, 23, T36);
194  SET(a, b, c, d, 1, 4, T37);
195  SET(d, a, b, c, 4, 11, T38);
196  SET(c, d, a, b, 7, 16, T39);
197  SET(b, c, d, a, 10, 23, T40);
198  SET(a, b, c, d, 13, 4, T41);
199  SET(d, a, b, c, 0, 11, T42);
200  SET(c, d, a, b, 3, 16, T43);
201  SET(b, c, d, a, 6, 23, T44);
202  SET(a, b, c, d, 9, 4, T45);
203  SET(d, a, b, c, 12, 11, T46);
204  SET(c, d, a, b, 15, 16, T47);
205  SET(b, c, d, a, 2, 23, T48);
206 #undef SET
207 
208  /* Round 4. */
209  /* Let [abcd k s t] denote the operation
210  * a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
211 #define I(x, y, z) ((y) ^ ((x) | ~(z)))
212 #define SET(a, b, c, d, k, s, Ti) \
213  t = a + I(b, c, d) + X[k] + Ti; \
214  a = ROTATE_LEFT(t, s) + b
215  /* Do the following 16 operations. */
216  SET(a, b, c, d, 0, 6, T49);
217  SET(d, a, b, c, 7, 10, T50);
218  SET(c, d, a, b, 14, 15, T51);
219  SET(b, c, d, a, 5, 21, T52);
220  SET(a, b, c, d, 12, 6, T53);
221  SET(d, a, b, c, 3, 10, T54);
222  SET(c, d, a, b, 10, 15, T55);
223  SET(b, c, d, a, 1, 21, T56);
224  SET(a, b, c, d, 8, 6, T57);
225  SET(d, a, b, c, 15, 10, T58);
226  SET(c, d, a, b, 6, 15, T59);
227  SET(b, c, d, a, 13, 21, T60);
228  SET(a, b, c, d, 4, 6, T61);
229  SET(d, a, b, c, 11, 10, T62);
230  SET(c, d, a, b, 2, 15, T63);
231  SET(b, c, d, a, 9, 21, T64);
232 #undef SET
233 
234  /* Then perform the following additions. (That is increment each
235  * of the four registers by the value it had before this block
236  * was started.) */
237  abcd[0] += a;
238  abcd[1] += b;
239  abcd[2] += c;
240  abcd[3] += d;
241 }
242 
244 {
245  count[0] = count[1] = 0;
246  abcd[0] = 0x67452301;
247  abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
248  abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
249  abcd[3] = 0x10325476;
250 }
251 
253 {
254 }
255 
256 void MD5Hash::append(const uint8_t *data, int nbytes)
257 {
258  const uint8_t *p = data;
259  int left = nbytes;
260  int offset = (count[0] >> 3) & 63;
261  uint32_t nbits = (uint32_t)(nbytes << 3);
262 
263  if (nbytes <= 0)
264  return;
265 
266  /* Update the message length. */
267  count[1] += nbytes >> 29;
268  count[0] += nbits;
269  if (count[0] < nbits)
270  count[1]++;
271 
272  /* Process an initial partial block. */
273  if (offset) {
274  int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
275 
276  memcpy(buf + offset, p, copy);
277  if (offset + copy < 64)
278  return;
279  p += copy;
280  left -= copy;
281  process(buf);
282  }
283 
284  /* Process full blocks. */
285  for (; left >= 64; p += 64, left -= 64)
286  process(p);
287 
288  /* Process a final partial block. */
289  if (left)
290  memcpy(buf, p, left);
291 }
292 
293 void MD5Hash::append(const string &str)
294 {
295  if (str.size()) {
296  append((const uint8_t *)str.c_str(), str.size());
297  }
298 }
299 
300 bool MD5Hash::append_file(const string &filepath)
301 {
302  FILE *f = path_fopen(filepath, "rb");
303 
304  if (!f) {
305  fprintf(stderr, "MD5: failed to open file %s\n", filepath.c_str());
306  return false;
307  }
308 
309  const size_t buffer_size = 1024;
310  uint8_t buffer[buffer_size];
311  size_t n;
312 
313  do {
314  n = fread(buffer, 1, buffer_size, f);
315  append(buffer, n);
316  } while (n == buffer_size);
317 
318  bool success = (ferror(f) == 0);
319 
320  fclose(f);
321 
322  return success;
323 }
324 
325 void MD5Hash::finish(uint8_t digest[16])
326 {
327  static const uint8_t pad[64] = {0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
328  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
329  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
330  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
331 
332  uint8_t data[8];
333  int i;
334 
335  /* Save the length before padding. */
336  for (i = 0; i < 8; ++i)
337  data[i] = (uint8_t)(count[i >> 2] >> ((i & 3) << 3));
338 
339  /* Pad to 56 bytes mod 64. */
340  append(pad, ((55 - (count[0] >> 3)) & 63) + 1);
341  /* Append the length. */
342  append(data, 8);
343 
344  for (i = 0; i < 16; ++i)
345  digest[i] = (uint8_t)(abcd[i >> 2] >> ((i & 3) << 3));
346 }
347 
349 {
350  uint8_t digest[16];
351  char buf[16 * 2 + 1];
352 
353  finish(digest);
354 
355  for (int i = 0; i < 16; i++)
356  sprintf(buf + i * 2, "%02X", (unsigned int)digest[i]);
357  buf[sizeof(buf) - 1] = '\0';
358 
359  return string(buf);
360 }
361 
362 string util_md5_string(const string &str)
363 {
364  MD5Hash md5;
365  md5.append((uint8_t *)str.c_str(), str.size());
366  return md5.get_hex();
367 }
368 
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its X
int pad[32 - sizeof(int)]
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
Definition: md5.h:20
bool append_file(const string &filepath)
Definition: md5.cpp:300
string get_hex()
Definition: md5.cpp:348
uint8_t buf[64]
Definition: md5.h:36
~MD5Hash()
Definition: md5.cpp:252
void finish(uint8_t digest[16])
Definition: md5.cpp:325
MD5Hash()
Definition: md5.cpp:243
void append(const uint8_t *data, int size)
Definition: md5.cpp:256
void process(const uint8_t *data)
Definition: md5.cpp:82
uint32_t abcd[4]
Definition: md5.h:35
uint32_t count[2]
Definition: md5.h:34
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
#define str(s)
ccl_global float * buffer
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
static int left
#define T51
Definition: md5.cpp:67
#define T46
Definition: md5.cpp:62
#define T50
Definition: md5.cpp:66
#define T45
Definition: md5.cpp:61
#define T56
Definition: md5.cpp:72
#define T17
Definition: md5.cpp:33
#define T54
Definition: md5.cpp:70
#define T20
Definition: md5.cpp:36
#define T43
Definition: md5.cpp:59
#define T9
Definition: md5.cpp:25
#define T14
Definition: md5.cpp:30
#define T57
Definition: md5.cpp:73
#define T37
Definition: md5.cpp:53
#define T2
Definition: md5.cpp:18
#define T_MASK
Definition: md5.cpp:16
#define T7
Definition: md5.cpp:23
#define T61
Definition: md5.cpp:77
#define T10
Definition: md5.cpp:26
#define T31
Definition: md5.cpp:47
#define T62
Definition: md5.cpp:78
#define T26
Definition: md5.cpp:42
#define T24
Definition: md5.cpp:40
#define T44
Definition: md5.cpp:60
#define T25
Definition: md5.cpp:41
#define T36
Definition: md5.cpp:52
#define T18
Definition: md5.cpp:34
#define T21
Definition: md5.cpp:37
#define T6
Definition: md5.cpp:22
#define T3
Definition: md5.cpp:19
#define T58
Definition: md5.cpp:74
#define SET(a, b, c, d, k, s, Ti)
#define T29
Definition: md5.cpp:45
#define T60
Definition: md5.cpp:76
#define T59
Definition: md5.cpp:75
#define T5
Definition: md5.cpp:21
#define T53
Definition: md5.cpp:69
#define T39
Definition: md5.cpp:55
#define T38
Definition: md5.cpp:54
#define T19
Definition: md5.cpp:35
#define T33
Definition: md5.cpp:49
#define T49
Definition: md5.cpp:65
#define T16
Definition: md5.cpp:32
#define T22
Definition: md5.cpp:38
#define T55
Definition: md5.cpp:71
#define T41
Definition: md5.cpp:57
#define T48
Definition: md5.cpp:64
#define T4
Definition: md5.cpp:20
#define T64
Definition: md5.cpp:80
#define T40
Definition: md5.cpp:56
#define T47
Definition: md5.cpp:63
#define T13
Definition: md5.cpp:29
#define T30
Definition: md5.cpp:46
#define T11
Definition: md5.cpp:27
#define T63
Definition: md5.cpp:79
#define T1
Definition: md5.cpp:17
#define T35
Definition: md5.cpp:51
string util_md5_string(const string &str)
Definition: md5.cpp:362
#define T8
Definition: md5.cpp:24
#define T23
Definition: md5.cpp:39
#define T42
Definition: md5.cpp:58
#define T15
Definition: md5.cpp:31
#define T34
Definition: md5.cpp:50
#define T27
Definition: md5.cpp:43
#define T28
Definition: md5.cpp:44
#define T52
Definition: md5.cpp:68
#define T32
Definition: md5.cpp:48
#define T12
Definition: md5.cpp:28
static unsigned c
Definition: RandGen.cpp:83
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static void copy(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node)
FILE * path_fopen(const string &path, const string &mode)
Definition: path.cpp:890
unsigned int uint32_t
Definition: stdint.h:80
unsigned char uint8_t
Definition: stdint.h:78