mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-28 11:16:26 +08:00
Update SM3
Safe call to sm3_compress_blocks
This commit is contained in:
12
src/sm3.c
12
src/sm3.c
@@ -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)
|
||||
{
|
||||
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;
|
||||
return;
|
||||
} else {
|
||||
memcpy(ctx->block + ctx->num, data, left);
|
||||
sm3_compress_blocks(ctx->digest, ctx->block, 1);
|
||||
ctx->nblocks++;
|
||||
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;
|
||||
sm3_compress_blocks(ctx->digest, data, blocks);
|
||||
ctx->nblocks += blocks;
|
||||
data += SM3_BLOCK_SIZE * blocks;
|
||||
data_len -= SM3_BLOCK_SIZE * blocks;
|
||||
if (blocks) {
|
||||
sm3_compress_blocks(ctx->digest, data, blocks);
|
||||
ctx->nblocks += blocks;
|
||||
data += SM3_BLOCK_SIZE * blocks;
|
||||
data_len -= SM3_BLOCK_SIZE * blocks;
|
||||
}
|
||||
|
||||
ctx->num = data_len;
|
||||
if (data_len) {
|
||||
|
||||
Reference in New Issue
Block a user