diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 03be2b818..09ae2e08a 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -21,6 +21,76 @@ void cipher_list( ) } /* END_CASE */ +/* BEGIN_CASE */ +void cipher_null_args( ) +{ + cipher_context_t ctx; + const cipher_info_t *info = cipher_info_from_type( *( cipher_list() ) ); + unsigned char buf[1] = { 0 }; + size_t olen; + + memset( &ctx, 0, sizeof( cipher_context_t ) ); + + TEST_ASSERT( cipher_get_block_size( NULL ) == 0 ); + TEST_ASSERT( cipher_get_block_size( &ctx ) == 0 ); + + TEST_ASSERT( cipher_get_cipher_mode( NULL ) == POLARSSL_MODE_NONE ); + TEST_ASSERT( cipher_get_cipher_mode( &ctx ) == POLARSSL_MODE_NONE ); + + TEST_ASSERT( cipher_get_iv_size( NULL ) == 0 ); + TEST_ASSERT( cipher_get_iv_size( &ctx ) == 0 ); + + TEST_ASSERT( cipher_info_from_string( NULL ) == NULL ); + + TEST_ASSERT( cipher_init_ctx( &ctx, NULL ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_init_ctx( NULL, info ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + + TEST_ASSERT( cipher_setkey( NULL, buf, 0, POLARSSL_ENCRYPT ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_setkey( &ctx, buf, 0, POLARSSL_ENCRYPT ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + + TEST_ASSERT( cipher_set_iv( NULL, buf, 0 ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_set_iv( &ctx, buf, 0 ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + + TEST_ASSERT( cipher_reset( NULL ) == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_reset( &ctx ) == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + +#if defined(POLARSSL_CIPHER_MODE_AEAD) + TEST_ASSERT( cipher_update_ad( NULL, buf, 0 ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_update_ad( &ctx, buf, 0 ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); +#endif + + TEST_ASSERT( cipher_update( NULL, buf, 0, buf, &olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_update( &ctx, buf, 0, buf, &olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + + TEST_ASSERT( cipher_finish( NULL, buf, &olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_finish( &ctx, buf, &olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + +#if defined(POLARSSL_CIPHER_MODE_AEAD) + TEST_ASSERT( cipher_write_tag( NULL, buf, olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_write_tag( &ctx, buf, olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + + TEST_ASSERT( cipher_check_tag( NULL, buf, olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); + TEST_ASSERT( cipher_check_tag( &ctx, buf, olen ) + == POLARSSL_ERR_CIPHER_BAD_INPUT_DATA ); +#endif +} +/* END_CASE */ + /* BEGIN_CASE */ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, int length_val, int pad_mode ) diff --git a/tests/suites/test_suite_cipher.padding.data b/tests/suites/test_suite_cipher.padding.data index 702c88ff7..9b5f290dd 100644 --- a/tests/suites/test_suite_cipher.padding.data +++ b/tests/suites/test_suite_cipher.padding.data @@ -1,6 +1,9 @@ Cipher list cipher_list: +Cipher null/uninitialised arguments +cipher_null_args: + Set padding with AES-CBC depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC:POLARSSL_CIPHER_PADDING_PKCS7 set_padding:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_PKCS7:0