Change sha256 output type from an array to a pointer
The output parameter of mbedtls_sha256_finish_ret and mbedtls_sha256_ret now has a pointer type rather than array type. This removes spurious warnings in some compilers when outputting a SHA-224 hash into a 28-byte buffer. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
3e3a6789d1
commit
d7b3d92476
4 changed files with 17 additions and 14 deletions
|
@ -1,5 +1,6 @@
|
||||||
API changes
|
API changes
|
||||||
* The output parameter of mbedtls_sha512_finish_ret and mbedtls_sha512_ret
|
* The output parameter of mbedtls_sha512_finish_ret, mbedtls_sha512_ret,
|
||||||
now has a pointer type rather than array type. This removes spurious
|
mbedtls_sha256_finish_ret and mbedtls_sha256_ret now has a pointer type
|
||||||
warnings in some compilers when outputting a SHA-384 hash into a
|
rather than array type. This removes spurious warnings in some compilers
|
||||||
48-byte buffer.
|
when outputting a SHA-384 or SHA-224 hash into a buffer of exactly
|
||||||
|
the hash size.
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
SHA-512 output type change
|
SHA-512 and SHA-256 output type change
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
The output parameter of `mbedtls_sha512_finish_ret()` and `mbedtls_sha512_ret()` now has a pointer type rather than array type. This makes no difference in terms of C semantics, but removes spurious warnings in some compilers when outputting a SHA-384 hash into a 48-byte buffer.
|
The output parameter of `mbedtls_sha256_finish_ret()`, `mbedtls_sha256_ret()`, `mbedtls_sha512_finish_ret()`, `mbedtls_sha512_ret()` now has a pointer type rather than array type. This makes no difference in terms of C semantics, but removes spurious warnings in some compilers when outputting a SHA-384 hash into a 48-byte buffer or a SHA-224 hash into a 28-byte buffer.
|
||||||
|
|
||||||
This makes no difference to a vast majority of applications. If your code takes a pointer to one of these functions, you may need to change the type of the pointer.
|
This makes no difference to a vast majority of applications. If your code takes a pointer to one of these functions, you may need to change the type of the pointer.
|
||||||
|
|
||||||
Alternative implementations of the SHA512 module must adjust their functions' prototype accordingly.
|
Alternative implementations of the SHA256 and SHA512 modules must adjust their functions' prototype accordingly.
|
||||||
|
|
|
@ -127,13 +127,14 @@ int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx,
|
||||||
* \param ctx The SHA-256 context. This must be initialized
|
* \param ctx The SHA-256 context. This must be initialized
|
||||||
* and have a hash operation started.
|
* and have a hash operation started.
|
||||||
* \param output The SHA-224 or SHA-256 checksum result.
|
* \param output The SHA-224 or SHA-256 checksum result.
|
||||||
* This must be a writable buffer of length \c 32 Bytes.
|
* This must be a writable buffer of length \c 32 bytes
|
||||||
|
* for SHA-256, 28 bytes for SHA-224.
|
||||||
*
|
*
|
||||||
* \return \c 0 on success.
|
* \return \c 0 on success.
|
||||||
* \return A negative error code on failure.
|
* \return A negative error code on failure.
|
||||||
*/
|
*/
|
||||||
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
|
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
|
||||||
unsigned char output[32] );
|
unsigned char *output );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief This function processes a single data block within
|
* \brief This function processes a single data block within
|
||||||
|
@ -163,14 +164,15 @@ int mbedtls_internal_sha256_process( mbedtls_sha256_context *ctx,
|
||||||
* \param input The buffer holding the data. This must be a readable
|
* \param input The buffer holding the data. This must be a readable
|
||||||
* buffer of length \p ilen Bytes.
|
* buffer of length \p ilen Bytes.
|
||||||
* \param ilen The length of the input data in Bytes.
|
* \param ilen The length of the input data in Bytes.
|
||||||
* \param output The SHA-224 or SHA-256 checksum result. This must
|
* \param output The SHA-224 or SHA-256 checksum result.
|
||||||
* be a writable buffer of length \c 32 Bytes.
|
* This must be a writable buffer of length \c 32 bytes
|
||||||
|
* for SHA-256, 28 bytes for SHA-224.
|
||||||
* \param is224 Determines which function to use. This must be
|
* \param is224 Determines which function to use. This must be
|
||||||
* either \c 0 for SHA-256, or \c 1 for SHA-224.
|
* either \c 0 for SHA-256, or \c 1 for SHA-224.
|
||||||
*/
|
*/
|
||||||
int mbedtls_sha256_ret( const unsigned char *input,
|
int mbedtls_sha256_ret( const unsigned char *input,
|
||||||
size_t ilen,
|
size_t ilen,
|
||||||
unsigned char output[32],
|
unsigned char *output,
|
||||||
int is224 );
|
int is224 );
|
||||||
|
|
||||||
#if defined(MBEDTLS_SELF_TEST)
|
#if defined(MBEDTLS_SELF_TEST)
|
||||||
|
|
|
@ -332,7 +332,7 @@ int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx,
|
||||||
* SHA-256 final digest
|
* SHA-256 final digest
|
||||||
*/
|
*/
|
||||||
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
|
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
|
||||||
unsigned char output[32] )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
uint32_t used;
|
uint32_t used;
|
||||||
|
@ -401,7 +401,7 @@ int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
|
||||||
*/
|
*/
|
||||||
int mbedtls_sha256_ret( const unsigned char *input,
|
int mbedtls_sha256_ret( const unsigned char *input,
|
||||||
size_t ilen,
|
size_t ilen,
|
||||||
unsigned char output[32],
|
unsigned char *output,
|
||||||
int is224 )
|
int is224 )
|
||||||
{
|
{
|
||||||
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
Loading…
Reference in a new issue