X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fsecurity%2Fprovisioning%2Fsrc%2Fsecureresourceprovider.c;h=6804381a70b7d1a5e5e217774f6cae68f7286736;hb=b1cb9602751772b0ac7f05f185a67daad0820757;hp=930bdf7df40d7b84c5fd7b437399d68f5fb55641;hpb=e48a70f83f984877f5d5df3665cc9730a8a5b8ef;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/security/provisioning/src/secureresourceprovider.c b/resource/csdk/security/provisioning/src/secureresourceprovider.c index 930bdf7..6804381 100644 --- a/resource/csdk/security/provisioning/src/secureresourceprovider.c +++ b/resource/csdk/security/provisioning/src/secureresourceprovider.c @@ -38,14 +38,18 @@ #include "pconfresource.h" #include "credentialgenerator.h" #include "cainterface.h" +#if defined (__TIZENRT__) +#include +#else #include "cJSON.h" +#endif #include "pmtypes.h" #include "pmutility.h" +#include "srmutility.h" #include "provisioningdatabasemanager.h" #include "base64.h" #include "utlist.h" #include "ocpayload.h" -#include "srmutility.h" #ifdef __WITH_DTLS__ #include "crlresource.h" @@ -55,16 +59,16 @@ /** * Macro to verify argument is not equal to NULL. - * eg: VERIFY_NON_NULL(TAG, ptrData, ERROR,OC_STACK_ERROR); + * eg: VERIFY_NON_NULL_RET(TAG, ptrData, ERROR,OC_STACK_ERROR); */ -#define VERIFY_NON_NULL(tag, arg, logLevel, retValue) { if (NULL == (arg)) \ +#define VERIFY_NON_NULL_RET(tag, arg, logLevel, retValue) { if (NULL == (arg)) \ { OIC_LOG((logLevel), tag, #arg " is NULL"); return retValue; } } /** * Macro to verify success of operation. - * eg: VERIFY_SUCCESS(TAG, OC_STACK_OK == foo(), ERROR, OC_STACK_ERROR); + * eg: VERIFY_SUCCESS_RET(TAG, OC_STACK_OK == foo(), ERROR, OC_STACK_ERROR); */ -#define VERIFY_SUCCESS(tag, op, logLevel, retValue) { if (!(op)) \ +#define VERIFY_SUCCESS_RET(tag, op, logLevel, retValue) { if (!(op)) \ {OIC_LOG((logLevel), tag, #op " failed!!"); return retValue;} } @@ -151,6 +155,7 @@ struct RemoveData { OCProvisionDev_t* linkedDevList; /**< A list of devices which have invalid credential.**/ OCProvisionResult_t* removeRes; /**< Result array.**/ OCProvisionResultCB resultCallback; /**< Pointer to result callback.**/ + OCClientContextDeleter deleteCallback; /**< Pointer to delete callback.**/ size_t numOfResults; /**< Number of results in result array.**/ size_t sizeOfResArray; bool hasError; @@ -198,7 +203,7 @@ static void registerResultForCredProvisioning(CredentialData_t *credData, static OCStackApplicationResult provisionCredentialCB2(void *ctx, OCDoHandle UNUSED, OCClientResponse *clientResponse) { - VERIFY_NON_NULL(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); CredentialData_t *credData = (CredentialData_t *) ctx; (void)UNUSED; @@ -249,7 +254,7 @@ static OCStackApplicationResult provisionCredentialCB2(void *ctx, OCDoHandle UNU static OCStackApplicationResult provisionCredentialCB1(void *ctx, OCDoHandle UNUSED, OCClientResponse *clientResponse) { - VERIFY_NON_NULL(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); (void)UNUSED; CredentialData_t* credData = (CredentialData_t*) ctx; OICFree(credData->credInfoFirst); @@ -395,69 +400,6 @@ static void registerResultForCertProvisioning(CertData_t *certData, ++(certData->numOfResults); } -/** - * Internal function for handling credential generation and sending cretificate credential. - * - * @param[in] cred Instance of cred resource. - * @param[in] deviceInfo information about device to which credential is to be provisioned. - * @param[in] responseHandler callbak called by OC stack when request API receives response. - * @return OC_STACK_OK in case of success and other value otherwise. - */ -static OCStackResult provisionCertCred(const OicSecCred_t *cred, - const OCProvisionDev_t *deviceInfo, CertData_t *certData, - OCClientResponseHandler responseHandler) -{ - OCSecurityPayload* secPayload = (OCSecurityPayload*)OICCalloc(1, sizeof(OCSecurityPayload)); - if(!secPayload) - { - OIC_LOG(ERROR, TAG, "Failed to memory allocation"); - return OC_STACK_NO_MEMORY; - } - secPayload->base.type = PAYLOAD_TYPE_SECURITY; - int secureFlag = 0; - OCStackResult res = CredToCBORPayload(cred, &secPayload->securityData, - &secPayload->payloadSize, secureFlag); - - if ((OC_STACK_OK != res) || (NULL == secPayload->securityData)) - { - OICFree(secPayload); - OIC_LOG(ERROR, TAG, "Failed to CredToCBORPayload"); - return OC_STACK_NO_MEMORY; - } - - OIC_LOG(DEBUG, TAG, "Created payload for Cred:"); - OIC_LOG_BUFFER(DEBUG, TAG, secPayload->securityData, secPayload->payloadSize); - char query[MAX_URI_LENGTH + MAX_QUERY_LENGTH] = {0}; - if(!PMGenerateQuery(true, - deviceInfo->endpoint.addr, - deviceInfo->securePort, - deviceInfo->connType, - query, sizeof(query), OIC_RSRC_CRED_URI)) - { - OIC_LOG(ERROR, TAG, "DeviceDiscoveryHandler : Failed to generate query"); - OCPayloadDestroy((OCPayload *)secPayload); - return OC_STACK_ERROR; - } - OIC_LOG_V(DEBUG, TAG, "Query=%s", query); - - OCCallbackData cbData = {.context=NULL, .cb=NULL, .cd=NULL}; - cbData.cb = responseHandler; - cbData.context = (void *) certData; - cbData.cd = NULL; - - OCDoHandle handle = NULL; - OCMethod method = OC_REST_POST; - OCStackResult ret = OCDoResource(&handle, method, query, 0, (OCPayload*)secPayload, - deviceInfo->connType, OC_HIGH_QOS, &cbData, NULL, 0); - OIC_LOG_V(INFO, TAG, "OCDoResource::Certificate provisioning returned : %d",ret); - if (ret != OC_STACK_OK) - { - OIC_LOG(ERROR, TAG, "OCStack resource error"); - } - - return ret; -} - OCStackResult SRPRegisterTrustCertChainNotifier(void *ctx, TrustCertChainChangeCB callback) { if (g_trustCertChainNotifier.callback) @@ -490,12 +432,12 @@ void SRPRemoveTrustCertChainNotifier() static OCStackApplicationResult provisionCertCB(void *ctx, OCDoHandle UNUSED, OCClientResponse *clientResponse) { - VERIFY_NON_NULL(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); CertData_t *certData = (CertData_t *) ctx; (void)UNUSED; OCProvisionResultCB resultCallback = certData->resultCallback; - OIC_LOG(INFO, TAG, "provisionCertCred called"); + OIC_LOG(INFO, TAG, "provisionCertCB called"); if (clientResponse) { if(OC_STACK_RESOURCE_CHANGED == clientResponse->result) @@ -524,9 +466,9 @@ OCStackResult SRPProvisionTrustCertChain(void *ctx, OicSecCredType_t type, uint1 const OCProvisionDev_t *selectedDeviceInfo, OCProvisionResultCB resultCallback) { OIC_LOG(INFO, TAG, "In SRPProvisionTrustCertChain"); - VERIFY_NON_NULL(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); - if (SIGNED_ASYMMETRIC_KEY != type || NULL == type) + VERIFY_NON_NULL_RET(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); + if (SIGNED_ASYMMETRIC_KEY != type) { OIC_LOG(INFO, TAG, "Invalid key type"); return OC_STACK_INVALID_PARAM; @@ -610,7 +552,7 @@ OCStackResult SRPProvisionTrustCertChain(void *ctx, OicSecCredType_t type, uint1 OICFree(certData); } - VERIFY_SUCCESS(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); + VERIFY_SUCCESS_RET(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); return OC_STACK_OK; } @@ -618,36 +560,52 @@ OCStackResult SRPSaveTrustCertChain(uint8_t *trustCertChain, size_t chainSize, OicEncodingType_t encodingType, uint16_t *credId) { OIC_LOG(DEBUG, TAG, "IN SRPSaveTrustCertChain"); - VERIFY_NON_NULL(TAG, trustCertChain, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, credId, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, trustCertChain, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, credId, ERROR, OC_STACK_INVALID_PARAM); + + // It is temporary condition. + // 6144(6K) = 6 * 1024, generally, one Cert is less than 2k. + // because we use 3 Cert, 6K is enough size for saving Certs. + if (6144 <= chainSize) + { + OIC_LOG_V(ERROR, TAG, "chainSize(%u) is invalid", chainSize); + return OC_STACK_INVALID_PARAM; + } OCStackResult res = OC_STACK_ERROR; OicSecCred_t *cred = (OicSecCred_t *)OICCalloc(1, sizeof(*cred)); - VERIFY_NON_NULL(TAG, cred, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, cred, ERROR, OC_STACK_NO_MEMORY); - memcpy(cred->subject.id, &WILDCARD_SUBJECT_ID, WILDCARD_SUBJECT_ID_LEN); + res = GetDoxmDeviceID(&cred->subject); + if (OC_STACK_OK != res) + { + OIC_LOG(ERROR, TAG, "Cann't get the device id(GetDoxmDeviceID)"); + DeleteCredList(cred); + return res; + } cred->credUsage= (char *)OICCalloc(1, strlen(TRUST_CA)+1 ); - VERIFY_NON_NULL(TAG, cred->credUsage, ERROR, OC_STACK_NO_MEMORY); - OICStrcpy(cred->credUsage, strlen(TRUST_CA) + 1, TRUST_CA) ; + VERIFY_NON_NULL_RET(TAG, cred->credUsage, ERROR, OC_STACK_NO_MEMORY); + OICStrcpy(cred->credUsage, strlen(TRUST_CA) + 1, TRUST_CA); cred->credType = SIGNED_ASYMMETRIC_KEY; if (encodingType == OIC_ENCODING_PEM) { cred->optionalData.data = (uint8_t *)OICCalloc(1, chainSize + 1); - VERIFY_NON_NULL(TAG, cred->optionalData.data, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, cred->optionalData.data, ERROR, OC_STACK_NO_MEMORY); cred->optionalData.len = chainSize + 1; } else { cred->optionalData.data = (uint8_t *)OICCalloc(1, chainSize); - VERIFY_NON_NULL(TAG, cred->optionalData.data, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, cred->optionalData.data, ERROR, OC_STACK_NO_MEMORY); cred->optionalData.len = chainSize; } memcpy(cred->optionalData.data, trustCertChain, chainSize); cred->optionalData.encoding = encodingType; + cred->optionalData.revstat = false; res = AddCredential(cred); if(res != OC_STACK_OK) @@ -660,9 +618,9 @@ OCStackResult SRPSaveTrustCertChain(uint8_t *trustCertChain, size_t chainSize, if (g_trustCertChainNotifier.callback) { uint8_t *certChain = (uint8_t*)OICCalloc(1, sizeof(uint8_t) * chainSize); - VERIFY_NON_NULL(TAG, certChain, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, certChain, ERROR, OC_STACK_NO_MEMORY); memcpy(certChain, trustCertChain, chainSize); - g_trustCertChainNotifier.callback(g_trustCertChainNotifier.context, credId, + g_trustCertChainNotifier.callback(g_trustCertChainNotifier.context, *credId, certChain, chainSize); OICFree(certChain); } @@ -673,42 +631,46 @@ OCStackResult SRPSaveTrustCertChain(uint8_t *trustCertChain, size_t chainSize, } -OCStackResult SRPSaveOwnCertChain(OicSecCert_t * cert, OicSecKey_t * key, uint16_t *credId) +OCStackResult SRPSaveOwnCertChain(OicSecKey_t * cert, OicSecKey_t * key, uint16_t *credId) { OIC_LOG_V(DEBUG, TAG, "In %s", __func__); - VERIFY_NON_NULL(TAG, cert, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, cert->data, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, key, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, key->data, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, credId, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, cert, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, cert->data, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, key, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, key->data, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, credId, ERROR, OC_STACK_INVALID_PARAM); OCStackResult res = OC_STACK_ERROR; OicSecCred_t *cred = (OicSecCred_t *)OICCalloc(1, sizeof(*cred)); - VERIFY_NON_NULL(TAG, cred, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, cred, ERROR, OC_STACK_NO_MEMORY); OIC_LOG_V(DEBUG, TAG, "IN: %s", __func__); - if (OC_STACK_OK != GetDoxmDeviceID(&cred->subject)) + res = GetDoxmDeviceID(&cred->subject); + if (OC_STACK_OK != res) { OIC_LOG(ERROR, TAG, "Cann't get the device id(GetDoxmDeviceID)"); + DeleteCredList(cred); + return res; } cred->credUsage= (char *)OICCalloc(1, strlen(PRIMARY_CERT)+1 ); - VERIFY_NON_NULL(TAG, cred->credUsage, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, cred->credUsage, ERROR, OC_STACK_NO_MEMORY); OICStrcpy(cred->credUsage, strlen(PRIMARY_CERT) + 1, PRIMARY_CERT) ; cred->credType = SIGNED_ASYMMETRIC_KEY; - OicSecCert_t *publicData = &cred->publicData; + OicSecKey_t *publicData = &cred->publicData; publicData->data = (uint8_t *)OICCalloc(1, cert->len); - VERIFY_NON_NULL(TAG, publicData->data, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, publicData->data, ERROR, OC_STACK_NO_MEMORY); memcpy(publicData->data, cert->data, cert->len); publicData->len = cert->len; + publicData->encoding = cert->encoding; OicSecKey_t *privateData = &cred->privateData; privateData->data = (uint8_t *)OICCalloc(1, key->len); - VERIFY_NON_NULL(TAG, privateData->data, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, privateData->data, ERROR, OC_STACK_NO_MEMORY); memcpy(privateData->data, key->data, key->len); privateData->len = key->len; privateData->encoding = key->encoding; @@ -732,10 +694,10 @@ OCStackResult SRPProvisionCredentials(void *ctx, OicSecCredType_t type, size_t k const OCProvisionDev_t *pDev2, OCProvisionResultCB resultCallback) { - VERIFY_NON_NULL(TAG, pDev1, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, pDev1, ERROR, OC_STACK_INVALID_PARAM); if (SYMMETRIC_PAIR_WISE_KEY == type) { - VERIFY_NON_NULL(TAG, pDev2, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, pDev2, ERROR, OC_STACK_INVALID_PARAM); } if (!resultCallback) { @@ -794,7 +756,7 @@ OCStackResult SRPProvisionCredentials(void *ctx, OicSecCredType_t type, size_t k OCStackResult res = PMGeneratePairWiseCredentials(type, keySize, &provTooldeviceID, &firstDevice->doxm->deviceID, &secondDevice->doxm->deviceID, &firstCred, &secondCred); - VERIFY_SUCCESS(TAG, (res==OC_STACK_OK), ERROR, OC_STACK_ERROR); + VERIFY_SUCCESS_RET(TAG, (res==OC_STACK_OK), ERROR, OC_STACK_ERROR); OIC_LOG(INFO, TAG, "Credentials generated successfully"); CredentialData_t *credData = (CredentialData_t *) OICCalloc(1, sizeof(CredentialData_t)); @@ -834,7 +796,7 @@ OCStackResult SRPProvisionCredentials(void *ctx, OicSecCredType_t type, size_t k OICFree(credData); } OIC_LOG_V(INFO, TAG, "provisionCredentials returned: %d",res); - VERIFY_SUCCESS(TAG, (res==OC_STACK_OK), ERROR, OC_STACK_ERROR); + VERIFY_SUCCESS_RET(TAG, (res==OC_STACK_OK), ERROR, OC_STACK_ERROR); return res; } default: @@ -874,7 +836,7 @@ static OCStackApplicationResult SRPProvisionACLCB(void *ctx, OCDoHandle UNUSED, { OIC_LOG_V(INFO, TAG, "Inside SRPProvisionACLCB."); (void)UNUSED; - VERIFY_NON_NULL(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); ACLData_t *aclData = (ACLData_t*)ctx; OCProvisionResultCB resultCallback = aclData->resultCallback; @@ -904,9 +866,9 @@ static OCStackApplicationResult SRPProvisionACLCB(void *ctx, OCDoHandle UNUSED, OCStackResult SRPProvisionACL(void *ctx, const OCProvisionDev_t *selectedDeviceInfo, OicSecAcl_t *acl, OCProvisionResultCB resultCallback) { - VERIFY_NON_NULL(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, acl, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); + VERIFY_NON_NULL_RET(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, acl, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); // if rowneruuid is empty, set it to device ID OicUuid_t emptyOwner = {.id = {0} }; @@ -991,14 +953,14 @@ OCStackResult SRPProvisionACL(void *ctx, const OCProvisionDev_t *selectedDeviceI OICFree(aclData->resArr); OICFree(aclData); } - VERIFY_SUCCESS(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); + VERIFY_SUCCESS_RET(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); return OC_STACK_OK; } OCStackResult SRPSaveACL(const OicSecAcl_t *acl) { OIC_LOG(DEBUG, TAG, "IN SRPSaveACL"); - VERIFY_NON_NULL(TAG, acl, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, acl, ERROR, OC_STACK_INVALID_PARAM); OCStackResult res = InstallACL(acl); @@ -1034,7 +996,7 @@ static OCStackApplicationResult SRPProvisionDirectPairingCB(void *ctx, OCDoHandl { OIC_LOG_V(INFO, TAG, "Inside SRPProvisionDirectPairingCB."); (void)UNUSED; - VERIFY_NON_NULL(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); PconfData_t *pconfData = (PconfData_t*)ctx; OCProvisionResultCB resultCallback = pconfData->resultCallback; @@ -1064,9 +1026,9 @@ static OCStackApplicationResult SRPProvisionDirectPairingCB(void *ctx, OCDoHandl OCStackResult SRPProvisionDirectPairing(void *ctx, const OCProvisionDev_t *selectedDeviceInfo, OicSecPconf_t *pconf, OCProvisionResultCB resultCallback) { - VERIFY_NON_NULL(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, pconf, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); + VERIFY_NON_NULL_RET(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, pconf, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); // check direct-pairing capability if (true != selectedDeviceInfo->doxm->dpc) @@ -1150,7 +1112,7 @@ OCStackResult SRPProvisionDirectPairing(void *ctx, const OCProvisionDev_t *selec OICFree(pconfData->resArr); OICFree(pconfData); } - VERIFY_SUCCESS(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); + VERIFY_SUCCESS_RET(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); return OC_STACK_OK; } @@ -1223,9 +1185,9 @@ static OCStackResult SendDeleteCredentialRequest(void* ctx, char reqBuf[MAX_URI_LENGTH + MAX_QUERY_LENGTH] = {0}; int snRet = 0; //coaps://0.0.0.0:5684/oic/sec/cred?subjectid=(Canonical ENCODED UUID) - char *srpUri = SRP_FORM_DELETE_CREDENTIAL; + const char *srpUri = SRP_FORM_DELETE_CREDENTIAL; #ifdef __WITH_TLS__ - if(CA_ADAPTER_TCP == destDev->endpoint.adapter) + if(OC_ADAPTER_TCP == destDev->endpoint.adapter) { srpUri = SRP_FORM_DELETE_CREDENTIAL_TCP; } @@ -1349,7 +1311,7 @@ static OCStackApplicationResult SRPUnlinkDevice2CB(void *unlinkCtx, OCDoHandle h { (void) handle; OIC_LOG(DEBUG, TAG, "IN SRPUnlinkDevice2CB"); - VERIFY_NON_NULL(TAG, unlinkCtx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, unlinkCtx, ERROR, OC_STACK_DELETE_TRANSACTION); UnlinkData_t* unlinkData = (UnlinkData_t*)unlinkCtx; if (clientResponse) @@ -1412,7 +1374,7 @@ static OCStackApplicationResult SRPUnlinkDevice1CB(void *unlinkCtx, OCDoHandle h OCClientResponse *clientResponse) { OIC_LOG_V(INFO, TAG, "Inside SRPUnlinkDevice1CB "); - VERIFY_NON_NULL(TAG, unlinkCtx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, unlinkCtx, ERROR, OC_STACK_DELETE_TRANSACTION); UnlinkData_t* unlinkData = (UnlinkData_t*)unlinkCtx; (void) handle; @@ -1518,7 +1480,7 @@ OCStackResult SRPUnlinkDevices(void* ctx, } UnlinkData_t* unlinkData = (UnlinkData_t*)OICCalloc(1, sizeof(UnlinkData_t)); - VERIFY_NON_NULL(TAG, unlinkData, ERROR, OC_STACK_NO_MEMORY); + VERIFY_NON_NULL_RET(TAG, unlinkData, ERROR, OC_STACK_NO_MEMORY); //Initialize unlink data unlinkData->ctx = ctx; @@ -1652,7 +1614,7 @@ static OCStackApplicationResult SRPRemoveDeviceCB(void *delDevCtx, OCDoHandle ha //Save the deleted status in delDevCtx (void)handle; OIC_LOG_V(INFO, TAG, "Inside SRPRemoveDeviceCB."); - VERIFY_NON_NULL(TAG, delDevCtx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, delDevCtx, ERROR, OC_STACK_DELETE_TRANSACTION); OCStackResult res = OC_STACK_ERROR; RemoveData_t* removeData = (RemoveData_t*)delDevCtx; @@ -1731,12 +1693,12 @@ static OCStackApplicationResult SRPSyncDeviceCredCB(void *delDevCtx, OCDoHandle //Save the deleted status in delDevCtx (void)handle; OIC_LOG_V(INFO, TAG, "Inside SRPSyncDeviceCredCB."); - VERIFY_NON_NULL(TAG, delDevCtx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, delDevCtx, ERROR, OC_STACK_DELETE_TRANSACTION); OCStackResult res = OC_STACK_ERROR; RemoveData_t* removeData = (RemoveData_t*)delDevCtx; OCProvisionDev_t * pTargetDev = PMCloneOCProvisionDev(removeData->revokeTargetDev); - OCProvisionResultCB resultCallback = removeData->resultCallback; + OCClientContextDeleter deleteCallback = removeData->deleteCallback; if (clientResponse) { OicUuid_t revDevUuid = {.id={0}}; @@ -1791,7 +1753,7 @@ static OCStackApplicationResult SRPSyncDeviceCredCB(void *delDevCtx, OCDoHandle OIC_LOG(ERROR, TAG, "SRPSyncDevice received Null clientResponse"); } - SRPResetDevice(pTargetDev, resultCallback); + SRPResetDevice(pTargetDev, deleteCallback); return OC_STACK_DELETE_TRANSACTION; } @@ -1805,9 +1767,12 @@ static OCStackApplicationResult SRPSyncDeviceCredCB(void *delDevCtx, OCDoHandle * @return OC_STACK_DELETE_TRANSACTION to delete the transaction * and OC_STACK_KEEP_TRANSACTION to keep it. */ -static OCStackApplicationResult SRPSyncDeviceACLCB(void *ctx, OCDoHandle handle, +static OCStackApplicationResult SRPSyncDeviceACLCB(void *ctx, OCDoHandle UNUSED, OCClientResponse *clientResponse) { + (void)ctx; + (void)UNUSED; + (void)clientResponse; return OC_STACK_DELETE_TRANSACTION; } @@ -1815,15 +1780,16 @@ static OCStackApplicationResult SRPSyncDeviceACLCB(void *ctx, OCDoHandle handle, * Callback handler of device remote reset. * * @param[in] ctx ctx value passed to callback from calling function. - * @param[in] handle handle to an invocation + * @param[in] UNUSED handle to an invocation * @param[in] clientResponse Response from queries to remote servers. * @return OC_STACK_DELETE_TRANSACTION to delete the transaction * and OC_STACK_KEEP_TRANSACTION to keep it. */ -static OCStackApplicationResult SRPResetDeviceCB(void *ctx, OCDoHandle handle, +static OCStackApplicationResult SRPResetDeviceCB(void *ctx, OCDoHandle UNUSED, OCClientResponse *clientResponse) { OIC_LOG(DEBUG, TAG, "IN SRPResetDeviceCB"); + (void)UNUSED; if(OC_STACK_OK == clientResponse->result) { OIC_LOG(DEBUG, TAG, "Change Target Device Pstat Cm SUCCEEDED"); @@ -1881,7 +1847,7 @@ error: } static OCStackResult GetListofDevToReqDeleteCred(const OCProvisionDev_t* pRevokeTargetDev, - OCProvisionDev_t* pOwnedDevList, + const OCProvisionDev_t* pOwnedDevList, OCUuidList_t* pLinkedUuidList, OCProvisionDev_t** ppLinkedDevList, size_t *numOfLinkedDev) @@ -1902,13 +1868,14 @@ static OCStackResult GetListofDevToReqDeleteCred(const OCProvisionDev_t* pRevoke if (OC_STACK_OK != res) { OIC_LOG(FATAL, TAG, "PDMSetLinkStale() FAIL: PDB is an obsolete one."); - return OC_STACK_INCONSISTENT_DB; + return OC_STACK_SVR_DB_NOT_EXIST; } if (pOwnedDevList) { // If this linked device is alive (power-on), add the deivce to the list. - OCProvisionDev_t *curDev = NULL, *tmpDev = NULL; + const OCProvisionDev_t *curDev = NULL; + const OCProvisionDev_t *tmpDev = NULL; LL_FOREACH_SAFE(pOwnedDevList, curDev, tmpDev) { if (memcmp(curDev->doxm->deviceID.id, curUuid->dev.id, sizeof(curUuid->dev.id)) == 0) @@ -2389,7 +2356,7 @@ error: * OC_STACK_CONTINUE means operation is success but no request is need to be initiated. */ OCStackResult SRPResetDevice(const OCProvisionDev_t* pTargetDev, - OCProvisionResultCB resultCallback) + OCClientContextDeleter deleteCallback) { OIC_LOG(INFO, TAG, "IN SRPResetDevice"); if (!pTargetDev) @@ -2397,7 +2364,7 @@ OCStackResult SRPResetDevice(const OCProvisionDev_t* pTargetDev, OIC_LOG(INFO, TAG, "SRPResetDevice : NULL parameters"); return OC_STACK_INVALID_PARAM; } - if (!resultCallback) + if (!deleteCallback) { OIC_LOG(INFO, TAG, "SRPResetDevice : NULL Callback"); return OC_STACK_INVALID_CALLBACK; @@ -2472,7 +2439,7 @@ OCStackResult SRPResetDevice(const OCProvisionDev_t* pTargetDev, } cbData.cb = &SRPResetDeviceCB; cbData.context = (void *) targetDev; - cbData.cd = NULL; + cbData.cd = deleteCallback; OIC_LOG(DEBUG, TAG, "Sending PSTAT info to resource server"); res = OCDoResource(&handle, method, query, &targetDev->endpoint, (OCPayload *)secPayload, @@ -2517,7 +2484,7 @@ static OCStackApplicationResult SRPGetCredResourceCB(void *ctx, OCDoHandle UNUSE { OIC_LOG_V(INFO, TAG, "Inside SRPGetCredResourceCB."); (void)UNUSED; - VERIFY_NON_NULL(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); GetSecData_t *GetSecData = (GetSecData_t*)ctx; OCProvisionResultCB resultCallback = GetSecData->resultCallback; @@ -2529,6 +2496,8 @@ static OCStackApplicationResult SRPGetCredResourceCB(void *ctx, OCDoHandle UNUSE size_t size = ((OCSecurityPayload*)clientResponse->payload)->payloadSize; OIC_LOG_BUFFER(DEBUG, TAG, payload, size); + (void)size; + (void)payload; registerResultForGetCredResourceCB(GetSecData, OC_STACK_OK); ((OCProvisionResultCB)(resultCallback))(GetSecData->ctx, GetSecData->numOfResults, @@ -2555,8 +2524,8 @@ static OCStackApplicationResult SRPGetCredResourceCB(void *ctx, OCDoHandle UNUSE OCStackResult SRPGetCredResource(void *ctx, const OCProvisionDev_t *selectedDeviceInfo, OCProvisionResultCB resultCallback) { - VERIFY_NON_NULL(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); + VERIFY_NON_NULL_RET(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); char query[MAX_URI_LENGTH + MAX_QUERY_LENGTH] = {0}; if(!PMGenerateQuery(true, @@ -2604,7 +2573,7 @@ OCStackResult SRPGetCredResource(void *ctx, const OCProvisionDev_t *selectedDevi OICFree(GetSecData->resArr); OICFree(GetSecData); } - VERIFY_SUCCESS(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); + VERIFY_SUCCESS_RET(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); OIC_LOG(DEBUG, TAG, "OUT SRPGetCredResource"); return OC_STACK_OK; @@ -2638,7 +2607,7 @@ static OCStackApplicationResult SRPGetACLResourceCB(void *ctx, OCDoHandle UNUSED { OIC_LOG_V(INFO, TAG, "Inside SRPGetACLResourceCB."); (void)UNUSED; - VERIFY_NON_NULL(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); + VERIFY_NON_NULL_RET(TAG, ctx, ERROR, OC_STACK_DELETE_TRANSACTION); GetSecData_t *GetSecData = (GetSecData_t*)ctx; OCProvisionResultCB resultCallback = GetSecData->resultCallback; @@ -2650,6 +2619,8 @@ static OCStackApplicationResult SRPGetACLResourceCB(void *ctx, OCDoHandle UNUSED size_t size = ((OCSecurityPayload*)clientResponse->payload)->payloadSize; OIC_LOG_BUFFER(DEBUG, TAG, payload, size); + (void)payload; + (void)size; registerResultForGetACLResourceCB(GetSecData, OC_STACK_OK); ((OCProvisionResultCB)(resultCallback))(GetSecData->ctx, GetSecData->numOfResults, @@ -2676,8 +2647,8 @@ static OCStackApplicationResult SRPGetACLResourceCB(void *ctx, OCDoHandle UNUSED OCStackResult SRPGetACLResource(void *ctx, const OCProvisionDev_t *selectedDeviceInfo, OCProvisionResultCB resultCallback) { - VERIFY_NON_NULL(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); - VERIFY_NON_NULL(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); + VERIFY_NON_NULL_RET(TAG, selectedDeviceInfo, ERROR, OC_STACK_INVALID_PARAM); + VERIFY_NON_NULL_RET(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); char query[MAX_URI_LENGTH + MAX_QUERY_LENGTH] = {0}; if(!PMGenerateQuery(true, @@ -2725,7 +2696,7 @@ OCStackResult SRPGetACLResource(void *ctx, const OCProvisionDev_t *selectedDevic OICFree(GetSecData->resArr); OICFree(GetSecData); } - VERIFY_SUCCESS(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); + VERIFY_SUCCESS_RET(TAG, (OC_STACK_OK == ret), ERROR, OC_STACK_ERROR); OIC_LOG(DEBUG, TAG, "OUT SRPGetACLResource"); return OC_STACK_OK;