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:
Chris Jones 2021-03-09 16:04:12 +00:00
parent 84a773f8e6
commit 66a4cd46fd
9 changed files with 92 additions and 92 deletions

View File

@ -1955,7 +1955,7 @@
* library/ecp.c * library/ecp.c
* library/ecdsa.c * library/ecdsa.c
* library/rsa.c * library/rsa.c
* library/rsa_internal.c * library/rsa_alt_helpers.h
* library/ssl_tls.c * library/ssl_tls.c
* *
* This module is required for RSA, DHM and ECC (ECDH, ECDSA) support. * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.
@ -2722,7 +2722,7 @@
* Enable the RSA public-key cryptosystem. * Enable the RSA public-key cryptosystem.
* *
* Module: library/rsa.c * Module: library/rsa.c
* library/rsa_internal.c * library/rsa_alt_helpers.h
* Caller: library/ssl_cli.c * Caller: library/ssl_cli.c
* library/ssl_srv.c * library/ssl_srv.c
* library/ssl_tls.c * library/ssl_tls.c

View File

@ -2400,7 +2400,7 @@
* library/ecp.c * library/ecp.c
* library/ecdsa.c * library/ecdsa.c
* library/rsa.c * library/rsa.c
* library/rsa_internal.c * library/rsa_alt_helpers.h
* library/ssl_tls.c * library/ssl_tls.c
* *
* This module is required for RSA, DHM and ECC (ECDH, ECDSA) support. * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.
@ -3198,7 +3198,7 @@
* Enable the RSA public-key cryptosystem. * Enable the RSA public-key cryptosystem.
* *
* Module: library/rsa.c * Module: library/rsa.c
* library/rsa_internal.c * library/rsa_alt_helpers.h
* Caller: library/ssl_cli.c * Caller: library/ssl_cli.c
* library/ssl_srv.c * library/ssl_srv.c
* library/ssl_tls.c * library/ssl_tls.c

View File

@ -67,7 +67,7 @@ set(src_crypto
psa_its_file.c psa_its_file.c
ripemd160.c ripemd160.c
rsa.c rsa.c
rsa_internal.c rsa_alt_helpers.c
sha1.c sha1.c
sha256.c sha256.c
sha512.c sha512.c

View File

@ -124,7 +124,7 @@ OBJS_CRYPTO= \
psa_its_file.o \ psa_its_file.o \
ripemd160.o \ ripemd160.o \
rsa.o \ rsa.o \
rsa_internal.o \ rsa_alt_helpers.o \
sha1.o \ sha1.o \
sha256.o \ sha256.o \
sha512.o \ sha512.o \

View File

@ -40,7 +40,7 @@
#if defined(MBEDTLS_RSA_C) #if defined(MBEDTLS_RSA_C)
#include "mbedtls/rsa.h" #include "mbedtls/rsa.h"
#include "rsa_internal.h" #include "rsa_alt_helpers.h"
#include "mbedtls/oid.h" #include "mbedtls/oid.h"
#include "mbedtls/platform_util.h" #include "mbedtls/platform_util.h"
#include "mbedtls/error.h" #include "mbedtls/error.h"

View File

@ -24,7 +24,7 @@
#include "mbedtls/rsa.h" #include "mbedtls/rsa.h"
#include "mbedtls/bignum.h" #include "mbedtls/bignum.h"
#include "rsa_internal.h" #include "rsa_alt_helpers.h"
/* /*
* Compute RSA prime factors from public and private exponents * Compute RSA prime factors from public and private exponents
@ -237,90 +237,36 @@ cleanup:
return( ret ); return( ret );
} }
/* int mbedtls_rsa_deduce_crt( const mbedtls_mpi *P, const mbedtls_mpi *Q,
* Check that RSA CRT parameters are in accordance with core parameters. const mbedtls_mpi *D, mbedtls_mpi *DP,
*/ mbedtls_mpi *DQ, mbedtls_mpi *QP )
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; int ret = 0;
mbedtls_mpi K;
mbedtls_mpi K, L;
mbedtls_mpi_init( &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( DP != NULL )
{ {
if( P == NULL ) MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, P, 1 ) );
{ MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DP, D, &K ) );
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;
}
} }
/* Check that DQ - D == 0 mod Q - 1 */ /* DQ = D mod Q-1 */
if( DQ != NULL ) if( DQ != NULL )
{ {
if( Q == NULL ) MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, Q, 1 ) );
{ MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DQ, D, &K ) );
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;
}
} }
/* Check that QP * Q - 1 == 0 mod P */ /* QP = Q^{-1} mod P */
if( QP != NULL ) if( QP != NULL )
{ {
if( P == NULL || Q == NULL ) MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( QP, Q, P ) );
{
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: 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( &K );
mbedtls_mpi_free( &L );
return( ret ); return( ret );
} }
@ -449,36 +395,90 @@ cleanup:
return( ret ); return( ret );
} }
int mbedtls_rsa_deduce_crt( const mbedtls_mpi *P, const mbedtls_mpi *Q, /*
const mbedtls_mpi *D, mbedtls_mpi *DP, * Check that RSA CRT parameters are in accordance with core parameters.
mbedtls_mpi *DQ, mbedtls_mpi *QP ) */
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; 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 ) if( DP != NULL )
{ {
MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, P, 1 ) ); if( P == NULL )
MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DP, D, &K ) ); {
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 ) if( DQ != NULL )
{ {
MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &K, Q, 1 ) ); if( Q == NULL )
MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( DQ, D, &K ) ); {
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 ) 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: 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( &K );
mbedtls_mpi_free( &L );
return( ret ); return( ret );
} }

View File

@ -1,5 +1,5 @@
/** /**
* \file rsa_internal.h * \file rsa_alt_helpers.h
* *
* \brief Context-independent RSA helper functions * \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
#endif /* rsa_internal.h */ #endif /* rsa_alt_helpers.h */

View File

@ -1,6 +1,6 @@
/* BEGIN_HEADER */ /* BEGIN_HEADER */
#include "mbedtls/rsa.h" #include "mbedtls/rsa.h"
#include "rsa_internal.h" #include "rsa_alt_helpers.h"
#include "mbedtls/md2.h" #include "mbedtls/md2.h"
#include "mbedtls/md4.h" #include "mbedtls/md4.h"
#include "mbedtls/md5.h" #include "mbedtls/md5.h"

View File

@ -250,7 +250,7 @@
<ClInclude Include="..\..\library\psa_crypto_service_integration.h" /> <ClInclude Include="..\..\library\psa_crypto_service_integration.h" />
<ClInclude Include="..\..\library\psa_crypto_slot_management.h" /> <ClInclude Include="..\..\library\psa_crypto_slot_management.h" />
<ClInclude Include="..\..\library\psa_crypto_storage.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_invasive.h" />
<ClInclude Include="..\..\library\ssl_misc.h" /> <ClInclude Include="..\..\library\ssl_misc.h" />
<ClInclude Include="..\..\library\ssl_tls13_keys.h" /> <ClInclude Include="..\..\library\ssl_tls13_keys.h" />
@ -320,7 +320,7 @@
<ClCompile Include="..\..\library\psa_its_file.c" /> <ClCompile Include="..\..\library\psa_its_file.c" />
<ClCompile Include="..\..\library\ripemd160.c" /> <ClCompile Include="..\..\library\ripemd160.c" />
<ClCompile Include="..\..\library\rsa.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\sha1.c" />
<ClCompile Include="..\..\library\sha256.c" /> <ClCompile Include="..\..\library\sha256.c" />
<ClCompile Include="..\..\library\sha512.c" /> <ClCompile Include="..\..\library\sha512.c" />