diff options
author | Guy Harris <guy@alum.mit.edu> | 2015-05-09 16:35:45 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2015-05-09 23:36:11 +0000 |
commit | acf7985f7377806e23d7ec9daa14a3a6886a51c7 (patch) | |
tree | 3c46c8ceb05fc7feee052c138c437f83f5381a53 /wsutil | |
parent | bb89e7724220098e7b7fba5d31daf0d916b2d553 (diff) | |
download | wireshark-acf7985f7377806e23d7ec9daa14a3a6886a51c7.tar.gz wireshark-acf7985f7377806e23d7ec9daa14a3a6886a51c7.tar.bz2 wireshark-acf7985f7377806e23d7ec9daa14a3a6886a51c7.zip |
Define the SHA-1 digest length in wsutil/sha1.h and use it.
Hopefully that'll make it a little easier to make sure that we're not
overflowing arrays.
Change-Id: I770df045ef9a45fd486c1271ea424b3334bb39d2
Reviewed-on: https://code.wireshark.org/review/8370
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'wsutil')
-rw-r--r-- | wsutil/sha1.c | 16 | ||||
-rw-r--r-- | wsutil/sha1.h | 11 |
2 files changed, 16 insertions, 11 deletions
diff --git a/wsutil/sha1.c b/wsutil/sha1.c index b7a2a76cef..3aaf557052 100644 --- a/wsutil/sha1.c +++ b/wsutil/sha1.c @@ -261,7 +261,7 @@ static guint8 sha1_padding[64] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -void sha1_finish( sha1_context *ctx, guint8 digest[20] ) +void sha1_finish( sha1_context *ctx, guint8 digest[SHA1_DIGEST_LEN] ) { guint32 last, padn; guint32 high, low; @@ -312,20 +312,20 @@ void sha1_hmac_update( sha1_hmac_context *hctx, const guint8 *buf, guint32 bufle sha1_update( &hctx->ctx, buf, buflen ); } -void sha1_hmac_finish( sha1_hmac_context *hctx, guint8 digest[20] ) +void sha1_hmac_finish( sha1_hmac_context *hctx, guint8 digest[SHA1_DIGEST_LEN] ) { - guint8 tmpbuf[20]; + guint8 tmpbuf[SHA1_DIGEST_LEN]; sha1_finish( &hctx->ctx, tmpbuf ); sha1_starts( &hctx->ctx ); sha1_update( &hctx->ctx, hctx->k_opad, 64 ); - sha1_update( &hctx->ctx, tmpbuf, 20 ); + sha1_update( &hctx->ctx, tmpbuf, SHA1_DIGEST_LEN ); sha1_finish( &hctx->ctx, digest ); } void sha1_hmac( const guint8 *key, guint32 keylen, const guint8 *buf, guint32 buflen, - guint8 digest[20] ) + guint8 digest[SHA1_DIGEST_LEN] ) { sha1_hmac_context hctx; @@ -365,7 +365,7 @@ int main( int argc, char *argv[] ) char output[41]; sha1_context ctx; unsigned char buf[1000]; - unsigned char sha1sum[20]; + unsigned char sha1sum[SHA1_DIGEST_LEN]; if( argc < 2 ) { @@ -394,7 +394,7 @@ int main( int argc, char *argv[] ) sha1_finish( &ctx, sha1sum ); - for( j = 0; j < 20; j++ ) + for( j = 0; j < SHA1_DIGEST_LEN; j++ ) { g_snprintf( output + j * 2, 41-j*2, "%02x", sha1sum[j] ); } @@ -427,7 +427,7 @@ int main( int argc, char *argv[] ) sha1_finish( &ctx, sha1sum ); - for( j = 0; j < 20; j++ ) + for( j = 0; j < SHA1_DIGEST_LEN; j++ ) { printf( "%02x", sha1sum[j] ); } diff --git a/wsutil/sha1.h b/wsutil/sha1.h index f4f9d86a1c..52a9842d57 100644 --- a/wsutil/sha1.h +++ b/wsutil/sha1.h @@ -30,6 +30,11 @@ #include "ws_symbol_export.h" +/* + * Length of a SHA-1 digest, in bytes. 160 bits = 20 bytes. + */ +#define SHA1_DIGEST_LEN 20 + typedef struct { guint32 total[2]; @@ -43,7 +48,7 @@ void sha1_starts( sha1_context *ctx ); WS_DLL_PUBLIC void sha1_update( sha1_context *ctx, const guint8 *input, guint32 length ); WS_DLL_PUBLIC -void sha1_finish( sha1_context *ctx, guint8 digest[20] ); +void sha1_finish( sha1_context *ctx, guint8 digest[SHA1_DIGEST_LEN] ); typedef struct { sha1_context ctx; @@ -56,9 +61,9 @@ void sha1_hmac_starts( sha1_hmac_context *hctx, const guint8 *key, guint32 keyle WS_DLL_PUBLIC void sha1_hmac_update( sha1_hmac_context *hctx, const guint8 *buf, guint32 buflen ); WS_DLL_PUBLIC -void sha1_hmac_finish( sha1_hmac_context *hctx, guint8 digest[20] ); +void sha1_hmac_finish( sha1_hmac_context *hctx, guint8 digest[SHA1_DIGEST_LEN] ); WS_DLL_PUBLIC void sha1_hmac( const guint8 *key, guint32 keylen, const guint8 *buf, guint32 buflen, - guint8 digest[20] ); + guint8 digest[SHA1_DIGEST_LEN] ); #endif /* sha1.h */ |