From 64ad7d86766a619c92e276d1d7ae35d477f09785 Mon Sep 17 00:00:00 2001 From: Dmitriy Zhuravlev Date: Thu, 24 Mar 2016 15:45:05 +0200 Subject: [PATCH] Fix PKIX provision There is an issue with payload converter Change-Id: I6377cecd53b52986515fee7f7022680099cf05be Signed-off-by: Dmitriy Zhuravlev Signed-off-by: i.pazderskyy Signed-off-by: Dmitriy Zhuravlev Reviewed-on: https://gerrit.iotivity.org/gerrit/6291 Tested-by: jenkins-iotivity --- .../csdk/connectivity/inc/pkix/crypto_adapter.h | 8 +- .../provisioning/ck_manager/sample/Door_sample.cpp | 3 + .../ck_manager/sample/oic_svr_db_door.dat | Bin 705 -> 758 bytes .../ck_manager/sample/oic_svr_db_door.json | 16 +- .../ck_manager/sample/oic_svr_db_light.dat | Bin 705 -> 758 bytes .../ck_manager/sample/oic_svr_db_light.json | 16 +- .../ck_manager/sample/oic_svr_db_pt.dat | Bin 634 -> 677 bytes .../ck_manager/sample/oic_svr_db_pt.json | 19 ++- .../include/internal/secureresourceprovider.h | 15 +- .../provisioning/src/credentialgenerator.c | 10 +- .../provisioning/src/secureresourceprovider.c | 10 +- resource/csdk/security/src/credresource.c | 10 +- resource/csdk/security/src/crlresource.c | 161 ++++++++++----------- 13 files changed, 137 insertions(+), 131 deletions(-) diff --git a/resource/csdk/connectivity/inc/pkix/crypto_adapter.h b/resource/csdk/connectivity/inc/pkix/crypto_adapter.h index 3fda0cf..3f2b93c 100644 --- a/resource/csdk/connectivity/inc/pkix/crypto_adapter.h +++ b/resource/csdk/connectivity/inc/pkix/crypto_adapter.h @@ -52,10 +52,10 @@ extern "C" { */ #undef GET_SHA_256 #define GET_SHA_256(tbs, sha256) do{ \ - SHA256_CTX ctx256; \ - SHA256_Init(&ctx256); \ - SHA256_Update(&ctx256, tbs.data, tbs.len); \ - SHA256_Final(sha256, &ctx256); \ + DTLS_SHA256_CTX ctx256; \ + DTLS_SHA256_Init(&ctx256); \ + DTLS_SHA256_Update(&ctx256, tbs.data, tbs.len); \ + DTLS_SHA256_Final(sha256, &ctx256); \ }while(0) /**@def CHECK_SIGN(structure, caPubKey) diff --git a/resource/csdk/security/provisioning/ck_manager/sample/Door_sample.cpp b/resource/csdk/security/provisioning/ck_manager/sample/Door_sample.cpp index d75863d..03567eb 100755 --- a/resource/csdk/security/provisioning/ck_manager/sample/Door_sample.cpp +++ b/resource/csdk/security/provisioning/ck_manager/sample/Door_sample.cpp @@ -437,6 +437,9 @@ void SendGetRequest() OCStackResult ret; OIC_LOG(INFO, TAG, "Send Get REQ to Light server"); + //select ciphersuite for certificates + CASelectCipherSuite(TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8); + initAddress(); char szQueryUri[64] = { '\0'}; diff --git a/resource/csdk/security/provisioning/ck_manager/sample/oic_svr_db_door.dat b/resource/csdk/security/provisioning/ck_manager/sample/oic_svr_db_door.dat index d69de2a7bc9a0301683ed976b375bb48e5d71946..0572a8c1ed759bcaf88bc43095d62ba8d901ab96 100644 GIT binary patch literal 758 zcmb7A%TB{E5bQ(ZOE@7#sYvRoe^PFV*BjL#jxDbP?GXeY!b5@^H?I6t?_f7=X;DCQ z4_?bNJD!~n$f3IEzdaVdOL7k)2c+AlOKNzD;F?B?{7hOT-B^#@J&U=;VjgP=v3~`N zRmQE$xGb_3E4NrII#9Di-O?a+a@3k*ygb%`2O_0Gt0a-s_25^N_pOmuh7e+*7wSN! zCDiMG0>O~WT?eDuF?>9K;$XY*Zwr3-Fpj-VPD-nv6sVWQ&H$YjxBbyZx9AnpI-td2-5%n literal 705 zcmb7=!A`?442HW+;z>9mRjp{3X>T%aYaEBBTAC=%#yAeagTM}mXW+m~?GEWmJ2rvD ze261|vi<-5fC3gbgY}CHS&@Gh1t2|aZ)wRZ1YcY!hh&y6R3EpZbSTTjC`dw;J3r@2 z&f9X;l@oCcY!CdsMLNZLk8PNTHDK3TS#(+vDN_%B74y_?ZMz8}5oWEs?v~a2$qlpQ z3x5n3Jq*VGLf}r&VI4T^ef|)8Q95&1qf=si$#N!{oLt9w&c^YCv1!b*@EeE7r+J>G zS&DmUv(>9mWbCdKxKe=s?dG6|-0O%NJ>sM{qcgXQ=4i9`wRX90@CB;? g29mRh_hwvNsvGHI7SDHBA&}V;qOzL0|{OGjQOgc88>;g-swa zAL8i$Wc#<@A&2^Uw0SOkmgJs94oLUA8(Q%S!Q~gyBI%X&>cdWy7K<{`5)!X+>y}&= z%TBI(IT44z48YwPq+_gFYSp|_na6HwS4{|s&>PiPcdThU2WH6S z?hw`k^o#$6z#gIRabR)S^M~29((2m=trVMc25inUb`@u7n#SxhW3d-z{ud&hr|E2p zt+mDaMM%4mQrpRi(?vMi;_Wpg+D1i4SVutMMi}-Gdnu$S ev{ku_PBd5fU4~mszakF#=;_&s=0OP09u(9#5!499td-+9j1Z2tN{>fGwATHQ1?AQ7ILz zH_!5$dH!ZTp@8~obp2dD2Y`=+ZY_N~gGRgy^RW_%EOvjtOK03jqouhalV zvnw#<3b$AB_oK?{`vz^;&FYL@vXlvy#SGIlX0thqS;nUR7EYR_>GT4-yv6!WNYduJ z5_l&8|L>pAe3b9!pvK&(h-)?Bq$WoL^Z_DFy!dzzLJv_H1nUS0+z7)k;&iCmPjTcP NdW@5~K^XY@`2`(h>DvGR literal 634 zcmb7=L2kk@5JdxArK?I&iZDjG3EdHU#>5ehEsvpe2~rQzvZ#87E_$i5Zk?c@f{+T{ zjP*wU&!72{gkP8+?2xiE&Ae?FM_M`bMiXgU_b=w!9s-zFM<_F}YjZlXKK2}iB6Q8a z)}^;kHF^!}J3i!$1J6^AjHP@$;VIAgDE^wqa>hmv*cwe&@1V)LeF?bI68}?A#?dIM zg*1H;Od_lq2r`?&mD4*tG%HR&Kbk_DL^TB$i6j|%*z5s&4H}g7rU=Q6;i|aHRk!HU L+!$VhlixqT#tzpe diff --git a/resource/csdk/security/provisioning/ck_manager/sample/oic_svr_db_pt.json b/resource/csdk/security/provisioning/ck_manager/sample/oic_svr_db_pt.json index a4677e6..b529754 100644 --- a/resource/csdk/security/provisioning/ck_manager/sample/oic_svr_db_pt.json +++ b/resource/csdk/security/provisioning/ck_manager/sample/oic_svr_db_pt.json @@ -3,7 +3,7 @@ "aclist":{ "aces":[ { - "subject": "*", + "subjectuuid": "*", "resources": [ { "href": "/oic/res", @@ -34,7 +34,7 @@ "permission": 2 }, { - "subject": "*", + "subjectuuid": "*", "resources": [ { "href": "/oic/sec/doxm", @@ -51,26 +51,25 @@ } ] }, - "rownerid" : "61646D69-6E44-6576-6963-655555494430" + "rowneruuid" : "61646D69-6E44-6576-6963-655555494430" }, "pstat": { "isop": true, "cm": 2, "tm": 0, "om": 3, - "sm": [3], - "deviceid": "61646D69-6E44-6576-6963-655575696430", - "rownerid": "61646D69-6E44-6576-6963-655575696430" + "sm": 3, + "deviceuuid": "61646D69-6E44-6576-6963-655575696430", + "rowneruuid": "61646D69-6E44-6576-6963-655575696430" }, "doxm": { "oxms": [0], "oxmsel": 0, "sct": 1, "owned": true, - "didformat": 0, - "deviceid": "61646D69-6E44-6576-6963-655575696430", + "deviceuuid": "61646D69-6E44-6576-6963-655575696430", "dpc": false, - "devownerid": "61646D69-6E44-6576-6963-655575696430", - "rownerid": "61646D69-6E44-6576-6963-655575696430" + "devowneruuid": "61646D69-6E44-6576-6963-655575696430", + "rowneruuid": "61646D69-6E44-6576-6963-655575696430" } } diff --git a/resource/csdk/security/provisioning/include/internal/secureresourceprovider.h b/resource/csdk/security/provisioning/include/internal/secureresourceprovider.h index df55c0b..cc1f689 100644 --- a/resource/csdk/security/provisioning/include/internal/secureresourceprovider.h +++ b/resource/csdk/security/provisioning/include/internal/secureresourceprovider.h @@ -41,7 +41,20 @@ extern "C" */ OCStackResult SRPProvisionACL(void *ctx, const OCProvisionDev_t *selectedDeviceInfo, OicSecAcl_t *acl, OCProvisionResultCB resultCallback); - + +#ifdef __WITH_X509__ +/** + * API to send CRL information to resource. + * + * @param[in] selectedDeviceInfo Selected target device. + * @param[in] crl CRL to provision. + * @param[in] resultCallback callback provided by API user, callback will be called when + * provisioning request recieves a response from resource server. + * @return OC_STACK_OK in case of success and other value otherwise. + */ +OCStackResult SRPProvisionCRL(void *ctx, const OCProvisionDev_t *selectedDeviceInfo, + OicSecCrl_t *crl, OCProvisionResultCB resultCallback); +#endif // __WITH_X509__ /** * API to send Direct-Pairing Configuration to a device. * diff --git a/resource/csdk/security/provisioning/src/credentialgenerator.c b/resource/csdk/security/provisioning/src/credentialgenerator.c index 456fc7c..7093369 100644 --- a/resource/csdk/security/provisioning/src/credentialgenerator.c +++ b/resource/csdk/security/provisioning/src/credentialgenerator.c @@ -177,18 +177,18 @@ static OCStackResult GenerateCertificateAndKeys(const OicUuid_t * subject, OicSe numCert ++; uint32_t len = 0; - for (size_t i = 0; i < numCert; ++i) + for (size_t i = 0; i < numCert; i++) { - certificateChain->data = (uint8_t *) OICRealloc(certificateChain->data, len + cert[i].len + CERT_LEN_PREFIX); + certificateChain->data = (uint8_t *) OICRealloc(certificateChain->data, + len + cert[i].len + CERT_LEN_PREFIX); if (NULL == certificateChain->data) { OIC_LOG(ERROR, TAG, "Error while memory allocation"); return OC_STACK_ERROR; } - uint32_t appendedLen = appendCert2Chain(certificateChain->data + len, cert[i].data, - cert[i].len); - //TODO function check len + uint32_t appendedLen = appendCert2Chain(certificateChain->data + len, + cert[i].data, cert[i].len); if (0 == appendedLen) { OIC_LOG(ERROR, TAG, "Error while certifiacate chain creation."); diff --git a/resource/csdk/security/provisioning/src/secureresourceprovider.c b/resource/csdk/security/provisioning/src/secureresourceprovider.c index 892ee3f..7fa4851 100644 --- a/resource/csdk/security/provisioning/src/secureresourceprovider.c +++ b/resource/csdk/security/provisioning/src/secureresourceprovider.c @@ -629,17 +629,19 @@ OCStackResult SRPProvisionCredentials(void *ctx, OicSecCredType_t type, size_t k const OCProvisionDev_t *pDev2, OCProvisionResultCB resultCallback) { - if (!pDev1 || !pDev2 || !pDev1->doxm || !pDev2->doxm) + VERIFY_NON_NULL(TAG, pDev1, ERROR, OC_STACK_INVALID_PARAM); + if (SYMMETRIC_PAIR_WISE_KEY == type) { - OIC_LOG(INFO, TAG, "SRPUnlinkDevices : NULL parameters"); - return OC_STACK_INVALID_PARAM; + VERIFY_NON_NULL(TAG, pDev2, ERROR, OC_STACK_INVALID_PARAM); } + VERIFY_NON_NULL(TAG, resultCallback, ERROR, OC_STACK_INVALID_CALLBACK); if (!resultCallback) { OIC_LOG(INFO, TAG, "SRPUnlinkDevices : NULL Callback"); return OC_STACK_INVALID_CALLBACK; } - if (0 == memcmp(&pDev1->doxm->deviceID, &pDev2->doxm->deviceID, sizeof(OicUuid_t))) + if (SYMMETRIC_PAIR_WISE_KEY == type && + 0 == memcmp(&pDev1->doxm->deviceID, &pDev2->doxm->deviceID, sizeof(OicUuid_t))) { OIC_LOG(INFO, TAG, "SRPUnlinkDevices : Same device ID"); return OC_STACK_INVALID_PARAM; diff --git a/resource/csdk/security/src/credresource.c b/resource/csdk/security/src/credresource.c index d4108a9..26cf71f 100644 --- a/resource/csdk/security/src/credresource.c +++ b/resource/csdk/security/src/credresource.c @@ -178,7 +178,7 @@ OCStackResult CredToCBORPayload(const OicSecCred_t *credS, uint8_t **cborPayload mapSize++; } #ifdef __WITH_X509__ - if (cred->publicData.data) + if (SIGNED_ASYMMETRIC_KEY == cred->credType && cred->publicData.data) { mapSize++; } @@ -216,7 +216,7 @@ OCStackResult CredToCBORPayload(const OicSecCred_t *credS, uint8_t **cborPayload #ifdef __WITH_X509__ //PublicData -- Not Mandatory - if (cred->publicData.data) + if (SIGNED_ASYMMETRIC_KEY == cred->credType && cred->publicData.data) { CborEncoder publicMap = { {.ptr = NULL }, .end = 0, .added = 0, .flags = 0 }; const size_t publicMapSize = 2; @@ -293,7 +293,7 @@ OCStackResult CredToCBORPayload(const OicSecCred_t *credS, uint8_t **cborPayload cborEncoderResult = cbor_encoder_close_container(&credArray, &credMap); VERIFY_CBOR_SUCCESS(TAG, cborEncoderResult, "Failed Closing Cred Map."); - + cred = cred->next; } cborEncoderResult = cbor_encoder_close_container(&credRootMap, &credArray); @@ -1403,11 +1403,13 @@ int GetDtlsX509Credentials(CADtlsX509Creds_t *credInfo) { goto exit; } + credInfo->chainLen = 2; memcpy(credInfo->certificateChain, cred->publicData.data, cred->publicData.len); memcpy(credInfo->devicePrivateKey, cred->privateData.data, cred->privateData.len); - credInfo->certificateChainLen = parseCertPrefix(cred->publicData.data); + credInfo->certificateChainLen = cred->publicData.len; GetCAPublicKeyData(credInfo); ret = 0; + exit: return ret; diff --git a/resource/csdk/security/src/crlresource.c b/resource/csdk/security/src/crlresource.c index 7b62c57..bf9041d 100644 --- a/resource/csdk/security/src/crlresource.c +++ b/resource/csdk/security/src/crlresource.c @@ -26,6 +26,7 @@ #include "srmutility.h" #include "doxmresource.h" #include "ocpayload.h" +#include "oic_malloc.h" #ifdef __WITH_X509__ #include "crlresource.h" #include "crl.h" @@ -41,7 +42,7 @@ #define OIC_CBOR_CRL_ID "CRLId" #define OIC_CBOR_CRL_THIS_UPDATE "ThisUpdate" #define OIC_CBOR_CRL_DATA "CRLData" -#define CRL_DEFAULT_CRL_ID 1 +#define CRL_DEFAULT_CRL_ID (1) #define CRL_DEFAULT_THIS_UPDATE "150101000000Z" #define CRL_DEFAULT_CRL_DATA "-" @@ -167,18 +168,13 @@ OCStackResult CBORPayloadToCrl(const uint8_t *cborPayload, const size_t size, OCStackResult ret = OC_STACK_ERROR; *secCrl = NULL; - CborValue crlCbor = { .parser = NULL }; - CborParser parser = { .end = NULL }; + CborValue crlCbor = {.parser = NULL}; + CborParser parser = {.end = NULL}; CborError cborFindResult = CborNoError; - int cborLen = size; - if (0 == size) - { - cborLen = CBOR_SIZE; - } + int cborLen = (size == 0) ? CBOR_SIZE : size; cbor_parser_init(cborPayload, cborLen, 0, &parser, &crlCbor); - CborValue crlMap = { .parser = NULL } ; + CborValue crlMap = { .parser = NULL}; OicSecCrl_t *crl = NULL; - char *name = NULL; size_t outLen = 0; cborFindResult = cbor_value_enter_container(&crlCbor, &crlMap); VERIFY_CBOR_SUCCESS(TAG, cborFindResult, ERROR); @@ -186,74 +182,26 @@ OCStackResult CBORPayloadToCrl(const uint8_t *cborPayload, const size_t size, crl = (OicSecCrl_t *)OICCalloc(1, sizeof(OicSecCrl_t)); VERIFY_NON_NULL(TAG, crl, ERROR); - while (cbor_value_is_valid(&crlMap)) + cborFindResult = cbor_value_map_find_value(&crlCbor, OIC_CBOR_CRL_ID, &crlMap); + if (CborNoError == cborFindResult && cbor_value_is_integer(&crlMap)) { - size_t len = 0; - cborFindResult = cbor_value_dup_text_string(&crlMap, &name, &len, NULL); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, ERROR); - cborFindResult = cbor_value_advance(&crlMap); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, ERROR); - - CborType type = cbor_value_get_type(&crlMap); - - if (0 == strcmp(OIC_CBOR_CRL_ID, name)) - { - cborFindResult = cbor_value_get_int(&crlMap, (int *) &crl->CrlId); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, ERROR); - } - if (0 == strcmp(OIC_CBOR_CRL_THIS_UPDATE, name)) - { - uint8_t *crlByte = NULL; - cborFindResult = cbor_value_dup_byte_string(&crlMap, &crlByte, &len, NULL); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, ERROR); - crl->ThisUpdate.data = (uint8_t*) OICMalloc(len); - VERIFY_NON_NULL(TAG, crl->ThisUpdate.data, ERROR); - memcpy(crl->ThisUpdate.data, crlByte, len); - crl->ThisUpdate.len = len; - OICFree(crlByte); - } - if (0 == strcmp(OIC_CBOR_CRL_DATA, name)) - { - uint8_t *crlByte = NULL; - cborFindResult = cbor_value_dup_byte_string(&crlMap, &crlByte, &len, NULL); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, ERROR); - crl->CrlData.data = (uint8_t*) OICMalloc(len); - VERIFY_NON_NULL(TAG, crl->CrlData.data, ERROR); - memcpy(crl->CrlData.data, crlByte, len); - crl->CrlData.len = len; - OICFree(crlByte); - } - if (CborMapType != type && cbor_value_is_valid(&crlMap)) - { - cborFindResult = cbor_value_advance(&crlMap); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, ERROR); - } - OICFree(name); - name = NULL; - } - // PUT/POST CBOR may not have mandatory values set default values. - if (!crl->CrlId) - { - VERIFY_NON_NULL(TAG, gCrl, ERROR); - crl->CrlId = gCrl->CrlId; + cborFindResult = cbor_value_get_int(&crlMap, (int *) &crl->CrlId); + VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding CrlId."); } - if (!crl->ThisUpdate.data) + + cborFindResult = cbor_value_map_find_value(&crlCbor, OIC_CBOR_CRL_THIS_UPDATE, &crlMap); + if (CborNoError == cborFindResult && cbor_value_is_byte_string(&crlMap)) { - VERIFY_NON_NULL(TAG, gCrl, ERROR); - outLen = gCrl->ThisUpdate.len; - crl->ThisUpdate.data = (uint8_t*) OICMalloc(outLen); - VERIFY_NON_NULL(TAG, crl->ThisUpdate.data, ERROR); - memcpy(crl->ThisUpdate.data, gCrl->ThisUpdate.data, outLen); - crl->ThisUpdate.len = outLen; + cborFindResult = cbor_value_dup_byte_string(&crlMap, + &crl->ThisUpdate.data, &crl->ThisUpdate.len, NULL); + VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing Byte Array."); } - if (!crl->CrlData.data) + cborFindResult = cbor_value_map_find_value(&crlCbor, OIC_CBOR_CRL_DATA, &crlMap); + if (CborNoError == cborFindResult && cbor_value_is_byte_string(&crlMap)) { - VERIFY_NON_NULL(TAG, gCrl, ERROR); - outLen = gCrl->CrlData.len; - crl->CrlData.data = (uint8_t*) OICMalloc(outLen); - VERIFY_NON_NULL(TAG, crl->CrlData.data, ERROR); - memcpy(crl->CrlData.data, gCrl->CrlData.data, outLen); - crl->CrlData.len = outLen; + cborFindResult = cbor_value_dup_byte_string(&crlMap, + &crl->CrlData.data, &crl->CrlData.len, NULL); + VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing Byte Array."); } *secCrl = crl; @@ -261,15 +209,54 @@ OCStackResult CBORPayloadToCrl(const uint8_t *cborPayload, const size_t size, exit: if (CborNoError != cborFindResult) { - OIC_LOG (ERROR, TAG, "CBORPayloadToCrl failed"); - DeleteCrlBinData(crl); - crl = NULL; - *secCrl = NULL; - ret = OC_STACK_ERROR; - } - if (name) - { - OICFree(name); + // PUT/POST CBOR may not have mandatory values set default values. + if (gCrl) + { + OIC_LOG (DEBUG, TAG, "Set default values"); + crl->CrlId = gCrl->CrlId; + if (crl->ThisUpdate.data) + { + OICFree(crl->ThisUpdate.data); + } + outLen = gCrl->ThisUpdate.len; + crl->ThisUpdate.data = (uint8_t*) OICMalloc(outLen); + if (crl->ThisUpdate.data) + { + memcpy(crl->ThisUpdate.data, gCrl->ThisUpdate.data, outLen); + crl->ThisUpdate.len = outLen; + } + else + { + crl->ThisUpdate.len = 0; + OIC_LOG(ERROR, TAG, "Set default failed"); + } + if (crl->CrlData.data) + { + OICFree(crl->CrlData.data); + } + outLen = gCrl->CrlData.len; + crl->CrlData.data = (uint8_t*) OICMalloc(outLen); + if (crl->CrlData.data && gCrl->CrlData.data) + { + memcpy(crl->CrlData.data, gCrl->CrlData.data, outLen); + crl->CrlData.len = outLen; + } + else + { + crl->CrlData.len = 0; + OIC_LOG (ERROR, TAG, "Set default failed"); + } + + *secCrl = crl; + ret = OC_STACK_OK; + } + else + { + OIC_LOG (ERROR, TAG, "CBORPayloadToCrl failed"); + DeleteCrlBinData(crl); + crl = NULL; + ret = OC_STACK_ERROR; + } } return ret; } @@ -293,11 +280,12 @@ static OCEntityHandlerResult HandleCRLPostRequest(const OCEntityHandlerRequest * OCEntityHandlerResult ehRet = OC_EH_ERROR; OicSecCrl_t *crl = NULL; uint8_t *payload = ((OCSecurityPayload *)ehRequest->payload)->securityData1; + size_t size = ((OCSecurityPayload *) ehRequest->payload)->payloadSize; if (payload) { OIC_LOG(INFO, TAG, "UpdateSVRDB..."); - CBORPayloadToCrl(payload, CBOR_SIZE, &crl); + CBORPayloadToCrl(payload, size, &crl); VERIFY_NON_NULL(TAG, crl, ERROR); gCrl->CrlId = crl->CrlId; @@ -315,10 +303,9 @@ static OCEntityHandlerResult HandleCRLPostRequest(const OCEntityHandlerRequest * memcpy(gCrl->CrlData.data, crl->CrlData.data, crl->CrlData.len); gCrl->CrlData.len = crl->CrlData.len; - size_t size = 0; if (OC_STACK_OK == UpdateSecureResourceInPS(OIC_CBOR_CRL_NAME, payload, size)) { - ehRet = OC_EH_OK; + ehRet = OC_EH_RESOURCE_CREATED; } DeleteCrlBinData(crl); @@ -327,7 +314,7 @@ static OCEntityHandlerResult HandleCRLPostRequest(const OCEntityHandlerRequest * exit: // Send payload to request originator - SendSRMResponse(ehRequest, ehRet, NULL); + SendSRMCBORResponse(ehRequest, ehRet, NULL, 0); OIC_LOG_V(INFO, TAG, "%s RetVal %d", __func__, ehRet); return ehRet; @@ -369,7 +356,7 @@ static OCEntityHandlerResult CRLEntityHandler(OCEntityHandlerFlag flag, default: ehRet = OC_EH_ERROR; - SendSRMResponse(ehRequest, ehRet, NULL); + SendSRMCBORResponse(ehRequest, ehRet, NULL, 0); } } -- 2.7.4