Implement two-valued handle type

This commit is contained in:
Manuel Pégourié-Gonnard 2019-09-19 10:45:14 +02:00
parent 020d9ba4ed
commit f8b7c7f0ac
3 changed files with 20 additions and 0 deletions

View file

@ -126,9 +126,16 @@ typedef struct mbedtls_pk_debug_item
/** /**
* \brief Public key information and operations * \brief Public key information and operations
*/ */
#if defined(MBEDTLS_PK_SINGLE_TYPE)
typedef enum {
MBEDTLS_PK_INVALID_HANDLE,
MBEDTLS_PK_UNIQUE_VALID_HANDLE,
} mbedtls_pk_handle_t;
#else /* MBEDTLS_PK_SINGLE_TYPE */
typedef struct mbedtls_pk_info_t mbedtls_pk_info_t; typedef struct mbedtls_pk_info_t mbedtls_pk_info_t;
typedef const mbedtls_pk_info_t *mbedtls_pk_handle_t; typedef const mbedtls_pk_info_t *mbedtls_pk_handle_t;
#define MBEDTLS_PK_INVALID_HANDLE ( (mbedtls_pk_handle_t) NULL ) #define MBEDTLS_PK_INVALID_HANDLE ( (mbedtls_pk_handle_t) NULL )
#endif /* MBEDTLS_PK_SINGLE_TYPE */
/** /**
* \brief Public key container * \brief Public key container

View file

@ -242,6 +242,7 @@ typedef struct
} mbedtls_rsa_alt_context; } mbedtls_rsa_alt_context;
#endif #endif
#if !defined(MBEDTLS_PK_SINGLE_TYPE)
#if defined(MBEDTLS_RSA_C) #if defined(MBEDTLS_RSA_C)
extern const mbedtls_pk_info_t mbedtls_rsa_info; extern const mbedtls_pk_info_t mbedtls_rsa_info;
#endif #endif
@ -262,5 +263,6 @@ extern const mbedtls_pk_info_t mbedtls_uecc_eckey_info;
#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)
extern const mbedtls_pk_info_t mbedtls_rsa_alt_info; extern const mbedtls_pk_info_t mbedtls_rsa_alt_info;
#endif #endif
#endif /* MBEDTLS_PK_SINGLE_TYPE */
#endif /* MBEDTLS_PK_WRAP_H */ #endif /* MBEDTLS_PK_WRAP_H */

View file

@ -745,8 +745,10 @@ static void uecc_eckey_free_wrap( void *ctx )
mbedtls_free( ctx ); mbedtls_free( ctx );
} }
#if !defined(MBEDTLS_PK_SINGLE_TYPE)
const mbedtls_pk_info_t mbedtls_uecc_eckey_info = const mbedtls_pk_info_t mbedtls_uecc_eckey_info =
MBEDTLS_PK_INFO( MBEDTLS_PK_INFO_ECKEY ); MBEDTLS_PK_INFO( MBEDTLS_PK_INFO_ECKEY );
#endif
#endif /* MBEDTLS_USE_TINYCRYPT */ #endif /* MBEDTLS_USE_TINYCRYPT */
/* /*
@ -1349,6 +1351,14 @@ void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx )
*/ */
mbedtls_pk_handle_t mbedtls_pk_info_from_type( mbedtls_pk_type_t pk_type ) mbedtls_pk_handle_t mbedtls_pk_info_from_type( mbedtls_pk_type_t pk_type )
{ {
#if defined(MBEDTLS_PK_SINGLE_TYPE)
if( pk_type == MBEDTLS_PK_INFO_TYPE( MBEDTLS_PK_SINGLE_TYPE ) )
return( MBEDTLS_PK_UNIQUE_VALID_HANDLE );
return( MBEDTLS_PK_INVALID_HANDLE );
#else /* MBEDTLS_PK_SINGLE_TYPE */
switch( pk_type ) { switch( pk_type ) {
#if defined(MBEDTLS_RSA_C) #if defined(MBEDTLS_RSA_C)
case MBEDTLS_PK_RSA: case MBEDTLS_PK_RSA:
@ -1375,6 +1385,7 @@ mbedtls_pk_handle_t mbedtls_pk_info_from_type( mbedtls_pk_type_t pk_type )
default: default:
return( NULL ); return( NULL );
} }
#endif /* MBEDTLS_PK_SINGLE_TYPE */
} }
/* /*