in source/sigv4.c [1017:1055]
static SigV4Status_t lowercaseHexEncode( const SigV4String_t * pInputStr,
SigV4String_t * pHexOutput )
{
SigV4Status_t returnStatus = SigV4Success;
static const char digitArr[] = "0123456789abcdef";
char * hex = NULL;
size_t i = 0U;
const uint8_t * bytes;
assert( pInputStr != NULL );
assert( pHexOutput != NULL );
assert( pInputStr->pData != NULL );
assert( pHexOutput->pData != NULL );
hex = pHexOutput->pData;
bytes = ( const uint8_t * ) pInputStr->pData;
/* Hex string notification of binary data takes twice the size. */
if( pHexOutput->dataLen < ( pInputStr->dataLen * 2U ) )
{
returnStatus = SigV4InsufficientMemory;
LOG_INSUFFICIENT_MEMORY_ERROR( "hex encode",
( pInputStr->dataLen * 2U ) - pHexOutput->dataLen );
}
else
{
for( i = 0; i < pInputStr->dataLen; i++ )
{
*hex = digitArr[ ( bytes[ i ] & 0xF0U ) >> 4 ];
hex++;
*hex = digitArr[ ( bytes[ i ] & 0x0FU ) ];
hex++;
}
pHexOutput->dataLen = pInputStr->dataLen * 2U;
}
return returnStatus;
}