diff options
Diffstat (limited to 'libbb/hash_md5_sha.c')
-rw-r--r-- | libbb/hash_md5_sha.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c index d325584d7..2a7247430 100644 --- a/libbb/hash_md5_sha.c +++ b/libbb/hash_md5_sha.c | |||
@@ -458,7 +458,7 @@ void FAST_FUNC md5_hash(md5_ctx_t *ctx, const void *buffer, size_t len) | |||
458 | * endian byte order, so that a byte-wise output yields to the wanted | 458 | * endian byte order, so that a byte-wise output yields to the wanted |
459 | * ASCII representation of the message digest. | 459 | * ASCII representation of the message digest. |
460 | */ | 460 | */ |
461 | void FAST_FUNC md5_end(md5_ctx_t *ctx, void *resbuf) | 461 | unsigned FAST_FUNC md5_end(md5_ctx_t *ctx, void *resbuf) |
462 | { | 462 | { |
463 | /* MD5 stores total in LE, need to swap on BE arches: */ | 463 | /* MD5 stores total in LE, need to swap on BE arches: */ |
464 | common64_end(ctx, /*swap_needed:*/ BB_BIG_ENDIAN); | 464 | common64_end(ctx, /*swap_needed:*/ BB_BIG_ENDIAN); |
@@ -472,6 +472,7 @@ void FAST_FUNC md5_end(md5_ctx_t *ctx, void *resbuf) | |||
472 | } | 472 | } |
473 | 473 | ||
474 | memcpy(resbuf, ctx->hash, sizeof(ctx->hash[0]) * 4); | 474 | memcpy(resbuf, ctx->hash, sizeof(ctx->hash[0]) * 4); |
475 | return sizeof(ctx->hash[0]) * 4; | ||
475 | } | 476 | } |
476 | 477 | ||
477 | 478 | ||
@@ -865,7 +866,7 @@ void FAST_FUNC sha512_hash(sha512_ctx_t *ctx, const void *buffer, size_t len) | |||
865 | #endif /* NEED_SHA512 */ | 866 | #endif /* NEED_SHA512 */ |
866 | 867 | ||
867 | /* Used also for sha256 */ | 868 | /* Used also for sha256 */ |
868 | void FAST_FUNC sha1_end(sha1_ctx_t *ctx, void *resbuf) | 869 | unsigned FAST_FUNC sha1_end(sha1_ctx_t *ctx, void *resbuf) |
869 | { | 870 | { |
870 | unsigned hash_size; | 871 | unsigned hash_size; |
871 | 872 | ||
@@ -879,11 +880,13 @@ void FAST_FUNC sha1_end(sha1_ctx_t *ctx, void *resbuf) | |||
879 | for (i = 0; i < hash_size; ++i) | 880 | for (i = 0; i < hash_size; ++i) |
880 | ctx->hash[i] = SWAP_BE32(ctx->hash[i]); | 881 | ctx->hash[i] = SWAP_BE32(ctx->hash[i]); |
881 | } | 882 | } |
882 | memcpy(resbuf, ctx->hash, sizeof(ctx->hash[0]) * hash_size); | 883 | hash_size *= sizeof(ctx->hash[0]); |
884 | memcpy(resbuf, ctx->hash, hash_size); | ||
885 | return hash_size; | ||
883 | } | 886 | } |
884 | 887 | ||
885 | #if NEED_SHA512 | 888 | #if NEED_SHA512 |
886 | void FAST_FUNC sha512_end(sha512_ctx_t *ctx, void *resbuf) | 889 | unsigned FAST_FUNC sha512_end(sha512_ctx_t *ctx, void *resbuf) |
887 | { | 890 | { |
888 | unsigned bufpos = ctx->total64[0] & 127; | 891 | unsigned bufpos = ctx->total64[0] & 127; |
889 | 892 | ||
@@ -915,6 +918,7 @@ void FAST_FUNC sha512_end(sha512_ctx_t *ctx, void *resbuf) | |||
915 | ctx->hash[i] = SWAP_BE64(ctx->hash[i]); | 918 | ctx->hash[i] = SWAP_BE64(ctx->hash[i]); |
916 | } | 919 | } |
917 | memcpy(resbuf, ctx->hash, sizeof(ctx->hash)); | 920 | memcpy(resbuf, ctx->hash, sizeof(ctx->hash)); |
921 | return sizeof(ctx->hash); | ||
918 | } | 922 | } |
919 | #endif /* NEED_SHA512 */ | 923 | #endif /* NEED_SHA512 */ |
920 | 924 | ||
@@ -1450,7 +1454,7 @@ void FAST_FUNC sha3_hash(sha3_ctx_t *ctx, const void *buffer, size_t len) | |||
1450 | #endif | 1454 | #endif |
1451 | } | 1455 | } |
1452 | 1456 | ||
1453 | void FAST_FUNC sha3_end(sha3_ctx_t *ctx, void *resbuf) | 1457 | unsigned FAST_FUNC sha3_end(sha3_ctx_t *ctx, void *resbuf) |
1454 | { | 1458 | { |
1455 | /* Padding */ | 1459 | /* Padding */ |
1456 | uint8_t *buf = (uint8_t*)ctx->state; | 1460 | uint8_t *buf = (uint8_t*)ctx->state; |
@@ -1475,4 +1479,5 @@ void FAST_FUNC sha3_end(sha3_ctx_t *ctx, void *resbuf) | |||
1475 | 1479 | ||
1476 | /* Output */ | 1480 | /* Output */ |
1477 | memcpy(resbuf, ctx->state, 64); | 1481 | memcpy(resbuf, ctx->state, 64); |
1482 | return 64; | ||
1478 | } | 1483 | } |