mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-26 18:45:43 +01:00
Merge remote-tracking branch 'public/pr/2077' into development-restricted-proposed
This commit is contained in:
commit
93a9b497e0
@ -1295,6 +1295,7 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk,
|
|||||||
return( 0 );
|
return( 0 );
|
||||||
|
|
||||||
mbedtls_pk_free( pk );
|
mbedtls_pk_free( pk );
|
||||||
|
mbedtls_pk_init( pk );
|
||||||
|
|
||||||
if( ret == MBEDTLS_ERR_PK_PASSWORD_MISMATCH )
|
if( ret == MBEDTLS_ERR_PK_PASSWORD_MISMATCH )
|
||||||
{
|
{
|
||||||
@ -1306,39 +1307,42 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk,
|
|||||||
return( 0 );
|
return( 0 );
|
||||||
|
|
||||||
mbedtls_pk_free( pk );
|
mbedtls_pk_free( pk );
|
||||||
|
mbedtls_pk_init( pk );
|
||||||
|
|
||||||
#if defined(MBEDTLS_RSA_C)
|
#if defined(MBEDTLS_RSA_C)
|
||||||
|
|
||||||
pk_info = mbedtls_pk_info_from_type( MBEDTLS_PK_RSA );
|
pk_info = mbedtls_pk_info_from_type( MBEDTLS_PK_RSA );
|
||||||
if( ( ret = mbedtls_pk_setup( pk, pk_info ) ) != 0 ||
|
if( mbedtls_pk_setup( pk, pk_info ) == 0 &&
|
||||||
( ret = pk_parse_key_pkcs1_der( mbedtls_pk_rsa( *pk ),
|
pk_parse_key_pkcs1_der( mbedtls_pk_rsa( *pk ), key, keylen ) == 0 )
|
||||||
key, keylen ) ) != 0 )
|
|
||||||
{
|
|
||||||
mbedtls_pk_free( pk );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mbedtls_pk_free( pk );
|
||||||
|
mbedtls_pk_init( pk );
|
||||||
#endif /* MBEDTLS_RSA_C */
|
#endif /* MBEDTLS_RSA_C */
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECP_C)
|
#if defined(MBEDTLS_ECP_C)
|
||||||
|
|
||||||
pk_info = mbedtls_pk_info_from_type( MBEDTLS_PK_ECKEY );
|
pk_info = mbedtls_pk_info_from_type( MBEDTLS_PK_ECKEY );
|
||||||
if( ( ret = mbedtls_pk_setup( pk, pk_info ) ) != 0 ||
|
if( mbedtls_pk_setup( pk, pk_info ) == 0 &&
|
||||||
( ret = pk_parse_key_sec1_der( mbedtls_pk_ec( *pk ),
|
pk_parse_key_sec1_der( mbedtls_pk_ec( *pk ),
|
||||||
key, keylen ) ) != 0 )
|
key, keylen ) == 0 )
|
||||||
{
|
|
||||||
mbedtls_pk_free( pk );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
mbedtls_pk_free( pk );
|
||||||
#endif /* MBEDTLS_ECP_C */
|
#endif /* MBEDTLS_ECP_C */
|
||||||
|
|
||||||
|
/* If MBEDTLS_RSA_C is defined but MBEDTLS_ECP_C isn't,
|
||||||
|
* it is ok to leave the PK context initialized but not
|
||||||
|
* freed: It is the caller's responsibility to call pk_init()
|
||||||
|
* before calling this function, and to call pk_free()
|
||||||
|
* when it fails. If MBEDTLS_ECP_C is defined but MBEDTLS_RSA_C
|
||||||
|
* isn't, this leads to mbedtls_pk_free() being called
|
||||||
|
* twice, once here and once by the caller, but this is
|
||||||
|
* also ok and in line with the mbedtls_pk_free() calls
|
||||||
|
* on failed PEM parsing attempts. */
|
||||||
|
|
||||||
return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT );
|
return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user