mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-04 04:32:24 -05:00 
			
		
		
		
	Rename rsa_internal.* to rsa_alt_helpers.*
Rename both `rsa_internal.h` and `rsa_internal.c` to more descriptive names: `rsa_alt_helpers.h` and `rsa_alt_helpers.c`. Also re-orders `rsa_internal.c` to match the order in `rsa_internal.h` Signed-off-by: Chris Jones <christopher.jones@arm.com>
This commit is contained in:
		
							parent
							
								
									84a773f8e6
								
							
						
					
					
						commit
						66a4cd46fd
					
				@ -1955,7 +1955,7 @@
 | 
			
		||||
 *          library/ecp.c
 | 
			
		||||
 *          library/ecdsa.c
 | 
			
		||||
 *          library/rsa.c
 | 
			
		||||
 *          library/rsa_internal.c
 | 
			
		||||
 *          library/rsa_alt_helpers.h
 | 
			
		||||
 *          library/ssl_tls.c
 | 
			
		||||
 *
 | 
			
		||||
 * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.
 | 
			
		||||
@ -2722,7 +2722,7 @@
 | 
			
		||||
 * Enable the RSA public-key cryptosystem.
 | 
			
		||||
 *
 | 
			
		||||
 * Module:  library/rsa.c
 | 
			
		||||
 *          library/rsa_internal.c
 | 
			
		||||
 *          library/rsa_alt_helpers.h
 | 
			
		||||
 * Caller:  library/ssl_cli.c
 | 
			
		||||
 *          library/ssl_srv.c
 | 
			
		||||
 *          library/ssl_tls.c
 | 
			
		||||
 | 
			
		||||
@ -2400,7 +2400,7 @@
 | 
			
		||||
 *          library/ecp.c
 | 
			
		||||
 *          library/ecdsa.c
 | 
			
		||||
 *          library/rsa.c
 | 
			
		||||
 *          library/rsa_internal.c
 | 
			
		||||
 *          library/rsa_alt_helpers.h
 | 
			
		||||
 *          library/ssl_tls.c
 | 
			
		||||
 *
 | 
			
		||||
 * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.
 | 
			
		||||
@ -3198,7 +3198,7 @@
 | 
			
		||||
 * Enable the RSA public-key cryptosystem.
 | 
			
		||||
 *
 | 
			
		||||
 * Module:  library/rsa.c
 | 
			
		||||
 *          library/rsa_internal.c
 | 
			
		||||
 *          library/rsa_alt_helpers.h
 | 
			
		||||
 * Caller:  library/ssl_cli.c
 | 
			
		||||
 *          library/ssl_srv.c
 | 
			
		||||
 *          library/ssl_tls.c
 | 
			
		||||
 | 
			
		||||
@ -67,7 +67,7 @@ set(src_crypto
 | 
			
		||||
    psa_its_file.c
 | 
			
		||||
    ripemd160.c
 | 
			
		||||
    rsa.c
 | 
			
		||||
    rsa_internal.c
 | 
			
		||||
    rsa_alt_helpers.c
 | 
			
		||||
    sha1.c
 | 
			
		||||
    sha256.c
 | 
			
		||||
    sha512.c
 | 
			
		||||
 | 
			
		||||
@ -124,7 +124,7 @@ OBJS_CRYPTO= \
 | 
			
		||||
	     psa_its_file.o \
 | 
			
		||||
	     ripemd160.o \
 | 
			
		||||
	     rsa.o \
 | 
			
		||||
	     rsa_internal.o \
 | 
			
		||||
	     rsa_alt_helpers.o \
 | 
			
		||||
	     sha1.o \
 | 
			
		||||
	     sha256.o \
 | 
			
		||||
	     sha512.o \
 | 
			
		||||
 | 
			
		||||
@ -40,7 +40,7 @@
 | 
			
		||||
#if defined(MBEDTLS_RSA_C)
 | 
			
		||||
 | 
			
		||||
#include "mbedtls/rsa.h"
 | 
			
		||||
#include "rsa_internal.h"
 | 
			
		||||
#include "rsa_alt_helpers.h"
 | 
			
		||||
#include "mbedtls/oid.h"
 | 
			
		||||
#include "mbedtls/platform_util.h"
 | 
			
		||||
#include "mbedtls/error.h"
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
#include "mbedtls/rsa.h"
 | 
			
		||||
#include "mbedtls/bignum.h"
 | 
			
		||||
#include "rsa_internal.h"
 | 
			
		||||
#include "rsa_alt_helpers.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Compute RSA prime factors from public and private exponents
 | 
			
		||||
@ -237,90 +237,36 @@ cleanup:
 | 
			
		||||
    return( ret );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Check that RSA CRT parameters are in accordance with core parameters.
 | 
			
		||||
 */
 | 
			
		||||
int mbedtls_rsa_validate_crt( const mbedtls_mpi *P,  const mbedtls_mpi *Q,
 | 
			
		||||
                              const mbedtls_mpi *D,  const mbedtls_mpi *DP,
 | 
			
		||||
                              const mbedtls_mpi *DQ, const mbedtls_mpi *QP )
 | 
			
		||||
int mbedtls_rsa_deduce_crt( const mbedtls_mpi *P, const mbedtls_mpi *Q,
 | 
			
		||||
                            const mbedtls_mpi *D, mbedtls_mpi *DP,
 | 
			
		||||
                            mbedtls_mpi *DQ, mbedtls_mpi *QP )
 | 
			
		||||
{
 | 
			
		||||
    int ret = 0;
 | 
			
		||||
 | 
			
		||||
    mbedtls_mpi K, L;
 | 
			
		||||
    mbedtls_mpi K;
 | 
			
		||||
    mbedtls_mpi_init( &K );
 | 
			
		||||
    mbedtls_mpi_init( &L );
 | 
			
		||||
 | 
			
		||||
    /* Check that DP - D == 0 mod P - 1 */
 | 
			
		||||
    /* DP = D mod P-1 */
 | 
			
		||||
    if( DP != NULL )
 | 
			
		||||
    {
 | 
			
		||||
        if( P == NULL )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, P, 1 ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &L, DP, D ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &L, &L, &K ) );
 | 
			
		||||
 | 
			
		||||
        if( mbedtls_mpi_cmp_int( &L, 0 ) != 0 )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, P, 1  ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DP, D, &K ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Check that DQ - D == 0 mod Q - 1 */
 | 
			
		||||
    /* DQ = D mod Q-1 */
 | 
			
		||||
    if( DQ != NULL )
 | 
			
		||||
    {
 | 
			
		||||
        if( Q == NULL )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, Q, 1 ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &L, DQ, D ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &L, &L, &K ) );
 | 
			
		||||
 | 
			
		||||
        if( mbedtls_mpi_cmp_int( &L, 0 ) != 0 )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, Q, 1  ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DQ, D, &K ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Check that QP * Q - 1 == 0 mod P */
 | 
			
		||||
    /* QP = Q^{-1} mod P */
 | 
			
		||||
    if( QP != NULL )
 | 
			
		||||
    {
 | 
			
		||||
        if( P == NULL || Q == NULL )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &K, QP, Q ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, &K, 1 ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &K, &K, P ) );
 | 
			
		||||
        if( mbedtls_mpi_cmp_int( &K, 0 ) != 0 )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( QP, Q, P ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
cleanup:
 | 
			
		||||
 | 
			
		||||
    /* Wrap MPI error codes by RSA check failure error code */
 | 
			
		||||
    if( ret != 0 &&
 | 
			
		||||
        ret != MBEDTLS_ERR_RSA_KEY_CHECK_FAILED &&
 | 
			
		||||
        ret != MBEDTLS_ERR_RSA_BAD_INPUT_DATA )
 | 
			
		||||
    {
 | 
			
		||||
        ret += MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    mbedtls_mpi_free( &K );
 | 
			
		||||
    mbedtls_mpi_free( &L );
 | 
			
		||||
 | 
			
		||||
    return( ret );
 | 
			
		||||
}
 | 
			
		||||
@ -449,36 +395,90 @@ cleanup:
 | 
			
		||||
    return( ret );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int mbedtls_rsa_deduce_crt( const mbedtls_mpi *P, const mbedtls_mpi *Q,
 | 
			
		||||
                            const mbedtls_mpi *D, mbedtls_mpi *DP,
 | 
			
		||||
                            mbedtls_mpi *DQ, mbedtls_mpi *QP )
 | 
			
		||||
/*
 | 
			
		||||
 * Check that RSA CRT parameters are in accordance with core parameters.
 | 
			
		||||
 */
 | 
			
		||||
int mbedtls_rsa_validate_crt( const mbedtls_mpi *P,  const mbedtls_mpi *Q,
 | 
			
		||||
                              const mbedtls_mpi *D,  const mbedtls_mpi *DP,
 | 
			
		||||
                              const mbedtls_mpi *DQ, const mbedtls_mpi *QP )
 | 
			
		||||
{
 | 
			
		||||
    int ret = 0;
 | 
			
		||||
    mbedtls_mpi K;
 | 
			
		||||
    mbedtls_mpi_init( &K );
 | 
			
		||||
 | 
			
		||||
    /* DP = D mod P-1 */
 | 
			
		||||
    mbedtls_mpi K, L;
 | 
			
		||||
    mbedtls_mpi_init( &K );
 | 
			
		||||
    mbedtls_mpi_init( &L );
 | 
			
		||||
 | 
			
		||||
    /* Check that DP - D == 0 mod P - 1 */
 | 
			
		||||
    if( DP != NULL )
 | 
			
		||||
    {
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, P, 1  ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DP, D, &K ) );
 | 
			
		||||
        if( P == NULL )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, P, 1 ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &L, DP, D ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &L, &L, &K ) );
 | 
			
		||||
 | 
			
		||||
        if( mbedtls_mpi_cmp_int( &L, 0 ) != 0 )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* DQ = D mod Q-1 */
 | 
			
		||||
    /* Check that DQ - D == 0 mod Q - 1 */
 | 
			
		||||
    if( DQ != NULL )
 | 
			
		||||
    {
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, Q, 1  ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DQ, D, &K ) );
 | 
			
		||||
        if( Q == NULL )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, Q, 1 ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &L, DQ, D ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &L, &L, &K ) );
 | 
			
		||||
 | 
			
		||||
        if( mbedtls_mpi_cmp_int( &L, 0 ) != 0 )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* QP = Q^{-1} mod P */
 | 
			
		||||
    /* Check that QP * Q - 1 == 0 mod P */
 | 
			
		||||
    if( QP != NULL )
 | 
			
		||||
    {
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( QP, Q, P ) );
 | 
			
		||||
        if( P == NULL || Q == NULL )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &K, QP, Q ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, &K, 1 ) );
 | 
			
		||||
        MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &K, &K, P ) );
 | 
			
		||||
        if( mbedtls_mpi_cmp_int( &K, 0 ) != 0 )
 | 
			
		||||
        {
 | 
			
		||||
            ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
cleanup:
 | 
			
		||||
 | 
			
		||||
    /* Wrap MPI error codes by RSA check failure error code */
 | 
			
		||||
    if( ret != 0 &&
 | 
			
		||||
        ret != MBEDTLS_ERR_RSA_KEY_CHECK_FAILED &&
 | 
			
		||||
        ret != MBEDTLS_ERR_RSA_BAD_INPUT_DATA )
 | 
			
		||||
    {
 | 
			
		||||
        ret += MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    mbedtls_mpi_free( &K );
 | 
			
		||||
    mbedtls_mpi_free( &L );
 | 
			
		||||
 | 
			
		||||
    return( ret );
 | 
			
		||||
}
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/**
 | 
			
		||||
 * \file rsa_internal.h
 | 
			
		||||
 * \file rsa_alt_helpers.h
 | 
			
		||||
 *
 | 
			
		||||
 * \brief Context-independent RSA helper functions
 | 
			
		||||
 *
 | 
			
		||||
@ -221,4 +221,4 @@ int mbedtls_rsa_validate_crt( const mbedtls_mpi *P,  const mbedtls_mpi *Q,
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* rsa_internal.h */
 | 
			
		||||
#endif /* rsa_alt_helpers.h */
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
/* BEGIN_HEADER */
 | 
			
		||||
#include "mbedtls/rsa.h"
 | 
			
		||||
#include "rsa_internal.h"
 | 
			
		||||
#include "rsa_alt_helpers.h"
 | 
			
		||||
#include "mbedtls/md2.h"
 | 
			
		||||
#include "mbedtls/md4.h"
 | 
			
		||||
#include "mbedtls/md5.h"
 | 
			
		||||
 | 
			
		||||
@ -250,7 +250,7 @@
 | 
			
		||||
    <ClInclude Include="..\..\library\psa_crypto_service_integration.h" />
 | 
			
		||||
    <ClInclude Include="..\..\library\psa_crypto_slot_management.h" />
 | 
			
		||||
    <ClInclude Include="..\..\library\psa_crypto_storage.h" />
 | 
			
		||||
    <ClInclude Include="..\..\library\rsa_internal.h" />
 | 
			
		||||
    <ClInclude Include="..\..\library\rsa_alt_helpers.h" />
 | 
			
		||||
    <ClInclude Include="..\..\library\ssl_invasive.h" />
 | 
			
		||||
    <ClInclude Include="..\..\library\ssl_misc.h" />
 | 
			
		||||
    <ClInclude Include="..\..\library\ssl_tls13_keys.h" />
 | 
			
		||||
@ -320,7 +320,7 @@
 | 
			
		||||
    <ClCompile Include="..\..\library\psa_its_file.c" />
 | 
			
		||||
    <ClCompile Include="..\..\library\ripemd160.c" />
 | 
			
		||||
    <ClCompile Include="..\..\library\rsa.c" />
 | 
			
		||||
    <ClCompile Include="..\..\library\rsa_internal.c" />
 | 
			
		||||
    <ClCompile Include="..\..\library\rsa_alt_helpers.c" />
 | 
			
		||||
    <ClCompile Include="..\..\library\sha1.c" />
 | 
			
		||||
    <ClCompile Include="..\..\library\sha256.c" />
 | 
			
		||||
    <ClCompile Include="..\..\library\sha512.c" />
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user