in source/fleet_provisioning.c [435:471]
static FleetProvisioningTopic_t parseCreateCertificateFromCsrTopic( const char * pTopic,
uint16_t topicLength )
{
/* Table of topics in the same order as TopicFormatSuffix_t. */
static const FleetProvisioningTopic_t createCertificateFromCsrApi[] =
{
FleetProvJsonCreateCertFromCsrPublish,
FleetProvJsonCreateCertFromCsrAccepted,
FleetProvJsonCreateCertFromCsrRejected,
FleetProvCborCreateCertFromCsrPublish,
FleetProvCborCreateCertFromCsrAccepted,
FleetProvCborCreateCertFromCsrRejected,
FleetProvisioningInvalidTopic
};
FleetProvisioningTopic_t ret = FleetProvisioningInvalidTopic;
FleetProvisioningStatus_t status = FleetProvisioningError;
TopicFormatSuffix_t rest = TopicInvalidFormatSuffix;
const char * pTopicCursor = pTopic;
uint16_t cursorLength = topicLength;
assert( pTopic != NULL );
/* Check if prefix matches */
status = consumeIfMatch( &pTopicCursor,
&cursorLength,
FP_CREATE_CERT_API_PREFIX,
FP_CREATE_CERT_API_LENGTH_PREFIX );
if( status == FleetProvisioningSuccess )
{
/* Match format and suffix */
rest = parseTopicFormatSuffix( pTopicCursor, cursorLength );
ret = createCertificateFromCsrApi[ rest ];
}
return ret;
}