in ports/mbedTLS/azure_iot_jws_mbedtls.c [368:425]
static AzureIoTResult_t prvFindKeyParts( AzureIoTJSONReader_t * pxPayload,
az_span * pxBase64EncodedNSpan,
az_span * pxBase64EncodedESpan,
az_span * pxAlgSpan )
{
AzureIoTResult_t xResult = eAzureIoTSuccess;
/*Begin object */
azureiotresultRETURN_IF_FAILED( AzureIoTJSONReader_NextToken( pxPayload ) );
/*Property Name */
azureiotresultRETURN_IF_FAILED( AzureIoTJSONReader_NextToken( pxPayload ) );
while( xResult == eAzureIoTSuccess &&
( az_span_size( *pxBase64EncodedNSpan ) == 0 ||
az_span_size( *pxBase64EncodedESpan ) == 0 ||
az_span_size( *pxAlgSpan ) == 0 ) )
{
if( AzureIoTJSONReader_TokenIsTextEqual( pxPayload, jws_n_json_value, sizeof( jws_n_json_value ) - 1 ) )
{
azureiotresultRETURN_IF_FAILED( AzureIoTJSONReader_NextToken( pxPayload ) );
*pxBase64EncodedNSpan = pxPayload->_internal.xCoreReader.token.slice;
xResult = AzureIoTJSONReader_NextToken( pxPayload );
}
else if( AzureIoTJSONReader_TokenIsTextEqual( pxPayload, jws_e_json_value, sizeof( jws_e_json_value ) - 1 ) )
{
azureiotresultRETURN_IF_FAILED( AzureIoTJSONReader_NextToken( pxPayload ) );
*pxBase64EncodedESpan = pxPayload->_internal.xCoreReader.token.slice;
xResult = AzureIoTJSONReader_NextToken( pxPayload );
}
else if( AzureIoTJSONReader_TokenIsTextEqual( pxPayload, jws_alg_json_value, sizeof( jws_alg_json_value ) - 1 ) )
{
azureiotresultRETURN_IF_FAILED( AzureIoTJSONReader_NextToken( pxPayload ) );
*pxAlgSpan = pxPayload->_internal.xCoreReader.token.slice;
xResult = AzureIoTJSONReader_NextToken( pxPayload );
}
else
{
azureiotresultRETURN_IF_FAILED( AzureIoTJSONReader_NextToken( pxPayload ) );
azureiotresultRETURN_IF_FAILED( AzureIoTJSONReader_SkipChildren( pxPayload ) );
xResult = AzureIoTJSONReader_NextToken( pxPayload );
}
}
if( ( xResult != eAzureIoTSuccess ) ||
( az_span_size( *pxBase64EncodedNSpan ) == 0 ) ||
( az_span_size( *pxBase64EncodedESpan ) == 0 ) ||
( az_span_size( *pxAlgSpan ) == 0 ) )
{
AZLogError( ( "[JWS] Parse Signing Key Payload Error: %i",
xResult != eAzureIoTSuccess ? xResult : eAzureIoTErrorFailed ) );
return xResult != eAzureIoTSuccess ? xResult : eAzureIoTErrorFailed;
}
return eAzureIoTSuccess;
}