libbb: fold common64_hash() into its only user
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
bd202a5ec1
commit
abefc3c276
@ -38,35 +38,6 @@ static ALWAYS_INLINE uint64_t rotl64(uint64_t x, unsigned n)
|
|||||||
return (x << n) | (x >> (64 - n));
|
return (x << n) | (x >> (64 - n));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Feed data through a temporary buffer.
|
|
||||||
* The internal buffer remembers previous data until it has 64
|
|
||||||
* bytes worth to pass on.
|
|
||||||
*/
|
|
||||||
static void FAST_FUNC common64_hash(md5_ctx_t *ctx, const void *buffer, size_t len)
|
|
||||||
{
|
|
||||||
unsigned bufpos = ctx->total64 & 63;
|
|
||||||
|
|
||||||
ctx->total64 += len;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
unsigned remaining = 64 - bufpos;
|
|
||||||
if (remaining > len)
|
|
||||||
remaining = len;
|
|
||||||
/* Copy data into aligned buffer */
|
|
||||||
memcpy(ctx->wbuffer + bufpos, buffer, remaining);
|
|
||||||
len -= remaining;
|
|
||||||
buffer = (const char *)buffer + remaining;
|
|
||||||
bufpos += remaining;
|
|
||||||
/* Clever way to do "if (bufpos != N) break; ... ; bufpos = 0;" */
|
|
||||||
bufpos -= 64;
|
|
||||||
if (bufpos != 0)
|
|
||||||
break;
|
|
||||||
/* Buffer is filled up, process it */
|
|
||||||
ctx->process_block(ctx);
|
|
||||||
/*bufpos = 0; - already is */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Process the remaining bytes in the buffer */
|
/* Process the remaining bytes in the buffer */
|
||||||
static void FAST_FUNC common64_end(md5_ctx_t *ctx, int swap_needed)
|
static void FAST_FUNC common64_end(md5_ctx_t *ctx, int swap_needed)
|
||||||
{
|
{
|
||||||
@ -449,7 +420,29 @@ void FAST_FUNC md5_begin(md5_ctx_t *ctx)
|
|||||||
/* Used also for sha1 and sha256 */
|
/* Used also for sha1 and sha256 */
|
||||||
void FAST_FUNC md5_hash(md5_ctx_t *ctx, const void *buffer, size_t len)
|
void FAST_FUNC md5_hash(md5_ctx_t *ctx, const void *buffer, size_t len)
|
||||||
{
|
{
|
||||||
common64_hash(ctx, buffer, len);
|
unsigned bufpos = ctx->total64 & 63;
|
||||||
|
|
||||||
|
ctx->total64 += len;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
unsigned remaining = 64 - bufpos;
|
||||||
|
if (remaining > len)
|
||||||
|
remaining = len;
|
||||||
|
/* Copy data into aligned buffer */
|
||||||
|
memcpy(ctx->wbuffer + bufpos, buffer, remaining);
|
||||||
|
len -= remaining;
|
||||||
|
buffer = (const char *)buffer + remaining;
|
||||||
|
bufpos += remaining;
|
||||||
|
|
||||||
|
/* Clever way to do "if (bufpos != N) break; ... ; bufpos = 0;" */
|
||||||
|
bufpos -= 64;
|
||||||
|
if (bufpos != 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Buffer is filled up, process it */
|
||||||
|
ctx->process_block(ctx);
|
||||||
|
/*bufpos = 0; - already is */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process the remaining bytes in the buffer and put result from CTX
|
/* Process the remaining bytes in the buffer and put result from CTX
|
||||||
@ -816,7 +809,7 @@ void FAST_FUNC sha512_begin(sha512_ctx_t *ctx)
|
|||||||
int i;
|
int i;
|
||||||
/* Two extra iterations zero out ctx->total64[2] */
|
/* Two extra iterations zero out ctx->total64[2] */
|
||||||
uint64_t *tp = ctx->total64;
|
uint64_t *tp = ctx->total64;
|
||||||
for (i = 0; i < 2+8; i++)
|
for (i = 0; i < 8 + 2; i++)
|
||||||
tp[i] = ((uint64_t)(init256[i]) << 32) + init512_lo[i];
|
tp[i] = ((uint64_t)(init256[i]) << 32) + init512_lo[i];
|
||||||
/*ctx->total64[0] = ctx->total64[1] = 0; - already done */
|
/*ctx->total64[0] = ctx->total64[1] = 0; - already done */
|
||||||
}
|
}
|
||||||
@ -832,22 +825,7 @@ void FAST_FUNC sha512_hash(sha512_ctx_t *ctx, const void *buffer, size_t len)
|
|||||||
ctx->total64[0] += len;
|
ctx->total64[0] += len;
|
||||||
if (ctx->total64[0] < len)
|
if (ctx->total64[0] < len)
|
||||||
ctx->total64[1]++;
|
ctx->total64[1]++;
|
||||||
# if 0
|
|
||||||
remaining = 128 - bufpos;
|
|
||||||
|
|
||||||
/* Hash whole blocks */
|
|
||||||
while (len >= remaining) {
|
|
||||||
memcpy(ctx->wbuffer + bufpos, buffer, remaining);
|
|
||||||
buffer = (const char *)buffer + remaining;
|
|
||||||
len -= remaining;
|
|
||||||
remaining = 128;
|
|
||||||
bufpos = 0;
|
|
||||||
sha512_process_block128(ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Save last, partial blosk */
|
|
||||||
memcpy(ctx->wbuffer + bufpos, buffer, len);
|
|
||||||
# else
|
|
||||||
while (1) {
|
while (1) {
|
||||||
remaining = 128 - bufpos;
|
remaining = 128 - bufpos;
|
||||||
if (remaining > len)
|
if (remaining > len)
|
||||||
@ -857,15 +835,16 @@ void FAST_FUNC sha512_hash(sha512_ctx_t *ctx, const void *buffer, size_t len)
|
|||||||
len -= remaining;
|
len -= remaining;
|
||||||
buffer = (const char *)buffer + remaining;
|
buffer = (const char *)buffer + remaining;
|
||||||
bufpos += remaining;
|
bufpos += remaining;
|
||||||
|
|
||||||
/* Clever way to do "if (bufpos != N) break; ... ; bufpos = 0;" */
|
/* Clever way to do "if (bufpos != N) break; ... ; bufpos = 0;" */
|
||||||
bufpos -= 128;
|
bufpos -= 128;
|
||||||
if (bufpos != 0)
|
if (bufpos != 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Buffer is filled up, process it */
|
/* Buffer is filled up, process it */
|
||||||
sha512_process_block128(ctx);
|
sha512_process_block128(ctx);
|
||||||
/*bufpos = 0; - already is */
|
/*bufpos = 0; - already is */
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
#endif /* NEED_SHA512 */
|
#endif /* NEED_SHA512 */
|
||||||
|
|
||||||
@ -1398,10 +1377,12 @@ void FAST_FUNC sha3_hash(sha3_ctx_t *ctx, const void *buffer, size_t len)
|
|||||||
bufpos++;
|
bufpos++;
|
||||||
remaining--;
|
remaining--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clever way to do "if (bufpos != N) break; ... ; bufpos = 0;" */
|
/* Clever way to do "if (bufpos != N) break; ... ; bufpos = 0;" */
|
||||||
bufpos -= ctx->input_block_bytes;
|
bufpos -= ctx->input_block_bytes;
|
||||||
if (bufpos != 0)
|
if (bufpos != 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Buffer is filled up, process it */
|
/* Buffer is filled up, process it */
|
||||||
sha3_process_block72(ctx->state);
|
sha3_process_block72(ctx->state);
|
||||||
/*bufpos = 0; - already is */
|
/*bufpos = 0; - already is */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user