- Major type rewrite of int to size_t for most variables and arguments used for buffer lengths and loops
diff --git a/library/md5.c b/library/md5.c
index 2984b1d..f379992 100644
--- a/library/md5.c
+++ b/library/md5.c
@@ -34,7 +34,6 @@
 
 #include "polarssl/md5.h"
 
-#include <string.h>
 #include <stdio.h>
 
 /*
@@ -200,9 +199,9 @@
 /*
  * MD5 process buffer
  */
-void md5_update( md5_context *ctx, const unsigned char *input, int ilen )
+void md5_update( md5_context *ctx, const unsigned char *input, size_t ilen )
 {
-    int fill;
+    size_t fill;
     unsigned long left;
 
     if( ilen <= 0 )
@@ -211,7 +210,7 @@
     left = ctx->total[0] & 0x3F;
     fill = 64 - left;
 
-    ctx->total[0] += ilen;
+    ctx->total[0] += (unsigned long) ilen;
     ctx->total[0] &= 0xFFFFFFFF;
 
     if( ctx->total[0] < (unsigned long) ilen )
@@ -280,7 +279,7 @@
 /*
  * output = MD5( input buffer )
  */
-void md5( const unsigned char *input, int ilen, unsigned char output[16] )
+void md5( const unsigned char *input, size_t ilen, unsigned char output[16] )
 {
     md5_context ctx;
 
@@ -326,9 +325,9 @@
 /*
  * MD5 HMAC context setup
  */
-void md5_hmac_starts( md5_context *ctx, const unsigned char *key, int keylen )
+void md5_hmac_starts( md5_context *ctx, const unsigned char *key, size_t keylen )
 {
-    int i;
+    size_t i;
     unsigned char sum[16];
 
     if( keylen > 64 )
@@ -356,7 +355,7 @@
 /*
  * MD5 HMAC process buffer
  */
-void md5_hmac_update( md5_context *ctx, const unsigned char *input, int ilen )
+void md5_hmac_update( md5_context *ctx, const unsigned char *input, size_t ilen )
 {
     md5_update( ctx, input, ilen );
 }
@@ -389,8 +388,8 @@
 /*
  * output = HMAC-MD5( hmac key, input buffer )
  */
-void md5_hmac( const unsigned char *key, int keylen,
-               const unsigned char *input, int ilen,
+void md5_hmac( const unsigned char *key, size_t keylen,
+               const unsigned char *input, size_t ilen,
                unsigned char output[16] )
 {
     md5_context ctx;