|  | @@ -1119,11 +1119,7 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
 | 
	
		
			
				|  |  |    crypt_path_t *cpath = NULL;
 | 
	
		
			
				|  |  |    char hexcookie[9];
 | 
	
		
			
				|  |  |    int circ_needs_uptime;
 | 
	
		
			
				|  |  | -  char intro_key_digest[DIGEST_LEN];
 | 
	
		
			
				|  |  | -  size_t auth_len = 0;
 | 
	
		
			
				|  |  | -  char auth_data[REND_DESC_COOKIE_LEN];
 | 
	
		
			
				|  |  |    time_t now = time(NULL);
 | 
	
		
			
				|  |  | -  char diffie_hellman_hash[DIGEST_LEN];
 | 
	
		
			
				|  |  |    time_t elapsed;
 | 
	
		
			
				|  |  |    int replay;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1296,8 +1292,9 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* If the service performs client authorization, check included auth data. */
 | 
	
		
			
				|  |  |    if (service->clients) {
 | 
	
		
			
				|  |  | -    if (auth_len > 0) {
 | 
	
		
			
				|  |  | -      if (rend_check_authorization(service, auth_data)) {
 | 
	
		
			
				|  |  | +    if (parsed_req->version == 3 && parsed_req->u.v3.auth_len > 0) {
 | 
	
		
			
				|  |  | +      if (rend_check_authorization(service,
 | 
	
		
			
				|  |  | +                                   (const char*)parsed_req->u.v3.auth_data)) {
 | 
	
		
			
				|  |  |          log_info(LD_REND, "Authorization data in INTRODUCE2 cell are valid.");
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  |          log_info(LD_REND, "The authorization data that are contained in "
 | 
	
	
		
			
				|  | @@ -1410,9 +1407,6 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
 | 
	
		
			
				|  |  |    memwipe(buf, 0, sizeof(buf));
 | 
	
		
			
				|  |  |    memwipe(serviceid, 0, sizeof(serviceid));
 | 
	
		
			
				|  |  |    memwipe(hexcookie, 0, sizeof(hexcookie));
 | 
	
		
			
				|  |  | -  memwipe(intro_key_digest, 0, sizeof(intro_key_digest));
 | 
	
		
			
				|  |  | -  memwipe(auth_data, 0, sizeof(auth_data));
 | 
	
		
			
				|  |  | -  memwipe(diffie_hellman_hash, 0, sizeof(diffie_hellman_hash));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Free the parsed cell */
 | 
	
		
			
				|  |  |    if (parsed_req) {
 |