| 
					
				 | 
			
			
				@@ -93,7 +93,7 @@ struct crypto_pk_env_t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 struct crypto_cipher_env_t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  unsigned char key[CIPHER_KEY_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char key[CIPHER_KEY_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   aes_cnt_cipher_t *cipher; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -597,12 +597,12 @@ int crypto_pk_cmp_keys(crypto_pk_env_t *a, crypto_pk_env_t *b) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Return the size of the public key modulus in <b>env</b>, in bytes. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-int crypto_pk_keysize(crypto_pk_env_t *env) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+size_t crypto_pk_keysize(crypto_pk_env_t *env) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env->key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return RSA_size(env->key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return (size_t) RSA_size(env->key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Increase the reference count of <b>env</b>, and return it. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -621,16 +621,16 @@ crypto_pk_env_t *crypto_pk_dup_key(crypto_pk_env_t *env) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * written.  On failure, return -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_pk_public_encrypt(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                         const unsigned char *from, int fromlen, int padding) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         const char *from, size_t fromlen, int padding) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(from); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(to); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  r = RSA_public_encrypt(fromlen, (unsigned char*)from, to, env->key, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            crypto_get_rsa_padding(padding)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  r = RSA_public_encrypt(fromlen, (unsigned char*)from, (unsigned char*)to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         env->key, crypto_get_rsa_padding(padding)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (r<0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     crypto_log_errors(LOG_WARN, "performing RSA encryption"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -644,8 +644,8 @@ crypto_pk_public_encrypt(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * written.  On failure, return -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_pk_private_decrypt(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          const unsigned char *from, int fromlen, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          const char *from, size_t fromlen, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           int padding, int warnOnFailure) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int r; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -657,8 +657,9 @@ crypto_pk_private_decrypt(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Not a private key */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  r = RSA_private_decrypt(fromlen, (unsigned char*)from, to, env->key, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             crypto_get_rsa_padding(padding)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  r = RSA_private_decrypt(fromlen, (unsigned char*)from, (unsigned char*)to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          env->key, crypto_get_rsa_padding(padding)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (r<0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     crypto_log_errors(warnOnFailure?LOG_WARN:LOG_INFO, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       "performing RSA decryption"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -673,14 +674,14 @@ crypto_pk_private_decrypt(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * On failure, return -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_pk_public_checksig(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          const unsigned char *from, int fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_pk_public_checksig(crypto_pk_env_t *env, char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          const char *from, size_t fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(from); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(to); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  r = RSA_public_decrypt(fromlen, (unsigned char*)from, to, env->key, RSA_PKCS1_PADDING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  r = RSA_public_decrypt(fromlen, (unsigned char*)from, (unsigned char*)to, env->key, RSA_PKCS1_PADDING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (r<0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     crypto_log_errors(LOG_WARN, "checking RSA signature"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -695,8 +696,8 @@ crypto_pk_public_checksig(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * SHA1(data).  Else return -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const unsigned char *data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                 int datalen, const unsigned char *sig, int siglen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const char *data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 int datalen, const char *sig, int siglen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char digest[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char buf[PK_BYTES+1]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -729,8 +730,8 @@ crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const unsigned char *data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_pk_private_sign(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                       const unsigned char *from, int fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_pk_private_sign(crypto_pk_env_t *env, char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       const char *from, size_t fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -740,7 +741,7 @@ crypto_pk_private_sign(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Not a private key */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  r = RSA_private_encrypt(fromlen, (unsigned char*)from, to, env->key, RSA_PKCS1_PADDING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  r = RSA_private_encrypt(fromlen, (unsigned char*)from, (unsigned char*)to, env->key, RSA_PKCS1_PADDING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (r<0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     crypto_log_errors(LOG_WARN, "generating RSA signature"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -754,8 +755,8 @@ crypto_pk_private_sign(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * success, and -1 on failure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_pk_private_sign_digest(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              const unsigned char *from, int fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const char *from, size_t fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char digest[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (crypto_digest(digest,from,fromlen)<0) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -781,12 +782,13 @@ crypto_pk_private_sign_digest(crypto_pk_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  *     the source data encrypted in AES-CTR mode with the symmetric key. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    const unsigned char *from, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    int fromlen, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    const char *from, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    size_t fromlen, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     int padding, int force) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  int overhead, pkeylen, outlen, r, symlen; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  int overhead, outlen, r, symlen; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  size_t pkeylen; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   crypto_cipher_env_t *cipher = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char buf[PK_BYTES+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -825,7 +827,7 @@ int crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   symlen = fromlen-(pkeylen-overhead-CIPHER_KEY_LEN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   outlen = crypto_pk_public_encrypt(env,to,buf,pkeylen-overhead,padding); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (outlen!=pkeylen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (outlen!=(int)pkeylen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     goto err; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   r = crypto_cipher_encrypt(cipher, to+outlen, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -843,12 +845,13 @@ int crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Invert crypto_pk_public_hybrid_encrypt. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                     unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                     const unsigned char *from, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                     int fromlen, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     const char *from, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     size_t fromlen, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      int padding, int warnOnFailure) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  int overhead, pkeylen, outlen, r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  int overhead, outlen, r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  size_t pkeylen; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   crypto_cipher_env_t *cipher = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char buf[PK_BYTES+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -913,7 +916,7 @@ int crypto_pk_asn1_encode(crypto_pk_env_t *pk, char *dest, int dest_len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Decode an ASN.1-encoded public key from <b>str</b>; return the result on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * success and NULL on failure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_pk_env_t *crypto_pk_asn1_decode(const char *str, int len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_pk_env_t *crypto_pk_asn1_decode(const char *str, size_t len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   RSA *rsa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   unsigned char *buf; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -955,7 +958,7 @@ int crypto_pk_get_digest(crypto_pk_env_t *pk, char *digest_out) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     free(buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (crypto_digest(digest_out, buf, len) < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (crypto_digest(digest_out, (char*)buf, len) < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     free(buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -976,8 +979,8 @@ int crypto_pk_get_digest(crypto_pk_env_t *pk, char *digest_out) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 crypto_pk_get_fingerprint(crypto_pk_env_t *pk, char *fp_out, int add_space) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  unsigned char digest[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  unsigned char hexdigest[HEX_DIGEST_LEN+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char digest[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char hexdigest[HEX_DIGEST_LEN+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (crypto_pk_get_digest(pk, digest)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1025,7 +1028,7 @@ int crypto_cipher_generate_key(crypto_cipher_env_t *env) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * CIPHER_KEY_LEN bytes of <b>key</b>. Does not initialize the cipher. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Return 0 on success, -1 on failure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-int crypto_cipher_set_key(crypto_cipher_env_t *env, const unsigned char *key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int crypto_cipher_set_key(crypto_cipher_env_t *env, const char *key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(key); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1040,7 +1043,7 @@ int crypto_cipher_set_key(crypto_cipher_env_t *env, const unsigned char *key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Return a pointer to the key set for the cipher in <b>env</b>. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const unsigned char *crypto_cipher_get_key(crypto_cipher_env_t *env) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const char *crypto_cipher_get_key(crypto_cipher_env_t *env) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return env->key; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1072,8 +1075,8 @@ int crypto_cipher_decrypt_init_cipher(crypto_cipher_env_t *env) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * On failure, return -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_cipher_encrypt(crypto_cipher_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      const unsigned char *from, unsigned int fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_cipher_encrypt(crypto_cipher_env_t *env, char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      const char *from, size_t fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env->cipher); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1090,8 +1093,8 @@ crypto_cipher_encrypt(crypto_cipher_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * On failure, return -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-crypto_cipher_decrypt(crypto_cipher_env_t *env, unsigned char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      const unsigned char *from, unsigned int fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+crypto_cipher_decrypt(crypto_cipher_env_t *env, char *to, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      const char *from, size_t fromlen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(env); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(from); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1126,11 +1129,11 @@ crypto_cipher_advance(crypto_cipher_env_t *env, long delta) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * <b>m</b>.  Write the DIGEST_LEN byte result into <b>digest</b>. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Return 0 on success, -1 on failure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-int crypto_digest(unsigned char *digest, const unsigned char *m, int len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int crypto_digest(char *digest, const char *m, size_t len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(m); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(digest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return (SHA1(m,len,digest) == NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return (SHA1((const unsigned char*)m,len,(unsigned char*)digest) == NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 struct crypto_digest_env_t { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1178,7 +1181,7 @@ crypto_digest_add_bytes(crypto_digest_env_t *digest, const char *data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void crypto_digest_get_digest(crypto_digest_env_t *digest, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               char *out, size_t out_len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  static char r[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  static unsigned char r[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SHA_CTX tmpctx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(digest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(out); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1337,7 +1340,7 @@ int crypto_dh_get_public(crypto_dh_env_t *dh, char *pubkey, size_t pubkey_len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   memset(pubkey, 0, pubkey_len); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  BN_bn2bin(dh->dh->pub_key, pubkey+(pubkey_len-bytes)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  BN_bn2bin(dh->dh->pub_key, (unsigned char*)(pubkey+(pubkey_len-bytes))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1358,8 +1361,8 @@ int crypto_dh_compute_secret(crypto_dh_env_t *dh, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              const char *pubkey, size_t pubkey_len, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              char *secret_out, size_t secret_bytes_out) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  unsigned char hash[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  unsigned char *secret_tmp = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char hash[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char *secret_tmp = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   BIGNUM *pubkey_bn = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   size_t secret_len=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   unsigned int i; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1367,10 +1370,10 @@ int crypto_dh_compute_secret(crypto_dh_env_t *dh, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(dh); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(secret_bytes_out/DIGEST_LEN <= 255); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!(pubkey_bn = BN_bin2bn(pubkey, pubkey_len, NULL))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!(pubkey_bn = BN_bin2bn((const unsigned char*)pubkey, pubkey_len, NULL))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     goto error; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   secret_tmp = tor_malloc(crypto_dh_get_bytes(dh)+1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  result = DH_compute_key(secret_tmp, pubkey_bn, dh->dh); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  result = DH_compute_key((unsigned char*)secret_tmp, pubkey_bn, dh->dh); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (result < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_fn(LOG_WARN,"DH_compute_key() failed."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     goto error; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1475,11 +1478,11 @@ int crypto_seed_rng(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Write n bytes of strong random data to <b>to</b>. Return 0 on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * success, -1 on failure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-int crypto_rand(unsigned char *to, unsigned int n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int crypto_rand(char *to, size_t n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(to); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  r = RAND_bytes(to, n); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  r = RAND_bytes((unsigned char*)to, n); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (r == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     crypto_log_errors(LOG_WARN, "generating random data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return (r == 1) ? 0 : -1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1488,10 +1491,10 @@ int crypto_rand(unsigned char *to, unsigned int n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Write n bytes of pseudorandom data to <b>to</b>. Return 0 on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * success, -1 on failure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void crypto_pseudo_rand(unsigned char *to, unsigned int n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void crypto_pseudo_rand(char *to, size_t n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_assert(to); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (RAND_pseudo_bytes(to, n) == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (RAND_pseudo_bytes((unsigned char*)to, n) == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_fn(LOG_ERR, "RAND_pseudo_bytes failed unexpectedly."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     crypto_log_errors(LOG_WARN, "generating random data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     exit(1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1512,7 +1515,7 @@ int crypto_pseudo_rand_int(unsigned int max) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cutoff = UINT_MAX - (UINT_MAX%max); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   while (1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    crypto_pseudo_rand((unsigned char*) &val, sizeof(val)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    crypto_pseudo_rand((char*)&val, sizeof(val)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (val < cutoff) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return val % max; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1548,8 +1551,8 @@ base64_encode(char *dest, size_t destlen, const char *src, size_t srclen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   EVP_EncodeInit(&ctx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  EVP_EncodeUpdate(&ctx, dest, &len, (char*) src, srclen); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  EVP_EncodeFinal(&ctx, dest+len, &ret); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EVP_EncodeUpdate(&ctx, (unsigned char*)dest, &len, (unsigned char*)src, srclen); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EVP_EncodeFinal(&ctx, (unsigned char*)(dest+len), &ret); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ret += len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1577,8 +1580,8 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   EVP_DecodeInit(&ctx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  EVP_DecodeUpdate(&ctx, dest, &len, (char*) src, srclen); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  EVP_DecodeFinal(&ctx, dest, &ret); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EVP_DecodeUpdate(&ctx, (unsigned char*)dest, &len, (unsigned char*)src, srclen); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EVP_DecodeFinal(&ctx, (unsigned char*)dest, &ret); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ret += len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |