mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-25 19:45:44 +01:00
Add parameter validation XTS setkey functions
This commit is contained in:
parent
af0c6cb9e0
commit
68e3dff3f1
@ -197,8 +197,10 @@ int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key,
|
|||||||
* sets the encryption key.
|
* sets the encryption key.
|
||||||
*
|
*
|
||||||
* \param ctx The AES XTS context to which the key should be bound.
|
* \param ctx The AES XTS context to which the key should be bound.
|
||||||
|
* It must be initialized.
|
||||||
* \param key The encryption key. This is comprised of the XTS key1
|
* \param key The encryption key. This is comprised of the XTS key1
|
||||||
* concatenated with the XTS key2.
|
* concatenated with the XTS key2.
|
||||||
|
* This must be a readable buffer of size \p keybits bits.
|
||||||
* \param keybits The size of \p key passed in bits. Valid options are:
|
* \param keybits The size of \p key passed in bits. Valid options are:
|
||||||
* <ul><li>256 bits (each of key1 and key2 is a 128-bit key)</li>
|
* <ul><li>256 bits (each of key1 and key2 is a 128-bit key)</li>
|
||||||
* <li>512 bits (each of key1 and key2 is a 256-bit key)</li></ul>
|
* <li>512 bits (each of key1 and key2 is a 256-bit key)</li></ul>
|
||||||
@ -215,8 +217,10 @@ int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx,
|
|||||||
* sets the decryption key.
|
* sets the decryption key.
|
||||||
*
|
*
|
||||||
* \param ctx The AES XTS context to which the key should be bound.
|
* \param ctx The AES XTS context to which the key should be bound.
|
||||||
|
* It must be initialized.
|
||||||
* \param key The decryption key. This is comprised of the XTS key1
|
* \param key The decryption key. This is comprised of the XTS key1
|
||||||
* concatenated with the XTS key2.
|
* concatenated with the XTS key2.
|
||||||
|
* This must be a readable buffer of size \p keybits bits.
|
||||||
* \param keybits The size of \p key passed in bits. Valid options are:
|
* \param keybits The size of \p key passed in bits. Valid options are:
|
||||||
* <ul><li>256 bits (each of key1 and key2 is a 128-bit key)</li>
|
* <ul><li>256 bits (each of key1 and key2 is a 128-bit key)</li>
|
||||||
* <li>512 bits (each of key1 and key2 is a 256-bit key)</li></ul>
|
* <li>512 bits (each of key1 and key2 is a 256-bit key)</li></ul>
|
||||||
|
@ -771,6 +771,9 @@ int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx,
|
|||||||
const unsigned char *key1, *key2;
|
const unsigned char *key1, *key2;
|
||||||
unsigned int key1bits, key2bits;
|
unsigned int key1bits, key2bits;
|
||||||
|
|
||||||
|
AES_VALIDATE_RET( ctx != NULL );
|
||||||
|
AES_VALIDATE_RET( key != NULL );
|
||||||
|
|
||||||
ret = mbedtls_aes_xts_decode_keys( key, keybits, &key1, &key1bits,
|
ret = mbedtls_aes_xts_decode_keys( key, keybits, &key1, &key1bits,
|
||||||
&key2, &key2bits );
|
&key2, &key2bits );
|
||||||
if( ret != 0 )
|
if( ret != 0 )
|
||||||
@ -793,6 +796,9 @@ int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx,
|
|||||||
const unsigned char *key1, *key2;
|
const unsigned char *key1, *key2;
|
||||||
unsigned int key1bits, key2bits;
|
unsigned int key1bits, key2bits;
|
||||||
|
|
||||||
|
AES_VALIDATE_RET( ctx != NULL );
|
||||||
|
AES_VALIDATE_RET( key != NULL );
|
||||||
|
|
||||||
ret = mbedtls_aes_xts_decode_keys( key, keybits, &key1, &key1bits,
|
ret = mbedtls_aes_xts_decode_keys( key, keybits, &key1, &key1bits,
|
||||||
&key2, &key2bits );
|
&key2, &key2bits );
|
||||||
if( ret != 0 )
|
if( ret != 0 )
|
||||||
|
@ -215,7 +215,7 @@ void aes_crypt_xts_size( int size, int retval )
|
|||||||
void aes_crypt_xts_keysize( int size, int retval )
|
void aes_crypt_xts_keysize( int size, int retval )
|
||||||
{
|
{
|
||||||
mbedtls_aes_xts_context ctx;
|
mbedtls_aes_xts_context ctx;
|
||||||
const unsigned char *key = NULL;
|
const unsigned char key[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
|
||||||
size_t key_len = size;
|
size_t key_len = size;
|
||||||
|
|
||||||
mbedtls_aes_xts_init( &ctx );
|
mbedtls_aes_xts_init( &ctx );
|
||||||
@ -374,26 +374,38 @@ exit:
|
|||||||
/* BEGIN_CASE depends_on:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
|
/* BEGIN_CASE depends_on:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
|
||||||
void aes_invalid_param( )
|
void aes_invalid_param( )
|
||||||
{
|
{
|
||||||
mbedtls_aes_context dummy_ctx;
|
mbedtls_aes_context aes_ctx;
|
||||||
|
#if defined(MBEDTLS_CIPHER_MODE_XTS)
|
||||||
|
mbedtls_aes_xts_context xts_ctx;
|
||||||
|
#endif
|
||||||
const unsigned char key[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
|
const unsigned char key[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
|
||||||
|
|
||||||
TEST_INVALID_PARAM( mbedtls_aes_init( NULL ) );
|
TEST_INVALID_PARAM( mbedtls_aes_init( NULL ) );
|
||||||
|
#if defined(MBEDTLS_CIPHER_MODE_XTS)
|
||||||
TEST_INVALID_PARAM( mbedtls_aes_xts_init( NULL ) );
|
TEST_INVALID_PARAM( mbedtls_aes_xts_init( NULL ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
/* mbedtls_aes_setkey_enc() */
|
|
||||||
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
mbedtls_aes_setkey_enc( NULL, key, 128 ) );
|
mbedtls_aes_setkey_enc( NULL, key, 128 ) );
|
||||||
|
|
||||||
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
mbedtls_aes_setkey_enc( &dummy_ctx, NULL, 128 ) );
|
mbedtls_aes_setkey_enc( &aes_ctx, NULL, 128 ) );
|
||||||
|
|
||||||
/* mbedtls_aes_setkey_dec() */
|
|
||||||
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
mbedtls_aes_setkey_dec( NULL, key, 128 ) );
|
mbedtls_aes_setkey_dec( NULL, key, 128 ) );
|
||||||
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
|
mbedtls_aes_setkey_dec( &aes_ctx, NULL, 128 ) );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_CIPHER_MODE_XTS)
|
||||||
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
|
mbedtls_aes_xts_setkey_enc( NULL, key, 128 ) );
|
||||||
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
|
mbedtls_aes_xts_setkey_enc( &xts_ctx, NULL, 128 ) );
|
||||||
|
|
||||||
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
mbedtls_aes_setkey_dec( &dummy_ctx, NULL, 128 ) );
|
mbedtls_aes_xts_setkey_dec( NULL, key, 128 ) );
|
||||||
|
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_AES_BAD_INPUT_DATA,
|
||||||
|
mbedtls_aes_xts_setkey_dec( &xts_ctx, NULL, 128 ) );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user