in source/sigv4.c [2129:2224]
static SigV4Status_t verifyParamsToGenerateAuthHeaderApi( const SigV4Parameters_t * pParams,
const char * pAuthBuf,
const size_t * authBufLen,
char * const * pSignature,
const size_t * signatureLen )
{
SigV4Status_t returnStatus = SigV4Success;
/* Check for NULL members of struct pParams */
if( ( pParams == NULL ) || ( pAuthBuf == NULL ) || ( authBufLen == NULL ) ||
( pSignature == NULL ) || ( signatureLen == NULL ) )
{
LogError( ( "Parameter check failed: At least one of the input parameters is NULL. "
"Input parameters cannot be NULL" ) );
returnStatus = SigV4InvalidParameter;
}
else if( pParams->pCredentials == NULL )
{
LogError( ( "Parameter check failed: pParams->pCredentials is NULL." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pCredentials->pAccessKeyId == NULL ) || ( pParams->pCredentials->accessKeyIdLen == 0U ) )
{
LogError( ( "Parameter check failed: Access Key ID data is empty." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pCredentials->pSecretAccessKey == NULL ) || ( pParams->pCredentials->secretAccessKeyLen == 0U ) )
{
LogError( ( "Parameter check failed: Secret Access Key data is empty." ) );
returnStatus = SigV4InvalidParameter;
}
else if( pParams->pDateIso8601 == NULL )
{
LogError( ( "Parameter check failed: pParams->DateIso8601 data is NULL." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pRegion == NULL ) || ( pParams->regionLen == 0U ) )
{
LogError( ( "Parameter check failed: Region data is empty." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pService == NULL ) || ( pParams->serviceLen == 0U ) )
{
LogError( ( "Parameter check failed: Service data is empty." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pAlgorithm != NULL ) && ( pParams->algorithmLen == 0U ) )
{
LogError( ( "Parameter check failed: Algorithm is specified but length (pParams->algorithmLen) passed is 0U." ) );
returnStatus = SigV4InvalidParameter;
}
else if( pParams->pCryptoInterface == NULL )
{
LogError( ( "Parameter check failed: pParams->pCryptoInterface is NULL." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pCryptoInterface->hashInit == NULL ) || ( pParams->pCryptoInterface->hashUpdate == NULL ) ||
( pParams->pCryptoInterface->hashFinal == NULL ) )
{
LogError( ( "Parameter check failed: At least one of hashInit, hashUpdate, hashFinal function pointer members is NULL." ) );
returnStatus = SigV4InvalidParameter;
}
else if( pParams->pCryptoInterface->hashBlockLen > SIGV4_HASH_MAX_BLOCK_LENGTH )
{
LogError( ( "Parameter check failed: pParams->pCryptoInterface->hashBlockLen is greater than `SIGV4_HASH_MAX_BLOCK_LENGTH`, "
"which can be configured in sigv4_config.h." ) );
returnStatus = SigV4InvalidParameter;
}
else if( pParams->pCryptoInterface->hashDigestLen > SIGV4_HASH_MAX_DIGEST_LENGTH )
{
LogError( ( "Parameter check failed: pParams->pCryptoInterface->hashDigestLen is greater than `SIGV4_HASH_MAX_DIGEST_LENGTH`, "
"which can be configured in sigv4_config.h." ) );
returnStatus = SigV4InvalidParameter;
}
else if( pParams->pHttpParameters == NULL )
{
LogError( ( "Parameter check failed: pParams->pHttpParameters is NULL." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pHttpParameters->pHttpMethod == NULL ) || ( pParams->pHttpParameters->httpMethodLen == 0U ) )
{
LogError( ( "Parameter check failed: HTTP Method data is either NULL or zero bytes in length." ) );
returnStatus = SigV4InvalidParameter;
}
else if( ( pParams->pHttpParameters->pHeaders == NULL ) || ( pParams->pHttpParameters->headersLen == 0U ) )
{
LogError( ( "Parameter check failed: HTTP URI path information is either NULL or zero bytes in length." ) );
returnStatus = SigV4InvalidParameter;
}
else
{
/* Empty else block for MISRA C:2012 compliance. */
}
return returnStatus;
}