← Commit list

970aa6b5b

Denys Vlasenko
Denys Vlasenko
2013-01-15
SUCCESS Duration: 254s

Subject

sha3: cache ctx->bytes_queued

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

libbb/hash_md5_sha.c+11 -11
@@ -977,8 +977,6 @@ static const uint8_t KECCAK_PI_LANE[25] = {
14, 22, 9, 6, 1
};
-#define ARCH_IS_64BIT (sizeof(long) >= sizeof(uint64_t))
-
static void KeccakF(uint64_t *state)
{
/*static const uint8_t MOD5[10] = { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 };*/
@@ -1074,8 +1072,6 @@ static void KeccakF(uint64_t *state)
}
}
-#undef ARCH_IS_64BIT
-
void FAST_FUNC sha3_begin(sha3_ctx_t *ctx)
{
memset(ctx, 0, sizeof(*ctx));
@@ -1084,16 +1080,17 @@ void FAST_FUNC sha3_begin(sha3_ctx_t *ctx)
void FAST_FUNC sha3_hash(sha3_ctx_t *ctx, const void *buf, size_t bytes)
{
const uint8_t *data = buf;
+ unsigned bytes_queued = ctx->bytes_queued;
/* If already data in queue, continue queuing first */
- while (bytes != 0 && ctx->bytes_queued != 0) {
+ while (bytes != 0 && bytes_queued != 0) {
uint8_t *buffer = (uint8_t*)ctx->state;
- buffer[ctx->bytes_queued] ^= *data++;
+ buffer[bytes_queued] ^= *data++;
bytes--;
- ctx->bytes_queued++;
- if (ctx->bytes_queued == KECCAK_IBLK_BYTES) {
+ bytes_queued++;
+ if (bytes_queued == KECCAK_IBLK_BYTES) {
KeccakF(ctx->state);
- ctx->bytes_queued = 0;
+ bytes_queued = 0;
}
}
@@ -1113,16 +1110,19 @@ void FAST_FUNC sha3_hash(sha3_ctx_t *ctx, const void *buf, size_t bytes)
} while (--count);
KeccakF(ctx->state);
+
bytes -= KECCAK_IBLK_BYTES;
}
/* Queue remaining data bytes */
while (bytes != 0) {
uint8_t *buffer = (uint8_t*)ctx->state;
- buffer[ctx->bytes_queued] ^= *data++;
- ctx->bytes_queued++;
+ buffer[bytes_queued] ^= *data++;
+ bytes_queued++;
bytes--;
}
+
+ ctx->bytes_queued = bytes_queued;
}
void FAST_FUNC sha3_end(sha3_ctx_t *ctx, uint8_t *hashval)