static GetRPKMasterKeyCallback gGetRPKMasterKeyCallback = NULL;
-void SetInputRPKMasterKeyCB(GetRPKMasterKeyCallback rpkCB)
+OCStackResult SetRPKMasterKeyCB(GetRPKMasterKeyCallback rpkCB)
{
if(NULL == rpkCB)
{
OIC_LOG(ERROR, TAG, "Failed to set callback for rpk.");
- return;
+ return OC_STACK_INVALID_PARAM;
}
gGetRPKMasterKeyCallback = rpkCB;
+
+ return OC_STACK_OK;
}
-void UnsetRPKMasterKeyCB()
+OCStackResult UnsetRPKMasterKeyCB()
{
gGetRPKMasterKeyCallback = NULL;
+
+ return OC_STACK_OK;
}
OCStackResult CreateRPKBasedSelectOxmPayload(OTMContext_t* otmCtx, uint8_t **payload, size_t *size)
return DoxmToCBORPayload(otmCtx->selectedDeviceInfo->doxm, payload, size, true);
}
-OCStackResult GetMasterRPK(char* master, size_t* master_len)
+OCStackResult GetMasterRPK()
{
- if(!master || !master_len)
- {
- OIC_LOG(ERROR, TAG, "RPK buffer is NULL");
- return OC_STACK_INVALID_PARAM;
- }
-
- OIC_LOG(DEBUG, TAG, "Invoking gGetRPKMasterKeyCallback");
- if(gGetRPKMasterKeyCallback)
+ if (gGetRPKMasterKeyCallback)
{
- gGetRPKMasterKeyCallback(g_RPKOxmData.rpkData, &g_RPKOxmData.rpkSize);
- if (g_RPKOxmData.rpkSize > OXM_RPK_MASTER_KEY_MAX_SIZE)
+ OIC_LOG(DEBUG, TAG, "Invoking gGetRPKMasterKeyCallback");
+ char *rpkData = NULL;
+ size_t rpkSize = 0;
+ gGetRPKMasterKeyCallback(&rpkData, &rpkSize);
+ if (!rpkData)
+ {
+ OIC_LOG(ERROR, TAG, "RPK is NULL");
+ return OC_STACK_ERROR;
+ }
+ if (rpkSize > OXM_RPK_MASTER_KEY_MAX_SIZE)
{
- OIC_LOG(ERROR, TAG, "Buffer overflow: RPK master key must not exceed OXM_RPK_MASTER_KEY_MAX_SIZE");
+ OIC_LOG(ERROR, TAG, "RPK master key must not exceed OXM_RPK_MASTER_KEY_MAX_SIZE");
return OC_STACK_ERROR;
}
+ g_RPKOxmData.rpkSize = rpkSize;
+ memcpy(g_RPKOxmData.rpkData, rpkData, g_RPKOxmData.rpkSize);
}
else
{
OIC_LOG(ERROR, TAG, "Invoke RPK callback failed!");
- OIC_LOG(ERROR, TAG, "Callback for input RPK should be registered to use Random RPK based OxM.");
+ OIC_LOG(ERROR, TAG, "Callback for input RPK master key should be registered to use RPK based OxM.");
return OC_STACK_ERROR;
}
return OC_STACK_INVALID_PARAM;
}
- uint8_t rpkData[OXM_RPK_MASTER_KEY_MAX_SIZE + 1] = {0};
- size_t rpkLen = 0;
OCStackResult res = OC_STACK_ERROR;
- res = GetMasterRPK((char*)rpkData, &rpkLen);
+ res = GetMasterRPK();
if (OC_STACK_OK != res)
{