X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fsecurity%2Fprovisioning%2Fsrc%2Foxmjustworks.c;h=ce696ff5fbc60aa2eaedef5efc2dacea714107cc;hb=7f00f942c39b7bc27c7eeecf213a239c3fe4173c;hp=ca65bddc9aa03f3448c44778e4b96138d04ef787;hpb=c69938d018bc97a8b2e7cd35d3c5a51245c5db7d;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/security/provisioning/src/oxmjustworks.c b/resource/csdk/security/provisioning/src/oxmjustworks.c index ca65bdd..ce696ff 100644 --- a/resource/csdk/security/provisioning/src/oxmjustworks.c +++ b/resource/csdk/security/provisioning/src/oxmjustworks.c @@ -26,28 +26,30 @@ #include "cainterface.h" #include "oic_malloc.h" #include "logger.h" -#include "global.h" #include "pmtypes.h" #include "ownershiptransfermanager.h" -#define TAG "OXM_JustWorks" +#define TAG "OIC_OXM_JustWorks" -char* CreateJustWorksSelectOxmPayload(OTMContext_t* otmCtx) +OCStackResult CreateJustWorksSelectOxmPayload(OTMContext_t *otmCtx, uint8_t **payload, size_t *size) { - if(!otmCtx || !otmCtx->selectedDeviceInfo) + if (!otmCtx || !otmCtx->selectedDeviceInfo || !payload || *payload || !size) { - return NULL; + return OC_STACK_INVALID_PARAM; } otmCtx->selectedDeviceInfo->doxm->oxmSel = OIC_JUST_WORKS; - return BinToDoxmJSON(otmCtx->selectedDeviceInfo->doxm); + *payload = NULL; + *size = 0; + + return DoxmToCBORPayload(otmCtx->selectedDeviceInfo->doxm, payload, size, true); } -char* CreateJustWorksOwnerTransferPayload(OTMContext_t* otmCtx) +OCStackResult CreateJustWorksOwnerTransferPayload(OTMContext_t* otmCtx, uint8_t **payload, size_t *size) { - if(!otmCtx || !otmCtx->selectedDeviceInfo) + if (!otmCtx || !otmCtx->selectedDeviceInfo || !payload || *payload || !size) { - return NULL; + return OC_STACK_INVALID_PARAM; } OicUuid_t uuidPT = {.id={0}}; @@ -55,11 +57,14 @@ char* CreateJustWorksOwnerTransferPayload(OTMContext_t* otmCtx) if (OC_STACK_OK != GetDoxmDeviceID(&uuidPT)) { OIC_LOG(ERROR, TAG, "Error while retrieving provisioning tool's device ID"); - return NULL; + return OC_STACK_ERROR; } memcpy(otmCtx->selectedDeviceInfo->doxm->owner.id, uuidPT.id , UUID_LENGTH); - return BinToDoxmJSON(otmCtx->selectedDeviceInfo->doxm); + *payload = NULL; + *size = 0; + + return DoxmToCBORPayload(otmCtx->selectedDeviceInfo->doxm, payload, size, true); } OCStackResult LoadSecretJustWorksCallback(OTMContext_t* UNUSED_PARAM) @@ -72,7 +77,7 @@ OCStackResult LoadSecretJustWorksCallback(OTMContext_t* UNUSED_PARAM) OCStackResult CreateSecureSessionJustWorksCallback(OTMContext_t* otmCtx) { OIC_LOG(INFO, TAG, "IN CreateSecureSessionJustWorksCallback"); - if(!otmCtx || !otmCtx->selectedDeviceInfo) + if (!otmCtx || !otmCtx->selectedDeviceInfo) { return OC_STACK_INVALID_PARAM; } @@ -85,10 +90,10 @@ OCStackResult CreateSecureSessionJustWorksCallback(OTMContext_t* otmCtx) } OIC_LOG(INFO, TAG, "Anonymous cipher suite Enabled."); - caresult = CASelectCipherSuite(TLS_ECDH_anon_WITH_AES_128_CBC_SHA_256); + caresult = CASelectCipherSuite(MBEDTLS_TLS_ECDH_ANON_WITH_AES_128_CBC_SHA256, otmCtx->selectedDeviceInfo->endpoint.adapter); if (CA_STATUS_OK != caresult) { - OIC_LOG_V(ERROR, TAG, "Failed to select TLS_ECDH_anon_WITH_AES_128_CBC_SHA_256"); + OIC_LOG_V(ERROR, TAG, "Failed to select TLS_ECDH_anon_WITH_AES_128_CBC_SHA256"); caresult = CAEnableAnonECDHCipherSuite(false); if (CA_STATUS_OK != caresult) { @@ -100,25 +105,50 @@ OCStackResult CreateSecureSessionJustWorksCallback(OTMContext_t* otmCtx) } return OC_STACK_ERROR; } - OIC_LOG(INFO, TAG, "TLS_ECDH_anon_WITH_AES_128_CBC_SHA_256 cipher suite selected."); + OIC_LOG(INFO, TAG, "TLS_ECDH_anon_WITH_AES_128_CBC_SHA256 cipher suite selected."); - OCProvisionDev_t* selDevInfo = otmCtx->selectedDeviceInfo; - CAEndpoint_t *endpoint = (CAEndpoint_t *)OICCalloc(1, sizeof (CAEndpoint_t)); - if(NULL == endpoint) + OCProvisionDev_t *selDevInfo = otmCtx->selectedDeviceInfo; + CAEndpoint_t endpoint; + memcpy(&endpoint, &selDevInfo->endpoint, sizeof(CAEndpoint_t)); + + if(CA_ADAPTER_IP == endpoint.adapter) { - return OC_STACK_NO_MEMORY; + endpoint.port = selDevInfo->securePort; + caresult = CAInitiateHandshake(&endpoint); } - memcpy(endpoint,&selDevInfo->endpoint,sizeof(CAEndpoint_t)); - endpoint->port = selDevInfo->securePort; - - caresult = CAInitiateHandshake(endpoint); - OICFree(endpoint); + else if (CA_ADAPTER_GATT_BTLE == endpoint.adapter) + { + caresult = CAInitiateHandshake(&endpoint); + } +#ifdef __WITH_TLS__ + else + { + endpoint.port = selDevInfo->tcpPort; + caresult = CAinitiateSslHandshake(&endpoint); + } +#endif if (CA_STATUS_OK != caresult) { - OIC_LOG_V(ERROR, TAG, "DTLS handshake failure."); + OIC_LOG_V(ERROR, TAG, "DTLS/TLS handshake failure."); return OC_STACK_ERROR; } OIC_LOG(INFO, TAG, "OUT CreateSecureSessionJustWorksCallback"); return OC_STACK_OK; } + +OCStackResult CreateMVJustWorksSelectOxmPayload(OTMContext_t *otmCtx, uint8_t **cborPayload, + size_t *cborSize) +{ + if (!otmCtx || !otmCtx->selectedDeviceInfo || !cborPayload || *cborPayload || !cborSize) + { + return OC_STACK_INVALID_PARAM; + } + + otmCtx->selectedDeviceInfo->doxm->oxmSel = OIC_MV_JUST_WORKS; + *cborPayload = NULL; + *cborSize = 0; + + return DoxmToCBORPayload(otmCtx->selectedDeviceInfo->doxm, cborPayload, cborSize, true); +} +