Minor improvements to Blowfish documentation and tests

This commit is contained in:
Hanno Becker 2018-12-17 09:24:51 +00:00
parent e38b4cd661
commit 49acc64c69
2 changed files with 37 additions and 35 deletions

View file

@ -79,7 +79,7 @@ mbedtls_blowfish_context;
* \brief Initialize a Blowfish context. * \brief Initialize a Blowfish context.
* *
* \param ctx The Blowfish context to be initialized. * \param ctx The Blowfish context to be initialized.
* Must not be \c NULL. * This must not be \c NULL.
*/ */
void mbedtls_blowfish_init( mbedtls_blowfish_context *ctx ); void mbedtls_blowfish_init( mbedtls_blowfish_context *ctx );
@ -97,9 +97,9 @@ void mbedtls_blowfish_free( mbedtls_blowfish_context *ctx );
* \brief Perform a Blowfish key schedule. * \brief Perform a Blowfish key schedule.
* *
* \param ctx The Blowfish context to perform the key schedule on. * \param ctx The Blowfish context to perform the key schedule on.
* \param key The encryption key. Must be a readable buffer of * \param key The encryption key. This must be a readable buffer of
* length \p keybits Bits. * length \p keybits Bits.
* \param keybits The length of \p key in Bits. Must be between * \param keybits The length of \p key in Bits. This must be between
* \c 32 and \c 448 and a multiple of \c 8. * \c 32 and \c 448 and a multiple of \c 8.
* *
* \return \c 0 if successful. * \return \c 0 if successful.
@ -116,8 +116,8 @@ int mbedtls_blowfish_setkey( mbedtls_blowfish_context *ctx, const unsigned char
* \param mode The mode of operation. Possible values are * \param mode The mode of operation. Possible values are
* #MBEDTLS_BLOWFISH_ENCRYPT for encryption, or * #MBEDTLS_BLOWFISH_ENCRYPT for encryption, or
* #MBEDTLS_BLOWFISH_DECRYPT for decryption. * #MBEDTLS_BLOWFISH_DECRYPT for decryption.
* \param input The input block. Must be a readable buffer of size 8 Bytes. * \param input The input block. This must be a readable buffer of size 8 Bytes.
* \param input The output block. Must be a writable buffer of size 8 Bytes. * \param input The output block. This must be a writable buffer of size 8 Bytes.
* *
* \return \c 0 if successful. * \return \c 0 if successful.
* \return A negative error code on failure. * \return A negative error code on failure.
@ -129,9 +129,7 @@ int mbedtls_blowfish_crypt_ecb( mbedtls_blowfish_context *ctx,
#if defined(MBEDTLS_CIPHER_MODE_CBC) #if defined(MBEDTLS_CIPHER_MODE_CBC)
/** /**
* \brief Perform a Blowfish-CBC buffer encryption/decryption * \brief Perform a Blowfish-CBC buffer encryption/decryption.
* Length should be a multiple of the block
* size (8 bytes)
* *
* \note Upon exit, the content of the IV is updated so that you can * \note Upon exit, the content of the IV is updated so that you can
* call the function same function again on the following * call the function same function again on the following
@ -146,12 +144,13 @@ int mbedtls_blowfish_crypt_ecb( mbedtls_blowfish_context *ctx,
* \param mode The mode of operation. Possible values are * \param mode The mode of operation. Possible values are
* #MBEDTLS_BLOWFISH_ENCRYPT for encryption, or * #MBEDTLS_BLOWFISH_ENCRYPT for encryption, or
* #MBEDTLS_BLOWFISH_DECRYPT for decryption. * #MBEDTLS_BLOWFISH_DECRYPT for decryption.
* \param length The length of the input data in Bytes. * \param length The length of the input data in Bytes. This must be
* multiple of \c 8.
* \param iv The initialization vector. This must be an RW buffer * \param iv The initialization vector. This must be an RW buffer
* of length \c 8 Bytes. It is updated by this function. * of length \c 8 Bytes. It is updated by this function.
* \param input The input data. Must be a readable buffer of length * \param input The input data. This must be a readable buffer of length
* \p length Bytes. If \p length if \c 0, it may be \c NULL. * \p length Bytes. If \p length if \c 0, it may be \c NULL.
* \param output The output data. Must be a writable buffer of length * \param output The output data. This must be a writable buffer of length
* \p length Bytes. If \p length if \c 0, it may be \c NULL. * \p length Bytes. If \p length if \c 0, it may be \c NULL.
* *
* \return \c 0 if successful. * \return \c 0 if successful.
@ -187,11 +186,11 @@ int mbedtls_blowfish_crypt_cbc( mbedtls_blowfish_context *ctx,
* The value pointed to must be smaller than \c 8. * The value pointed to must be smaller than \c 8.
* It is updated by this function to support the aforementioned * It is updated by this function to support the aforementioned
* streaming usage. * streaming usage.
* \param iv The initialization vector. Must be an RW buffer of * \param iv The initialization vector. This must be an RW buffer of
* size \c 8 Bytes. It is updated after use. * size \c 8 Bytes. It is updated after use.
* \param input The input data. Must be a readable buffer of length * \param input The input data. This must be a readable buffer of length
* \p length Bytes. If \p length if \c 0, it may be \c NULL. * \p length Bytes. If \p length if \c 0, it may be \c NULL.
* \param output The output data. Must be a writable buffer of length * \param output The output data. This must be a writable buffer of length
* \p length Bytes. If \p length if \c 0, it may be \c NULL. * \p length Bytes. If \p length if \c 0, it may be \c NULL.
* *
* \return \c 0 if successful. * \return \c 0 if successful.
@ -262,10 +261,10 @@ int mbedtls_blowfish_crypt_cfb64( mbedtls_blowfish_context *ctx,
* buffer of length \c 8 Bytes. * buffer of length \c 8 Bytes.
* \param stream_block The saved stream-block for resuming. This must point to * \param stream_block The saved stream-block for resuming. This must point to
* an RW buffer of length \c 8 Bytes. * an RW buffer of length \c 8 Bytes.
* \param input The input data. Must be a readable buffer of length * \param input The input data. This must be a readable buffer of length
* \p length Bytes. If \p length if \c 0, it may be \c NULL. * \p length Bytes. If \p length is \c 0, it may be \c NULL.
* \param output The output data. Must be a writable buffer of length * \param output The output data. This must be a writable buffer of length
* \p length Bytes. If \p length if \c 0, it may be \c NULL. * \p length Bytes. If \p length is \c 0, it may be \c NULL.
* *
* \return \c 0 if successful. * \return \c 0 if successful.
* \return A negative error code on failure. * \return A negative error code on failure.

View file

@ -12,6 +12,9 @@ void blowfish_invalid_param( )
{ {
mbedtls_blowfish_context ctx; mbedtls_blowfish_context ctx;
unsigned char buf[16] = { 0 }; unsigned char buf[16] = { 0 };
size_t const valid_keylength = sizeof( buf ) * 8;
size_t valid_mode = MBEDTLS_BLOWFISH_ENCRYPT;
size_t invalid_mode = 42;
size_t off; size_t off;
((void) off); ((void) off);
@ -21,53 +24,53 @@ void blowfish_invalid_param( )
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_setkey( NULL, mbedtls_blowfish_setkey( NULL,
buf, buf,
128 ) ); valid_keylength ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_setkey( &ctx, mbedtls_blowfish_setkey( &ctx,
NULL, NULL,
128 ) ); valid_keylength ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_ecb( NULL, mbedtls_blowfish_crypt_ecb( NULL,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
buf, buf ) ); buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_ecb( &ctx, mbedtls_blowfish_crypt_ecb( &ctx,
42, invalid_mode,
buf, buf ) ); buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_ecb( &ctx, mbedtls_blowfish_crypt_ecb( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
NULL, buf ) ); NULL, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_ecb( &ctx, mbedtls_blowfish_crypt_ecb( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
buf, NULL ) ); buf, NULL ) );
#if defined(MBEDTLS_CIPHER_MODE_CBC) #if defined(MBEDTLS_CIPHER_MODE_CBC)
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cbc( NULL, mbedtls_blowfish_crypt_cbc( NULL,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
buf, buf, buf ) ); buf, buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cbc( &ctx, mbedtls_blowfish_crypt_cbc( &ctx,
42, invalid_mode,
sizeof( buf ), sizeof( buf ),
buf, buf, buf ) ); buf, buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cbc( &ctx, mbedtls_blowfish_crypt_cbc( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
NULL, buf, buf ) ); NULL, buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cbc( &ctx, mbedtls_blowfish_crypt_cbc( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
buf, NULL, buf ) ); buf, NULL, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cbc( &ctx, mbedtls_blowfish_crypt_cbc( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
buf, buf, NULL ) ); buf, buf, NULL ) );
#endif /* MBEDTLS_CIPHER_MODE_CBC */ #endif /* MBEDTLS_CIPHER_MODE_CBC */
@ -75,37 +78,37 @@ void blowfish_invalid_param( )
#if defined(MBEDTLS_CIPHER_MODE_CFB) #if defined(MBEDTLS_CIPHER_MODE_CFB)
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cfb64( NULL, mbedtls_blowfish_crypt_cfb64( NULL,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
&off, buf, &off, buf,
buf, buf ) ); buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cfb64( &ctx, mbedtls_blowfish_crypt_cfb64( &ctx,
42, invalid_mode,
sizeof( buf ), sizeof( buf ),
&off, buf, &off, buf,
buf, buf ) ); buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cfb64( &ctx, mbedtls_blowfish_crypt_cfb64( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
NULL, buf, NULL, buf,
buf, buf ) ); buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cfb64( &ctx, mbedtls_blowfish_crypt_cfb64( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
&off, NULL, &off, NULL,
buf, buf ) ); buf, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cfb64( &ctx, mbedtls_blowfish_crypt_cfb64( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
&off, buf, &off, buf,
NULL, buf ) ); NULL, buf ) );
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
mbedtls_blowfish_crypt_cfb64( &ctx, mbedtls_blowfish_crypt_cfb64( &ctx,
MBEDTLS_BLOWFISH_ENCRYPT, valid_mode,
sizeof( buf ), sizeof( buf ),
&off, buf, &off, buf,
buf, NULL ) ); buf, NULL ) );