mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-10-31 04:47:31 +01:00 
			
		
		
		
	dpp-util: fix dpp_point_to_asn1 compressed type
The point type was being hard coded to 0x3 (BIT1) which may have resulted in the peer subtracting Y from P when reading in the point (depending on if Y was odd or not). Instead set the compressed type to whatever avoids the subtraction which both saves IWD from needing to do it, as well as the peer.
This commit is contained in:
		
							parent
							
								
									44a7bc640b
								
							
						
					
					
						commit
						188d09af42
					
				| @ -725,6 +725,7 @@ uint8_t *dpp_point_to_asn1(const struct l_ecc_point *p, size_t *len_out) | ||||
| 	uint64_t x[L_ECC_MAX_DIGITS]; | ||||
| 	ssize_t ret; | ||||
| 	size_t len; | ||||
| 	uint8_t point_type; | ||||
| 
 | ||||
| 	switch (key_size) { | ||||
| 	case 32: | ||||
| @ -745,6 +746,17 @@ uint8_t *dpp_point_to_asn1(const struct l_ecc_point *p, size_t *len_out) | ||||
| 
 | ||||
| 	len = 2 + sizeof(ec_oid) + 2 + type_oid_len + 2 + key_size + 4; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Set the type to whatever avoids doing p - y when reading in the | ||||
| 	 * key. Working backwards from l_ecc_point_from_data if Y is odd and | ||||
| 	 * the type is BIT0 there is no subtraction. Similarly if Y is even | ||||
| 	 * and the type is BIT1. | ||||
| 	 */ | ||||
| 	if (l_ecc_point_y_isodd(p)) | ||||
| 		point_type = L_ECC_POINT_TYPE_COMPRESSED_BIT0; | ||||
| 	else | ||||
| 		point_type = L_ECC_POINT_TYPE_COMPRESSED_BIT1; | ||||
| 
 | ||||
| 	if (L_WARN_ON(len > 128)) | ||||
| 		return NULL; | ||||
| 
 | ||||
| @ -774,7 +786,7 @@ uint8_t *dpp_point_to_asn1(const struct l_ecc_point *p, size_t *len_out) | ||||
| 	*ptr++ = ASN1_ID_BIT_STRING; | ||||
| 	*ptr++ = key_size + 2; | ||||
| 	*ptr++ = 0x00; | ||||
| 	*ptr++ = 0x03; | ||||
| 	*ptr++ = point_type; | ||||
| 	memcpy(ptr, x, key_size); | ||||
| 	ptr += key_size; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 James Prestwood
						James Prestwood