X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fsecurity%2Fsrc%2Fdirectpairing.c;h=8e8712bc623a92bba925666ab5cbf281fec815c1;hb=1cee1631595cac6a6394ac2e0b365c6dd5a42c68;hp=5606598620483437e33e5ab8ff9cb0144a0b6e74;hpb=390866079e285d2c74918432c0d597d5da52f8a0;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/security/src/directpairing.c b/resource/csdk/security/src/directpairing.c index 5606598..8e8712b 100644 --- a/resource/csdk/security/src/directpairing.c +++ b/resource/csdk/security/src/directpairing.c @@ -65,6 +65,7 @@ typedef struct DPairData OCDirectPairingDev_t *peer; /**< Pointer to pairing target info.**/ char pin[DP_PIN_LENGTH]; /**< PIN **/ OCDirectPairingResultCB resultCallback; /**< Pointer to result callback.**/ + void *userCtx; /** < user context to pass in callback **/ } DPairData_t; static OCDirectPairingDev_t *g_dp_paired = NULL; @@ -331,7 +332,7 @@ static OCStackApplicationResult DirectPairingFinalizeHandler(void *ctx, OCDoHand if (clientResponse) { - if(OC_STACK_OK == clientResponse->result) + if(OC_STACK_RESOURCE_CHANGED == clientResponse->result) { // result OIC_LOG(INFO, TAG, "DirectPairingFinalizeHandler : success PUT" @@ -347,7 +348,7 @@ static OCStackApplicationResult DirectPairingFinalizeHandler(void *ctx, OCDoHand if (OC_STACK_OK != GetDoxmDeviceID(&ptDeviceID)) { OIC_LOG(ERROR, TAG, "Error while retrieving provisioning tool's device ID"); - resultCallback(peer, OC_STACK_ERROR); + resultCallback(dpairData->userCtx, peer, OC_STACK_ERROR); return OC_STACK_DELETE_TRANSACTION; } @@ -356,7 +357,7 @@ static OCStackApplicationResult DirectPairingFinalizeHandler(void *ctx, OCDoHand if(OC_STACK_OK != res) { OIC_LOG(ERROR, TAG, "Failed to PairingPSK generation"); - resultCallback(peer, res); + resultCallback(dpairData->userCtx, peer, res); return OC_STACK_DELETE_TRANSACTION; } @@ -385,7 +386,7 @@ static OCStackApplicationResult DirectPairingFinalizeHandler(void *ctx, OCDoHand OIC_LOG(ERROR, TAG, "Error while adding a device to paired list."); } - resultCallback(peer, OC_STACK_OK); + resultCallback(dpairData->userCtx, peer, OC_STACK_OK); return OC_STACK_DELETE_TRANSACTION; } @@ -399,7 +400,7 @@ static OCStackApplicationResult DirectPairingFinalizeHandler(void *ctx, OCDoHand OIC_LOG(ERROR, TAG, "DirectPairingFinalizeHandler received Null clientResponse"); } - resultCallback(peer, OC_STACK_ERROR); + resultCallback(dpairData->userCtx, peer, OC_STACK_ERROR); OICFree(dpairData); return OC_STACK_DELETE_TRANSACTION; } @@ -412,7 +413,7 @@ static OCStackApplicationResult DirectPairingFinalizeHandler(void *ctx, OCDoHand * * @return OC_STACK_OK on success otherwise error. */ -OCStackResult FinalizeDirectPairing(OCDirectPairingDev_t* peer, +OCStackResult FinalizeDirectPairing(void *ctx, OCDirectPairingDev_t* peer, OCDirectPairingResultCB resultCallback) { if(NULL == peer) @@ -474,6 +475,7 @@ OCStackResult FinalizeDirectPairing(OCDirectPairingDev_t* peer, } dpairData->peer = peer; dpairData->resultCallback = resultCallback; + dpairData->userCtx = ctx; OCCallbackData cbData = {.context=NULL, .cb=NULL, .cd=NULL}; cbData.cb = DirectPairingFinalizeHandler; @@ -525,17 +527,17 @@ void DirectPairingDTLSHandshakeCB(const CAEndpoint_t *endpoint, const CAErrorInf { OIC_LOG(INFO, TAG, "Now, finalize Direct-Pairing procedure."); - res = FinalizeDirectPairing(peer, resultCallback); + res = FinalizeDirectPairing(g_dp_proceed_ctx->userCtx, peer, resultCallback); if(OC_STACK_OK != res) { OIC_LOG(ERROR, TAG, "Failed to finalize direct-pairing"); - resultCallback(peer, res); + resultCallback(g_dp_proceed_ctx->userCtx, peer, res); } } else if(CA_DTLS_AUTHENTICATION_FAILURE == info->result) { OIC_LOG(INFO, TAG, "DirectPairingDTLSHandshakeCB - Authentication failed"); - resultCallback(peer, OC_STACK_AUTHENTICATION_FAILURE); + resultCallback(g_dp_proceed_ctx->userCtx, peer, OC_STACK_AUTHENTICATION_FAILURE); } #ifdef __WITH_DTLS__ @@ -586,7 +588,7 @@ static OCStackApplicationResult DirectPairingHandler(void *ctx, OCDoHandle UNUSE if (clientResponse) { - if(OC_STACK_RESOURCE_CREATED == clientResponse->result) + if(OC_STACK_RESOURCE_CHANGED == clientResponse->result) { // result OIC_LOG(INFO, TAG, "DirectPairingHandler : success POST request to /oic/sec/dpairing"); @@ -653,7 +655,7 @@ exit: g_dp_proceed_ctx = NULL; } - resultCallback(dpairData->peer, res); + resultCallback(dpairData->userCtx, dpairData->peer, res); } OIC_LOG_V(INFO, TAG, "OUT DirectPairingHandler."); return OC_STACK_DELETE_TRANSACTION; @@ -668,8 +670,8 @@ exit: * * @return OC_STACK_OK on success otherwise error. */ -OCStackResult DPDirectPairing(OCDirectPairingDev_t* peer, OicSecPrm_t pmSel, char *pinNumber, - OCDirectPairingResultCB resultCallback) +OCStackResult DPDirectPairing(void *ctx, OCDirectPairingDev_t* peer, OicSecPrm_t pmSel, + char *pinNumber, OCDirectPairingResultCB resultCallback) { if(NULL == peer || NULL == pinNumber) { @@ -732,6 +734,7 @@ OCStackResult DPDirectPairing(OCDirectPairingDev_t* peer, OicSecPrm_t pmSel, cha dpairData->peer = peer; memcpy(dpairData->pin, pinNumber, DP_PIN_LENGTH); dpairData->resultCallback = resultCallback; + dpairData->userCtx = ctx; OCCallbackData cbData = {.context=NULL, .cb=NULL, .cd=NULL}; cbData.cb = DirectPairingHandler; @@ -1008,6 +1011,7 @@ OCStackResult DPDeviceDiscovery(unsigned short waittime) } else { + OCProcess(); nanosleep(&timeout, NULL); } }