Update SM3

Safe call to sm3_compress_blocks
This commit is contained in:
Zhi Guan
2022-10-11 16:34:13 +08:00
parent 6ff290de0e
commit c6c0162c25
2 changed files with 7 additions and 6 deletions

View File

@@ -58,6 +58,7 @@ void sm3_update(SM3_CTX *ctx, const uint8_t *data, size_t datalen);
void sm3_finish(SM3_CTX *ctx, uint8_t dgst[SM3_DIGEST_SIZE]); void sm3_finish(SM3_CTX *ctx, uint8_t dgst[SM3_DIGEST_SIZE]);
void sm3_digest(const uint8_t *data, size_t datalen, uint8_t dgst[SM3_DIGEST_SIZE]); void sm3_digest(const uint8_t *data, size_t datalen, uint8_t dgst[SM3_DIGEST_SIZE]);
void sm3_compress_blocks(uint32_t digest[8], const uint8_t *data, size_t blocks);
typedef struct { typedef struct {
SM3_CTX sm3_ctx; SM3_CTX sm3_ctx;

View File

@@ -294,7 +294,6 @@ void sm3_compress_blocks(uint32_t digest[8], const uint8_t *data, size_t blocks)
} }
} }
void sm3_init(SM3_CTX *ctx) void sm3_init(SM3_CTX *ctx)
{ {
memset(ctx, 0, sizeof(*ctx)); memset(ctx, 0, sizeof(*ctx));
@@ -321,7 +320,6 @@ void sm3_update(SM3_CTX *ctx, const uint8_t *data, size_t data_len)
ctx->num += data_len; ctx->num += data_len;
return; return;
} else { } else {
memcpy(ctx->block + ctx->num, data, left);
sm3_compress_blocks(ctx->digest, ctx->block, 1); sm3_compress_blocks(ctx->digest, ctx->block, 1);
ctx->nblocks++; ctx->nblocks++;
data += left; data += left;
@@ -330,10 +328,12 @@ void sm3_update(SM3_CTX *ctx, const uint8_t *data, size_t data_len)
} }
blocks = data_len / SM3_BLOCK_SIZE; blocks = data_len / SM3_BLOCK_SIZE;
sm3_compress_blocks(ctx->digest, data, blocks); if (blocks) {
ctx->nblocks += blocks; sm3_compress_blocks(ctx->digest, data, blocks);
data += SM3_BLOCK_SIZE * blocks; ctx->nblocks += blocks;
data_len -= SM3_BLOCK_SIZE * blocks; data += SM3_BLOCK_SIZE * blocks;
data_len -= SM3_BLOCK_SIZE * blocks;
}
ctx->num = data_len; ctx->num = data_len;
if (data_len) { if (data_len) {