in source/sigv4.c [1080:1128]
static void generateCredentialScope( const SigV4Parameters_t * pSigV4Params,
SigV4String_t * pCredScope )
{
char * pBufWrite = NULL;
size_t credScopeLen = sizeNeededForCredentialScope( pSigV4Params );
size_t copyStringResult;
assert( pSigV4Params != NULL );
assert( pSigV4Params->pCredentials != NULL );
assert( pSigV4Params->pRegion != NULL );
assert( pSigV4Params->pService != NULL );
assert( pCredScope != NULL );
assert( pCredScope->pData != NULL );
assert( pCredScope->dataLen >= credScopeLen );
pBufWrite = pCredScope->pData;
/* Each concatenated component is separated by a '/' character. */
/* Concatenate first 8 characters from the provided ISO 8601 string (YYYYMMDD). */
( void ) memcpy( pBufWrite, pSigV4Params->pDateIso8601, ISO_DATE_SCOPE_LEN );
pBufWrite = &( pBufWrite[ ISO_DATE_SCOPE_LEN ] );
*pBufWrite = CREDENTIAL_SCOPE_SEPARATOR;
pBufWrite = &( pBufWrite[ CREDENTIAL_SCOPE_SEPARATOR_LEN ] );
/* Concatenate AWS region. */
( void ) memcpy( pBufWrite, pSigV4Params->pRegion, pSigV4Params->regionLen );
pBufWrite = &( pBufWrite[ pSigV4Params->regionLen ] );
*pBufWrite = CREDENTIAL_SCOPE_SEPARATOR;
pBufWrite = &( pBufWrite[ CREDENTIAL_SCOPE_SEPARATOR_LEN ] );
/* Concatenate AWS service. */
( void ) memcpy( pBufWrite, pSigV4Params->pService, pSigV4Params->serviceLen );
pBufWrite = &( pBufWrite[ pSigV4Params->serviceLen ] );
*pBufWrite = CREDENTIAL_SCOPE_SEPARATOR;
pBufWrite = &( pBufWrite[ CREDENTIAL_SCOPE_SEPARATOR_LEN ] );
/* Concatenate terminator. */
copyStringResult = copyString( pBufWrite, CREDENTIAL_SCOPE_TERMINATOR, CREDENTIAL_SCOPE_TERMINATOR_LEN );
pBufWrite = &( pBufWrite[ copyStringResult ] );
/* Verify that the number of bytes written match the sizeNeededForCredentialScope()
* utility function for calculating size of credential scope. */
assert( ( size_t ) ( pBufWrite - pCredScope->pData ) == credScopeLen );
pCredScope->dataLen = credScopeLen;
}