static SigV4Status_t writePayloadHashToCanonicalRequest()

in source/sigv4.c [3002:3039]


static SigV4Status_t writePayloadHashToCanonicalRequest( const SigV4Parameters_t * pParams,
                                                         CanonicalContext_t * pCanonicalContext )
{
    size_t encodedLen = 0U;
    SigV4Status_t returnStatus = SigV4Success;

    assert( pParams != NULL );
    assert( pCanonicalContext != NULL );

    if( FLAG_IS_SET( pParams->pHttpParameters->flags, SIGV4_HTTP_PAYLOAD_IS_HASH ) )
    {
        /* Copy the hashed payload data supplied by the user in the headers data list. */
        returnStatus = copyHeaderStringToCanonicalBuffer( pCanonicalContext->pHashPayloadLoc, pCanonicalContext->hashPayloadLen, pParams->pHttpParameters->flags, '\n', pCanonicalContext );
        /* Remove new line at the end of the payload. */
        pCanonicalContext->uxCursorIndex--;
    }
    else if( FLAG_IS_SET( pParams->pHttpParameters->flags, SIGV4_HTTP_IS_PRESIGNED_URL ) )
    {
        /* Copy the UNSIGNED-PAYLOAD data in the headers data list. */
        returnStatus = copyHeaderStringToCanonicalBuffer( "UNSIGNED-PAYLOAD", strlen( "UNSIGNED-PAYLOAD" ), pParams->pHttpParameters->flags, '\n', pCanonicalContext );
        /* Remove new line at the end of the payload. */
        pCanonicalContext->uxCursorIndex--;
    }
    else
    {
        encodedLen = pCanonicalContext->bufRemaining;
        /* Calculate hash of the request payload. */
        returnStatus = completeHashAndHexEncode( pParams->pHttpParameters->pPayload,
                                                 pParams->pHttpParameters->payloadLen,
                                                 ( char * ) &( pCanonicalContext->pBufProcessing[ pCanonicalContext->uxCursorIndex ] ),
                                                 &encodedLen,
                                                 pParams->pCryptoInterface );
        pCanonicalContext->uxCursorIndex += encodedLen;
        pCanonicalContext->bufRemaining -= encodedLen;
    }

    return returnStatus;
}