MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / md5_process

Function md5_process

Source/Utils/md5.cpp:59–180  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

57}
58
59void md5_process( md5_context *ctx, uint8 data[64] )
60{
61 uint32 X[16], A, B, C, D;
62
63 GET_UINT32( X[0], data, 0 );
64 GET_UINT32( X[1], data, 4 );
65 GET_UINT32( X[2], data, 8 );
66 GET_UINT32( X[3], data, 12 );
67 GET_UINT32( X[4], data, 16 );
68 GET_UINT32( X[5], data, 20 );
69 GET_UINT32( X[6], data, 24 );
70 GET_UINT32( X[7], data, 28 );
71 GET_UINT32( X[8], data, 32 );
72 GET_UINT32( X[9], data, 36 );
73 GET_UINT32( X[10], data, 40 );
74 GET_UINT32( X[11], data, 44 );
75 GET_UINT32( X[12], data, 48 );
76 GET_UINT32( X[13], data, 52 );
77 GET_UINT32( X[14], data, 56 );
78 GET_UINT32( X[15], data, 60 );
79
80#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
81
82#define P(a,b,c,d,k,s,t) \
83 { \
84 a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
85 }
86
87 A = ctx->state[0];
88 B = ctx->state[1];
89 C = ctx->state[2];
90 D = ctx->state[3];
91
92#define F(x,y,z) (z ^ (x & (y ^ z)))
93
94 P( A, B, C, D, 0, 7, 0xD76AA478 );
95 P( D, A, B, C, 1, 12, 0xE8C7B756 );
96 P( C, D, A, B, 2, 17, 0x242070DB );
97 P( B, C, D, A, 3, 22, 0xC1BDCEEE );
98 P( A, B, C, D, 4, 7, 0xF57C0FAF );
99 P( D, A, B, C, 5, 12, 0x4787C62A );
100 P( C, D, A, B, 6, 17, 0xA8304613 );
101 P( B, C, D, A, 7, 22, 0xFD469501 );
102 P( A, B, C, D, 8, 7, 0x698098D8 );
103 P( D, A, B, C, 9, 12, 0x8B44F7AF );
104 P( C, D, A, B, 10, 17, 0xFFFF5BB1 );
105 P( B, C, D, A, 11, 22, 0x895CD7BE );
106 P( A, B, C, D, 12, 7, 0x6B901122 );
107 P( D, A, B, C, 13, 12, 0xFD987193 );
108 P( C, D, A, B, 14, 17, 0xA679438E );
109 P( B, C, D, A, 15, 22, 0x49B40821 );
110
111#undef F
112
113#define F(x,y,z) (y ^ (z & (x ^ y)))
114
115 P( A, B, C, D, 1, 5, 0xF61E2562 );
116 P( D, A, B, C, 6, 9, 0xC040B340 );

Callers 1

md5_updateFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected