25 # define GL_OPENSSL_INLINE _GL_EXTERN_INLINE    33 #include <sys/types.h>    36 # include "unlocked-io.h"    41 # if __BYTE_ORDER == __BIG_ENDIAN    42 #  define WORDS_BIGENDIAN 1    46 # define md5_init_ctx __md5_init_ctx    47 # define md5_process_block __md5_process_block    48 # define md5_process_bytes __md5_process_bytes    49 # define md5_finish_ctx __md5_finish_ctx    50 # define md5_read_ctx __md5_read_ctx    51 # define md5_stream __md5_stream    52 # define md5_buffer __md5_buffer    56 #ifdef WORDS_BIGENDIAN    57 # define SWAP(n) bswap_32 (n)    62 #define BLOCKSIZE 32768    63 #if BLOCKSIZE % 64 != 0    64 # error "invalid BLOCKSIZE"    67 #if ! HAVE_OPENSSL_MD5    70 static const unsigned char fillbuf[64] = { 0x80, 0  };
    91 set_uint32 (
char *cp, uint32_t v)
    93   memcpy (cp, &v, 
sizeof v);
   102   set_uint32 (r + 0 * 
sizeof ctx->
A, 
SWAP (ctx->
A));
   103   set_uint32 (r + 1 * 
sizeof ctx->
B, 
SWAP (ctx->
B));
   104   set_uint32 (r + 2 * 
sizeof ctx->
C, 
SWAP (ctx->
C));
   105   set_uint32 (r + 3 * 
sizeof ctx->
D, 
SWAP (ctx->
D));
   116   uint32_t bytes = ctx->
buflen;
   117   size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;
   120   ctx->
total[0] += bytes;
   121   if (ctx->
total[0] < bytes)
   128   memcpy (&((
char *) ctx->
buffer)[bytes], fillbuf, (
size - 2) * 4 - bytes);
   137 #if defined _LIBC || defined GL_COMPILE_CRYPTO_STREAM   145 md5_stream (FILE *stream, 
void *resblock)
   179             goto process_partial_block;
   198               goto process_partial_block;
   208 process_partial_block:
   221 #if ! HAVE_OPENSSL_MD5   249       size_t left_over = ctx->
buflen;
   250       size_t add = 128 - left_over > len ? len : 128 - left_over;
   252       memcpy (&((
char *) ctx->
buffer)[left_over], 
buffer, add);
   263                   &((
char *) ctx->
buffer)[(left_over + add) & ~63],
   274 #if !(_STRING_ARCH_unaligned || _STRING_INLINE_unaligned)   275 # define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)   295       size_t left_over = ctx->
buflen;
   297       memcpy (&((
char *) ctx->
buffer)[left_over], 
buffer, len);
   307           memcpy (ctx->
buffer, &(((
char *) ctx->
buffer)[64]), left_over);
   319 #define FF(b, c, d) (d ^ (b & (c ^ d)))   320 #define FG(b, c, d) FF (d, b, c)   321 #define FH(b, c, d) (b ^ c ^ d)   322 #define FI(b, c, d) (c ^ (b | ~d))   330   uint32_t correct_words[16];
   331   const uint32_t *words = 
buffer;
   332   size_t nwords = len / 
sizeof (uint32_t);
   333   const uint32_t *endp = words + nwords;
   338   uint32_t lolen = len;
   343   ctx->
total[0] += lolen;
   344   ctx->
total[1] += (len >> 31 >> 1) + (ctx->
total[0] < lolen);
   350       uint32_t *cwp = correct_words;
   363 #define OP(a, b, c, d, s, T)                                            \   366           a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T;             \   375 #define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))   388       OP (
A, 
B, 
C, 
D, 7, 0xd76aa478);
   389       OP (
D, 
A, 
B, 
C, 12, 0xe8c7b756);
   390       OP (
C, 
D, 
A, 
B, 17, 0x242070db);
   391       OP (
B, 
C, 
D, 
A, 22, 0xc1bdceee);
   392       OP (
A, 
B, 
C, 
D, 7, 0xf57c0faf);
   393       OP (
D, 
A, 
B, 
C, 12, 0x4787c62a);
   394       OP (
C, 
D, 
A, 
B, 17, 0xa8304613);
   395       OP (
B, 
C, 
D, 
A, 22, 0xfd469501);
   396       OP (
A, 
B, 
C, 
D, 7, 0x698098d8);
   397       OP (
D, 
A, 
B, 
C, 12, 0x8b44f7af);
   398       OP (
C, 
D, 
A, 
B, 17, 0xffff5bb1);
   399       OP (
B, 
C, 
D, 
A, 22, 0x895cd7be);
   400       OP (
A, 
B, 
C, 
D, 7, 0x6b901122);
   401       OP (
D, 
A, 
B, 
C, 12, 0xfd987193);
   402       OP (
C, 
D, 
A, 
B, 17, 0xa679438e);
   403       OP (
B, 
C, 
D, 
A, 22, 0x49b40821);
   409 #define OP(f, a, b, c, d, k, s, T)                                      \   412           a += f (b, c, d) + correct_words[k] + T;                      \   419       OP (
FG, 
A, 
B, 
C, 
D, 1, 5, 0xf61e2562);
   420       OP (
FG, 
D, 
A, 
B, 
C, 6, 9, 0xc040b340);
   421       OP (
FG, 
C, 
D, 
A, 
B, 11, 14, 0x265e5a51);
   422       OP (
FG, 
B, 
C, 
D, 
A, 0, 20, 0xe9b6c7aa);
   423       OP (
FG, 
A, 
B, 
C, 
D, 5, 5, 0xd62f105d);
   424       OP (
FG, 
D, 
A, 
B, 
C, 10, 9, 0x02441453);
   425       OP (
FG, 
C, 
D, 
A, 
B, 15, 14, 0xd8a1e681);
   426       OP (
FG, 
B, 
C, 
D, 
A, 4, 20, 0xe7d3fbc8);
   427       OP (
FG, 
A, 
B, 
C, 
D, 9, 5, 0x21e1cde6);
   428       OP (
FG, 
D, 
A, 
B, 
C, 14, 9, 0xc33707d6);
   429       OP (
FG, 
C, 
D, 
A, 
B, 3, 14, 0xf4d50d87);
   430       OP (
FG, 
B, 
C, 
D, 
A, 8, 20, 0x455a14ed);
   431       OP (
FG, 
A, 
B, 
C, 
D, 13, 5, 0xa9e3e905);
   432       OP (
FG, 
D, 
A, 
B, 
C, 2, 9, 0xfcefa3f8);
   433       OP (
FG, 
C, 
D, 
A, 
B, 7, 14, 0x676f02d9);
   434       OP (
FG, 
B, 
C, 
D, 
A, 12, 20, 0x8d2a4c8a);
   437       OP (
FH, 
A, 
B, 
C, 
D, 5, 4, 0xfffa3942);
   438       OP (
FH, 
D, 
A, 
B, 
C, 8, 11, 0x8771f681);
   439       OP (
FH, 
C, 
D, 
A, 
B, 11, 16, 0x6d9d6122);
   440       OP (
FH, 
B, 
C, 
D, 
A, 14, 23, 0xfde5380c);
   441       OP (
FH, 
A, 
B, 
C, 
D, 1, 4, 0xa4beea44);
   442       OP (
FH, 
D, 
A, 
B, 
C, 4, 11, 0x4bdecfa9);
   443       OP (
FH, 
C, 
D, 
A, 
B, 7, 16, 0xf6bb4b60);
   444       OP (
FH, 
B, 
C, 
D, 
A, 10, 23, 0xbebfbc70);
   445       OP (
FH, 
A, 
B, 
C, 
D, 13, 4, 0x289b7ec6);
   446       OP (
FH, 
D, 
A, 
B, 
C, 0, 11, 0xeaa127fa);
   447       OP (
FH, 
C, 
D, 
A, 
B, 3, 16, 0xd4ef3085);
   448       OP (
FH, 
B, 
C, 
D, 
A, 6, 23, 0x04881d05);
   449       OP (
FH, 
A, 
B, 
C, 
D, 9, 4, 0xd9d4d039);
   450       OP (
FH, 
D, 
A, 
B, 
C, 12, 11, 0xe6db99e5);
   451       OP (
FH, 
C, 
D, 
A, 
B, 15, 16, 0x1fa27cf8);
   452       OP (
FH, 
B, 
C, 
D, 
A, 2, 23, 0xc4ac5665);
   455       OP (
FI, 
A, 
B, 
C, 
D, 0, 6, 0xf4292244);
   456       OP (
FI, 
D, 
A, 
B, 
C, 7, 10, 0x432aff97);
   457       OP (
FI, 
C, 
D, 
A, 
B, 14, 15, 0xab9423a7);
   458       OP (
FI, 
B, 
C, 
D, 
A, 5, 21, 0xfc93a039);
   459       OP (
FI, 
A, 
B, 
C, 
D, 12, 6, 0x655b59c3);
   460       OP (
FI, 
D, 
A, 
B, 
C, 3, 10, 0x8f0ccc92);
   461       OP (
FI, 
C, 
D, 
A, 
B, 10, 15, 0xffeff47d);
   462       OP (
FI, 
B, 
C, 
D, 
A, 1, 21, 0x85845dd1);
   463       OP (
FI, 
A, 
B, 
C, 
D, 8, 6, 0x6fa87e4f);
   464       OP (
FI, 
D, 
A, 
B, 
C, 15, 10, 0xfe2ce6e0);
   465       OP (
FI, 
C, 
D, 
A, 
B, 6, 15, 0xa3014314);
   466       OP (
FI, 
B, 
C, 
D, 
A, 13, 21, 0x4e0811a1);
   467       OP (
FI, 
A, 
B, 
C, 
D, 4, 6, 0xf7537e82);
   468       OP (
FI, 
D, 
A, 
B, 
C, 11, 10, 0xbd3af235);
   469       OP (
FI, 
C, 
D, 
A, 
B, 2, 15, 0x2ad7d2bb);
   470       OP (
FI, 
B, 
C, 
D, 
A, 9, 21, 0xeb86d391);
 
void md5_process_block(const void *buffer, size_t len, struct md5_ctx *ctx)
 
void md5_init_ctx(struct md5_ctx *ctx)
 
void md5_process_bytes(const void *buffer, size_t len, struct md5_ctx *ctx)
 
void * md5_buffer(const char *buffer, size_t len, void *resblock)
 
#define OP(a, b, c, d, s, T)
 
void * md5_finish_ctx(struct md5_ctx *ctx, void *resbuf)
 
void * md5_read_ctx(const struct md5_ctx *ctx, void *resbuf)