mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-10-30 19:20:40 -04:00 
			
		
		
		
	conditionaly compile ECDH and ECDSA alt functions
Return the condition compilation flags surrounding `mbedtls_ecdh_compute_shared()`, `mbedtls_ecdh_gen_public()`, `mbedtls_ecdsa_sign()` and `mbedtls_ecdsa_verify()` that were accidentally removed in a previous merge. Resolves #2163
This commit is contained in:
		
							parent
							
								
									2b5be1e630
								
							
						
					
					
						commit
						8493f80e65
					
				| @ -110,7 +110,6 @@ cleanup: | |||||||
| 
 | 
 | ||||||
|     return( ret ); |     return( ret ); | ||||||
| } | } | ||||||
| #endif /* MBEDTLS_ECDH_COMPUTE_SHARED_ALT */ |  | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Compute shared secret (SEC1 3.3.1) |  * Compute shared secret (SEC1 3.3.1) | ||||||
| @ -123,6 +122,7 @@ int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, | |||||||
|     return( ecdh_compute_shared_restartable( grp, z, Q, d, |     return( ecdh_compute_shared_restartable( grp, z, Q, d, | ||||||
|                                              f_rng, p_rng, NULL ) ); |                                              f_rng, p_rng, NULL ) ); | ||||||
| } | } | ||||||
|  | #endif /* MBEDTLS_ECDH_COMPUTE_SHARED_ALT */ | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Initialize context |  * Initialize context | ||||||
| @ -201,9 +201,16 @@ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, | |||||||
|         rs_ctx = &ctx->rs; |         rs_ctx = &ctx->rs; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | #if defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT) | ||||||
|  |     if( ( ret = mbedtls_ecdh_gen_public( &ctx->grp, &ctx->d, &ctx->Q, | ||||||
|  |                                          f_rng, p_rng ) ) != 0 ) | ||||||
|  |         return( ret ); | ||||||
|  | #else | ||||||
|     if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, |     if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, | ||||||
|                                              f_rng, p_rng, rs_ctx ) ) != 0 ) |                                              f_rng, p_rng, rs_ctx ) ) != 0 ) | ||||||
|         return( ret ); |         return( ret ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|     if( ( ret = mbedtls_ecp_tls_write_group( &ctx->grp, &grp_len, buf, blen ) ) |     if( ( ret = mbedtls_ecp_tls_write_group( &ctx->grp, &grp_len, buf, blen ) ) | ||||||
|                 != 0 ) |                 != 0 ) | ||||||
| @ -287,9 +294,15 @@ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, | |||||||
|         rs_ctx = &ctx->rs; |         rs_ctx = &ctx->rs; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT) | ||||||
|  |     if( ( ret = mbedtls_ecdh_gen_public( &ctx->grp, &ctx->d, &ctx->Q, | ||||||
|  |                                          f_rng, p_rng ) ) != 0 ) | ||||||
|  |         return( ret ); | ||||||
|  | #else | ||||||
|     if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, |     if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, | ||||||
|                     f_rng, p_rng, rs_ctx ) ) != 0 ) |                     f_rng, p_rng, rs_ctx ) ) != 0 ) | ||||||
|         return( ret ); |         return( ret ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|     return mbedtls_ecp_tls_write_point( &ctx->grp, &ctx->Q, ctx->point_format, |     return mbedtls_ecp_tls_write_point( &ctx->grp, &ctx->Q, ctx->point_format, | ||||||
|                                 olen, buf, blen ); |                                 olen, buf, blen ); | ||||||
| @ -335,11 +348,19 @@ int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, | |||||||
|         rs_ctx = &ctx->rs; |         rs_ctx = &ctx->rs; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if defined(MBEDTLS_ECDH_COMPUTE_SHARED_ALT) | ||||||
|  |     if( ( ret = mbedtls_ecdh_compute_shared( &ctx->grp, &ctx->z, &ctx->Qp, | ||||||
|  |                                              &ctx->d, f_rng, p_rng ) ) != 0 ) | ||||||
|  |     { | ||||||
|  |         return( ret ); | ||||||
|  |     } | ||||||
|  | #else | ||||||
|     if( ( ret = ecdh_compute_shared_restartable( &ctx->grp, |     if( ( ret = ecdh_compute_shared_restartable( &ctx->grp, | ||||||
|                     &ctx->z, &ctx->Qp, &ctx->d, f_rng, p_rng, rs_ctx ) ) != 0 ) |                     &ctx->z, &ctx->Qp, &ctx->d, f_rng, p_rng, rs_ctx ) ) != 0 ) | ||||||
|     { |     { | ||||||
|         return( ret ); |         return( ret ); | ||||||
|     } |     } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|     if( mbedtls_mpi_size( &ctx->z ) > blen ) |     if( mbedtls_mpi_size( &ctx->z ) > blen ) | ||||||
|         return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); | ||||||
|  | |||||||
| @ -237,7 +237,6 @@ cleanup: | |||||||
|     return( ret ); |     return( ret ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #if !defined(MBEDTLS_ECDSA_SIGN_ALT) |  | ||||||
| /*
 | /*
 | ||||||
|  * Compute ECDSA signature of a hashed message (SEC1 4.1.3) |  * Compute ECDSA signature of a hashed message (SEC1 4.1.3) | ||||||
|  * Obviously, compared to SEC1 4.1.3, we skip step 4 (hash message) |  * Obviously, compared to SEC1 4.1.3, we skip step 4 (hash message) | ||||||
| @ -369,8 +368,8 @@ cleanup: | |||||||
| 
 | 
 | ||||||
|     return( ret ); |     return( ret ); | ||||||
| } | } | ||||||
| #endif /* MBEDTLS_ECDSA_SIGN_ALT */ |  | ||||||
| 
 | 
 | ||||||
|  | #if !defined(MBEDTLS_ECDSA_SIGN_ALT) | ||||||
| /*
 | /*
 | ||||||
|  * Compute ECDSA signature of a hashed message |  * Compute ECDSA signature of a hashed message | ||||||
|  */ |  */ | ||||||
| @ -381,6 +380,7 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, | |||||||
|     return( ecdsa_sign_restartable( grp, r, s, d, buf, blen, |     return( ecdsa_sign_restartable( grp, r, s, d, buf, blen, | ||||||
|                                     f_rng, p_rng, NULL ) ); |                                     f_rng, p_rng, NULL ) ); | ||||||
| } | } | ||||||
|  | #endif /* MBEDTLS_ECDSA_SIGN_ALT */ | ||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_ECDSA_DETERMINISTIC) | #if defined(MBEDTLS_ECDSA_DETERMINISTIC) | ||||||
| /*
 | /*
 | ||||||
| @ -432,8 +432,13 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, | |||||||
| 
 | 
 | ||||||
| sign: | sign: | ||||||
| #endif | #endif | ||||||
|  | #if defined(MBEDTLS_ECDSA_SIGN_ALT) | ||||||
|  |     ret = mbedtls_ecdsa_sign( grp, r, s, d, buf, blen, | ||||||
|  |                               mbedtls_hmac_drbg_random, p_rng ); | ||||||
|  | #else | ||||||
|     ret = ecdsa_sign_restartable( grp, r, s, d, buf, blen, |     ret = ecdsa_sign_restartable( grp, r, s, d, buf, blen, | ||||||
|                       mbedtls_hmac_drbg_random, p_rng, rs_ctx ); |                       mbedtls_hmac_drbg_random, p_rng, rs_ctx ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| cleanup: | cleanup: | ||||||
|     mbedtls_hmac_drbg_free( &rng_ctx ); |     mbedtls_hmac_drbg_free( &rng_ctx ); | ||||||
| @ -455,7 +460,6 @@ int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi | |||||||
| } | } | ||||||
| #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ | #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ | ||||||
| 
 | 
 | ||||||
| #if !defined(MBEDTLS_ECDSA_VERIFY_ALT) |  | ||||||
| /*
 | /*
 | ||||||
|  * Verify ECDSA signature of hashed message (SEC1 4.1.4) |  * Verify ECDSA signature of hashed message (SEC1 4.1.4) | ||||||
|  * Obviously, compared to SEC1 4.1.3, we skip step 2 (hash message) |  * Obviously, compared to SEC1 4.1.3, we skip step 2 (hash message) | ||||||
| @ -564,8 +568,8 @@ cleanup: | |||||||
| 
 | 
 | ||||||
|     return( ret ); |     return( ret ); | ||||||
| } | } | ||||||
| #endif /* MBEDTLS_ECDSA_VERIFY_ALT */ |  | ||||||
| 
 | 
 | ||||||
|  | #if !defined(MBEDTLS_ECDSA_VERIFY_ALT) | ||||||
| /*
 | /*
 | ||||||
|  * Verify ECDSA signature of hashed message |  * Verify ECDSA signature of hashed message | ||||||
|  */ |  */ | ||||||
| @ -575,6 +579,7 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, | |||||||
| { | { | ||||||
|     return( ecdsa_verify_restartable( grp, buf, blen, Q, r, s, NULL ) ); |     return( ecdsa_verify_restartable( grp, buf, blen, Q, r, s, NULL ) ); | ||||||
| } | } | ||||||
|  | #endif /* MBEDTLS_ECDSA_VERIFY_ALT */ | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Convert a signature (given by context) to ASN.1 |  * Convert a signature (given by context) to ASN.1 | ||||||
| @ -626,8 +631,13 @@ int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx, | |||||||
| #else | #else | ||||||
|     (void) md_alg; |     (void) md_alg; | ||||||
| 
 | 
 | ||||||
|  | #if defined(MBEDTLS_ECDSA_SIGN_ALT) | ||||||
|  |     MBEDTLS_MPI_CHK( mbedtls_ecdsa_sign( &ctx->grp, &r, &s, &ctx->d, | ||||||
|  |                          hash, hlen, f_rng, p_rng ) ); | ||||||
|  | #else | ||||||
|     MBEDTLS_MPI_CHK( ecdsa_sign_restartable( &ctx->grp, &r, &s, &ctx->d, |     MBEDTLS_MPI_CHK( ecdsa_sign_restartable( &ctx->grp, &r, &s, &ctx->d, | ||||||
|                          hash, hlen, f_rng, p_rng, rs_ctx ) ); |                          hash, hlen, f_rng, p_rng, rs_ctx ) ); | ||||||
|  | #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|     MBEDTLS_MPI_CHK( ecdsa_signature_to_asn1( &r, &s, sig, slen ) ); |     MBEDTLS_MPI_CHK( ecdsa_signature_to_asn1( &r, &s, sig, slen ) ); | ||||||
| @ -712,10 +722,15 @@ int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, | |||||||
|         ret += MBEDTLS_ERR_ECP_BAD_INPUT_DATA; |         ret += MBEDTLS_ERR_ECP_BAD_INPUT_DATA; | ||||||
|         goto cleanup; |         goto cleanup; | ||||||
|     } |     } | ||||||
| 
 | #if defined(MBEDTLS_ECDSA_VERIFY_ALT) | ||||||
|  |     if( ( ret = mbedtls_ecdsa_verify( &ctx->grp, hash, hlen, | ||||||
|  |                                       &ctx->Q, &r, &s ) ) != 0 ) | ||||||
|  |         goto cleanup; | ||||||
|  | #else | ||||||
|     if( ( ret = ecdsa_verify_restartable( &ctx->grp, hash, hlen, |     if( ( ret = ecdsa_verify_restartable( &ctx->grp, hash, hlen, | ||||||
|                               &ctx->Q, &r, &s, rs_ctx ) ) != 0 ) |                               &ctx->Q, &r, &s, rs_ctx ) ) != 0 ) | ||||||
|         goto cleanup; |         goto cleanup; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|     /* At this point we know that the buffer starts with a valid signature.
 |     /* At this point we know that the buffer starts with a valid signature.
 | ||||||
|      * Return 0 if the buffer just contains the signature, and a specific |      * Return 0 if the buffer just contains the signature, and a specific | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Ron Eldor
						Ron Eldor