- Major type rewrite of int to size_t for most variables and arguments used for buffer lengths and loops
diff --git a/library/x509parse.c b/library/x509parse.c
index 9d0ebd2..ddbeb38 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -59,7 +59,7 @@
  */
 static int asn1_get_len( unsigned char **p,
                          const unsigned char *end,
-                         int *len )
+                         size_t *len )
 {
     if( ( end - *p ) < 1 )
         return( POLARSSL_ERR_ASN1_OUT_OF_DATA );
@@ -92,7 +92,7 @@
         }
     }
 
-    if( *len > (int) ( end - *p ) )
+    if( *len > (size_t) ( end - *p ) )
         return( POLARSSL_ERR_ASN1_OUT_OF_DATA );
 
     return( 0 );
@@ -100,7 +100,7 @@
 
 static int asn1_get_tag( unsigned char **p,
                          const unsigned char *end,
-                         int *len, int tag )
+                         size_t *len, int tag )
 {
     if( ( end - *p ) < 1 )
         return( POLARSSL_ERR_ASN1_OUT_OF_DATA );
@@ -117,7 +117,8 @@
                           const unsigned char *end,
                           int *val )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( ( ret = asn1_get_tag( p, end, &len, ASN1_BOOLEAN ) ) != 0 )
         return( ret );
@@ -135,7 +136,8 @@
                          const unsigned char *end,
                          int *val )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( ( ret = asn1_get_tag( p, end, &len, ASN1_INTEGER ) ) != 0 )
         return( ret );
@@ -158,7 +160,8 @@
                          const unsigned char *end,
                          mpi *X )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( ( ret = asn1_get_tag( p, end, &len, ASN1_INTEGER ) ) != 0 )
         return( ret );
@@ -209,7 +212,8 @@
                           x509_sequence *cur,
                           int tag)
 {
-    int ret, len;
+    int ret;
+    size_t len;
     x509_buf *buf;
 
     /* Get main sequence tag */
@@ -260,7 +264,8 @@
                              const unsigned char *end,
                              int *ver )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( ( ret = asn1_get_tag( p, end, &len,
             ASN1_CONTEXT_SPECIFIC | ASN1_CONSTRUCTED | 0 ) ) != 0 )
@@ -321,7 +326,8 @@
                          const unsigned char *end,
                          x509_buf *alg )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( ( ret = asn1_get_tag( p, end, &len,
             ASN1_CONSTRUCTED | ASN1_SEQUENCE ) ) != 0 )
@@ -365,7 +371,8 @@
                                      const unsigned char *end,
                                      x509_name *cur )
 {
-    int ret, len;
+    int ret;
+    size_t len;
     x509_buf *oid;
     x509_buf *val;
 
@@ -422,7 +429,8 @@
                           const unsigned char *end,
                           x509_name *cur )
 {
-    int ret, len;
+    int ret;
+    size_t len;
     const unsigned char *end2;
     x509_name *use; 
     
@@ -478,7 +486,8 @@
                           const unsigned char *end,
                           x509_time *time )
 {
-    int ret, len;
+    int ret;
+    size_t len;
     char date[64];
     unsigned char tag;
 
@@ -547,7 +556,8 @@
                            x509_time *from,
                            x509_time *to )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( ( ret = asn1_get_tag( p, end, &len,
             ASN1_CONSTRUCTED | ASN1_SEQUENCE ) ) != 0 )
@@ -578,7 +588,8 @@
                             x509_buf *pk_alg_oid,
                             mpi *N, mpi *E )
 {
-    int ret, len, can_handle;
+    int ret, can_handle;
+    size_t len;
     unsigned char *end2;
 
     if( ( ret = x509_get_alg( p, end, pk_alg_oid ) ) != 0 )
@@ -651,7 +662,8 @@
                          const unsigned char *end,
                          x509_buf *sig )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     sig->tag = **p;
 
@@ -707,7 +719,8 @@
                          const unsigned char *end,
                          x509_buf *ext )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( *p == end )
         return( 0 );
@@ -747,7 +760,8 @@
                              const unsigned char *end,
                              x509_buf *ext )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     if( ( ret = x509_get_ext( p, end, ext ) ) != 0 )
     {
@@ -778,7 +792,8 @@
                                        int *ca_istrue,
                                        int *max_pathlen )
 {
-    int ret, len;
+    int ret;
+    size_t len;
 
     /*
      * BasicConstraints ::= SEQUENCE {
@@ -893,7 +908,8 @@
                              const unsigned char *end,
                              x509_cert *crt )
 {
-    int ret, len;
+    int ret;
+    size_t len;
     unsigned char *end_ext_data, *end_ext_octet;
 
     if( ( ret = x509_get_ext( p, end, &crt->v3_ext ) ) != 0 )
@@ -1017,7 +1033,8 @@
                              const unsigned char *end,
                              x509_crl_entry *entry )
 {
-    int ret, entry_len;
+    int ret;
+    size_t entry_len;
     x509_crl_entry *cur_entry = entry;
 
     if( *p == end )
@@ -1036,7 +1053,7 @@
 
     while( *p < end )
     {
-        int len2;
+        size_t len2;
 
         if( ( ret = asn1_get_tag( p, end, &len2,
                 ASN1_SEQUENCE | ASN1_CONSTRUCTED ) ) != 0 )
@@ -1100,9 +1117,10 @@
 /*
  * Parse one or more certificates and add them to the chained list
  */
-int x509parse_crt( x509_cert *chain, const unsigned char *buf, int buflen )
+int x509parse_crt( x509_cert *chain, const unsigned char *buf, size_t buflen )
 {
-    int ret, len, use_len;
+    int ret;
+    size_t len, use_len;
     unsigned char *p, *end;
     x509_cert *crt;
 #if defined(POLARSSL_PEM_C)
@@ -1207,7 +1225,7 @@
         return( POLARSSL_ERR_X509_CERT_INVALID_FORMAT );
     }
 
-    if( len != (int) ( end - p ) )
+    if( len != (size_t) ( end - p ) )
     {
         x509_free( crt );
         return( POLARSSL_ERR_X509_CERT_INVALID_FORMAT |
@@ -1436,9 +1454,10 @@
 /*
  * Parse one or more CRLs and add them to the chained list
  */
-int x509parse_crl( x509_crl *chain, const unsigned char *buf, int buflen )
+int x509parse_crl( x509_crl *chain, const unsigned char *buf, size_t buflen )
 {
-    int ret, len, use_len;
+    int ret;
+    size_t len, use_len;
     unsigned char *p, *end;
     x509_crl *crl;
 #if defined(POLARSSL_PEM_C)
@@ -1543,7 +1562,7 @@
         return( POLARSSL_ERR_X509_CERT_INVALID_FORMAT );
     }
 
-    if( len != (int) ( end - p ) )
+    if( len != (size_t) ( end - p ) )
     {
         x509_crl_free( crl );
         return( POLARSSL_ERR_X509_CERT_INVALID_FORMAT |
@@ -1794,10 +1813,11 @@
 /*
  * Parse a private RSA key
  */
-int x509parse_key( rsa_context *rsa, const unsigned char *key, int keylen,
-                                     const unsigned char *pwd, int pwdlen )
+int x509parse_key( rsa_context *rsa, const unsigned char *key, size_t keylen,
+                                     const unsigned char *pwd, size_t pwdlen )
 {
-    int ret, len;
+    int ret;
+    size_t len;
     unsigned char *p, *end;
 #if defined(POLARSSL_PEM_C)
     pem_context pem;
@@ -1942,9 +1962,10 @@
 /*
  * Parse a public RSA key
  */
-int x509parse_public_key( rsa_context *rsa, const unsigned char *key, int keylen )
+int x509parse_public_key( rsa_context *rsa, const unsigned char *key, size_t keylen )
 {
-    int ret, len;
+    int ret;
+    size_t len;
     unsigned char *p, *end;
     x509_buf alg_oid;
 #if defined(POLARSSL_PEM_C)
@@ -2053,9 +2074,10 @@
 /*
  * Parse DHM parameters
  */
-int x509parse_dhm( dhm_context *dhm, const unsigned char *dhmin, int dhminlen )
+int x509parse_dhm( dhm_context *dhm, const unsigned char *dhmin, size_t dhminlen )
 {
-    int ret, len;
+    int ret;
+    size_t len;
     unsigned char *p, *end;
 #if defined(POLARSSL_PEM_C)
     pem_context pem;
@@ -2180,7 +2202,7 @@
 
     // No quick fix possible
     if ( res < 0 )
-        return( size + 20 );
+        return( (int) size + 20 );
     
     return res;
 }
@@ -2195,13 +2217,13 @@
     if( ret == -1 )                             \
         return( -1 );                           \
                                                 \
-    if ( ret > n ) {                            \
+    if ( (unsigned int) ret > n ) {             \
         p[n - 1] = '\0';                        \
         return POLARSSL_ERR_DEBUG_BUF_TOO_SMALL;\
     }                                           \
                                                 \
-    n -= ret;                                   \
-    p += ret;                                   \
+    n -= (unsigned int) ret;                    \
+    p += (unsigned int) ret;                    \
 }
 
 /*
@@ -2210,7 +2232,8 @@
  */
 int x509parse_dn_gets( char *buf, size_t size, const x509_name *dn )
 {
-    int i, ret, n;
+    int ret;
+    size_t i, n;
     unsigned char c;
     const x509_name *name;
     char s[128], *p;
@@ -2294,7 +2317,7 @@
         name = name->next;
     }
 
-    return( size - n );
+    return( (int) ( size - n ) );
 }
 
 /*
@@ -2303,7 +2326,8 @@
  */
 int x509parse_serial_gets( char *buf, size_t size, const x509_buf *serial )
 {
-    int i, ret, nr, n;
+    int ret;
+    size_t i, n, nr;
     char *p;
 
     p = buf;
@@ -2319,7 +2343,7 @@
         SAFE_SNPRINTF();
     }
 
-    return( size - n );
+    return( (int) ( size - n ) );
 }
 
 /*
@@ -2328,7 +2352,8 @@
 int x509parse_cert_info( char *buf, size_t size, const char *prefix,
                          const x509_cert *crt )
 {
-    int n, ret;
+    int ret;
+    size_t n;
     char *p;
 
     p = buf;
@@ -2389,7 +2414,7 @@
                    crt->rsa.N.n * (int) sizeof( unsigned long ) * 8 );
     SAFE_SNPRINTF();
 
-    return( size - n );
+    return( (int) ( size - n ) );
 }
 
 /* Compare a given OID string with an OID x509_buf * */
@@ -2429,7 +2454,8 @@
 /* Return the x.y.z.... style numeric string for the given OID */
 int x509_oid_get_numeric_string( char *buf, size_t size, x509_buf *oid )
 {
-    int ret, n, i;
+    int ret;
+    size_t i, n;
     unsigned int value;
     char *p;
 
@@ -2445,7 +2471,7 @@
 
     /* TODO: value can overflow in value. */
     value = 0;
-    for( i=1; i < oid->len; i++ )
+    for( i = 1; i < oid->len; i++ )
     {
         value <<= 7;
         value += oid->p[i] & 0x7F;
@@ -2459,7 +2485,7 @@
         }
     }
 
-    return( size - n );
+    return( (int) ( size - n ) );
 }
 
 /*
@@ -2468,7 +2494,8 @@
 int x509parse_crl_info( char *buf, size_t size, const char *prefix,
                         const x509_crl *crl )
 {
-    int i, n, nr, ret;
+    int ret;
+    size_t i, n, nr;
     char *p;
     const x509_crl_entry *entry;
 
@@ -2550,7 +2577,7 @@
     ret = snprintf( p, n, "\n" );
     SAFE_SNPRINTF();
 
-    return( size - n );
+    return( (int) ( size - n ) );
 }
 
 /*
@@ -2627,7 +2654,7 @@
  *
  * \param out   Buffer to receive the hash (Should be at least 64 bytes)
  */
-static void x509_hash( const unsigned char *in, int len, int alg,
+static void x509_hash( const unsigned char *in, size_t len, int alg,
                        unsigned char *out )
 {
     switch( alg )
@@ -2731,7 +2758,7 @@
                       int (*f_vrfy)(void *, x509_cert *, int, int),
                       void *p_vrfy )
 {
-    int cn_len;
+    size_t cn_len;
     int hash_id;
     int pathlen;
     x509_cert *parent;
@@ -2999,7 +3026,9 @@
 int x509_self_test( int verbose )
 {
 #if defined(POLARSSL_MD5_C)
-    int ret, i, j;
+    int ret;
+    int flags;
+    size_t i, j;
     x509_cert cacert;
     x509_cert clicert;
     rsa_context rsa;
@@ -3053,10 +3082,10 @@
     if( verbose != 0 )
         printf( "passed\n  X.509 signature verify: ");
 
-    ret = x509parse_verify( &clicert, &cacert, NULL, "PolarSSL Client 2", &i, NULL, NULL );
+    ret = x509parse_verify( &clicert, &cacert, NULL, "PolarSSL Client 2", &flags, NULL, NULL );
     if( ret != 0 )
     {
-        printf("%02x", i);
+        printf("%02x", flags);
         if( verbose != 0 )
             printf( "failed\n" );