Don't send an ACK message after the first key exchange in the SPTPS protocol.
This commit is contained in:
		
							parent
							
								
									c970ecdd75
								
							
						
					
					
						commit
						d756bb92ed
					
				
					 1 changed files with 11 additions and 4 deletions
				
			
		
							
								
								
									
										15
									
								
								src/sptps.c
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								src/sptps.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -301,7 +301,7 @@ static bool receive_sig(sptps_t *s, const char *data, uint16_t len) {
 | 
			
		|||
	s->hiskex = NULL;
 | 
			
		||||
 | 
			
		||||
	// Send cipher change record
 | 
			
		||||
	if(!send_ack(s))
 | 
			
		||||
	if(s->outstate && !send_ack(s))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	// TODO: only set new keys after ACK has been set/received
 | 
			
		||||
| 
						 | 
				
			
			@ -319,8 +319,6 @@ static bool receive_sig(sptps_t *s, const char *data, uint16_t len) {
 | 
			
		|||
			return false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	s->outstate = true;
 | 
			
		||||
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -352,7 +350,16 @@ static bool receive_handshake(sptps_t *s, const char *data, uint16_t len) {
 | 
			
		|||
			// If we already sent our secondary public ECDH key, we expect the peer to send his.
 | 
			
		||||
			if(!receive_sig(s, data, len))
 | 
			
		||||
				return false;
 | 
			
		||||
			s->state = SPTPS_ACK;
 | 
			
		||||
			if(s->outstate)
 | 
			
		||||
				s->state = SPTPS_ACK;
 | 
			
		||||
			else {
 | 
			
		||||
				s->outstate = true;
 | 
			
		||||
				if(!receive_ack(s, NULL, 0))
 | 
			
		||||
					return false;
 | 
			
		||||
				s->receive_record(s->handle, SPTPS_HANDSHAKE, NULL, 0);
 | 
			
		||||
				s->state = SPTPS_SECONDARY_KEX;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return true;
 | 
			
		||||
		case SPTPS_ACK:
 | 
			
		||||
			// We expect a handshake message to indicate transition to the new keys.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue