Lines Matching +full:0 +full:- +full:9 +full:a +full:- +full:d
11 * Copyright (c) Andrew Tridgell 1997-1998.
44 x &= 0xFFFFFFFF; in lshift()
45 return ((x << s) & 0xFFFFFFFF) | (x >> (32 - s)); in lshift()
63 #define ROUND1(a,b,c,d,k,s) (a = lshift(a + F(b,c,d) + k, s)) argument
64 #define ROUND2(a,b,c,d,k,s) (a = lshift(a + G(b,c,d) + k + (u32)0x5A827999,s)) argument
65 #define ROUND3(a,b,c,d,k,s) (a = lshift(a + H(b,c,d) + k + (u32)0x6ED9EBA1,s)) argument
69 u32 a, b, c, d; in md4_transform() local
71 a = hash[0]; in md4_transform()
74 d = hash[3]; in md4_transform()
76 ROUND1(a, b, c, d, in[0], 3); in md4_transform()
77 ROUND1(d, a, b, c, in[1], 7); in md4_transform()
78 ROUND1(c, d, a, b, in[2], 11); in md4_transform()
79 ROUND1(b, c, d, a, in[3], 19); in md4_transform()
80 ROUND1(a, b, c, d, in[4], 3); in md4_transform()
81 ROUND1(d, a, b, c, in[5], 7); in md4_transform()
82 ROUND1(c, d, a, b, in[6], 11); in md4_transform()
83 ROUND1(b, c, d, a, in[7], 19); in md4_transform()
84 ROUND1(a, b, c, d, in[8], 3); in md4_transform()
85 ROUND1(d, a, b, c, in[9], 7); in md4_transform()
86 ROUND1(c, d, a, b, in[10], 11); in md4_transform()
87 ROUND1(b, c, d, a, in[11], 19); in md4_transform()
88 ROUND1(a, b, c, d, in[12], 3); in md4_transform()
89 ROUND1(d, a, b, c, in[13], 7); in md4_transform()
90 ROUND1(c, d, a, b, in[14], 11); in md4_transform()
91 ROUND1(b, c, d, a, in[15], 19); in md4_transform()
93 ROUND2(a, b, c, d,in[ 0], 3); in md4_transform()
94 ROUND2(d, a, b, c, in[4], 5); in md4_transform()
95 ROUND2(c, d, a, b, in[8], 9); in md4_transform()
96 ROUND2(b, c, d, a, in[12], 13); in md4_transform()
97 ROUND2(a, b, c, d, in[1], 3); in md4_transform()
98 ROUND2(d, a, b, c, in[5], 5); in md4_transform()
99 ROUND2(c, d, a, b, in[9], 9); in md4_transform()
100 ROUND2(b, c, d, a, in[13], 13); in md4_transform()
101 ROUND2(a, b, c, d, in[2], 3); in md4_transform()
102 ROUND2(d, a, b, c, in[6], 5); in md4_transform()
103 ROUND2(c, d, a, b, in[10], 9); in md4_transform()
104 ROUND2(b, c, d, a, in[14], 13); in md4_transform()
105 ROUND2(a, b, c, d, in[3], 3); in md4_transform()
106 ROUND2(d, a, b, c, in[7], 5); in md4_transform()
107 ROUND2(c, d, a, b, in[11], 9); in md4_transform()
108 ROUND2(b, c, d, a, in[15], 13); in md4_transform()
110 ROUND3(a, b, c, d,in[ 0], 3); in md4_transform()
111 ROUND3(d, a, b, c, in[8], 9); in md4_transform()
112 ROUND3(c, d, a, b, in[4], 11); in md4_transform()
113 ROUND3(b, c, d, a, in[12], 15); in md4_transform()
114 ROUND3(a, b, c, d, in[2], 3); in md4_transform()
115 ROUND3(d, a, b, c, in[10], 9); in md4_transform()
116 ROUND3(c, d, a, b, in[6], 11); in md4_transform()
117 ROUND3(b, c, d, a, in[14], 15); in md4_transform()
118 ROUND3(a, b, c, d, in[1], 3); in md4_transform()
119 ROUND3(d, a, b, c, in[9], 9); in md4_transform()
120 ROUND3(c, d, a, b, in[5], 11); in md4_transform()
121 ROUND3(b, c, d, a, in[13], 15); in md4_transform()
122 ROUND3(a, b, c, d, in[3], 3); in md4_transform()
123 ROUND3(d, a, b, c, in[11], 9); in md4_transform()
124 ROUND3(c, d, a, b, in[7], 11); in md4_transform()
125 ROUND3(b, c, d, a, in[15], 15); in md4_transform()
127 hash[0] += a; in md4_transform()
130 hash[3] += d; in md4_transform()
135 le32_to_cpu_array(ctx->block, ARRAY_SIZE(ctx->block)); in md4_transform_helper()
136 md4_transform(ctx->hash, ctx->block); in md4_transform_helper()
143 mctx->hash[0] = 0x67452301; in md4_init()
144 mctx->hash[1] = 0xefcdab89; in md4_init()
145 mctx->hash[2] = 0x98badcfe; in md4_init()
146 mctx->hash[3] = 0x10325476; in md4_init()
147 mctx->byte_count = 0; in md4_init()
149 return 0; in md4_init()
155 const u32 avail = sizeof(mctx->block) - (mctx->byte_count & 0x3f); in md4_update()
157 mctx->byte_count += len; in md4_update()
160 memcpy((char *)mctx->block + (sizeof(mctx->block) - avail), in md4_update()
162 return 0; in md4_update()
165 memcpy((char *)mctx->block + (sizeof(mctx->block) - avail), in md4_update()
170 len -= avail; in md4_update()
172 while (len >= sizeof(mctx->block)) { in md4_update()
173 memcpy(mctx->block, data, sizeof(mctx->block)); in md4_update()
175 data += sizeof(mctx->block); in md4_update()
176 len -= sizeof(mctx->block); in md4_update()
179 memcpy(mctx->block, data, len); in md4_update()
181 return 0; in md4_update()
187 const unsigned int offset = mctx->byte_count & 0x3f; in md4_final()
188 char *p = (char *)mctx->block + offset; in md4_final()
189 int padding = 56 - (offset + 1); in md4_final()
191 *p++ = 0x80; in md4_final()
192 if (padding < 0) { in md4_final()
193 memset(p, 0x00, padding + sizeof (u64)); in md4_final()
195 p = (char *)mctx->block; in md4_final()
199 memset(p, 0, padding); in md4_final()
200 mctx->block[14] = mctx->byte_count << 3; in md4_final()
201 mctx->block[15] = mctx->byte_count >> 29; in md4_final()
202 le32_to_cpu_array(mctx->block, (sizeof(mctx->block) - in md4_final()
204 md4_transform(mctx->hash, mctx->block); in md4_final()
205 cpu_to_le32_array(mctx->hash, ARRAY_SIZE(mctx->hash)); in md4_final()
206 memcpy(out, mctx->hash, sizeof(mctx->hash)); in md4_final()
207 memset(mctx, 0, sizeof(*mctx)); in md4_final()
209 return 0; in md4_final()
220 .cra_driver_name = "md4-generic",