X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fprovisioning%2Fexamples%2Fprovisioningclient.cpp;h=9c20bddeb192fccd118e5d130af83cf9e3e4024d;hb=3c093548382bb2542c87a67e6e5fa32552c29cb3;hp=9e2f1d8800a3a78ad874bdfda67dfc8764b2899c;hpb=edcfc3d2329da7b914771c0dcff5f42c9b74fd93;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/provisioning/examples/provisioningclient.cpp b/resource/provisioning/examples/provisioningclient.cpp index 9e2f1d8..9c20bdd 100644 --- a/resource/provisioning/examples/provisioningclient.cpp +++ b/resource/provisioning/examples/provisioningclient.cpp @@ -38,6 +38,7 @@ #include "oxmrandompin.h" #include "aclresource.h" #include "utlist.h" +#include "mbedtls/x509_crt.h" #define MAX_PERMISSION_LENGTH (5) #define ACL_RESRC_ARRAY_SIZE (3) @@ -65,7 +66,7 @@ static const OicSecPrm_t SUPPORTED_PRMS[1] = using namespace OC; -DeviceList_t pUnownedDevList, pOwnedDevList; +DeviceList_t pUnownedDevList, pOwnedDevList, pMOTEnabledDeviceList; static int transferDevIdx, ask = 1; static OicSecPconf_t g_pconf; static uint16_t g_credId = 0; @@ -96,6 +97,16 @@ void printMenu() std::cout << " 14. Provision the Trust Cert. Chain"<serial.p, cert->serial.len); + OIC_LOG(DEBUG, TAG, "***** Serial number of peer certificate is above *****"); + OIC_LOG_V(DEBUG, TAG, "OUT%s", __func__); + + return OC_STACK_OK; +} + void ownershipTransferCB(PMResultList_t *result, int hasError) { if (hasError) @@ -433,7 +457,7 @@ static int InputACL(OicSecAcl_t *acl) printf(" Enter Number of resource type for [%s]: ", rsrc->href); for(int ret=0; 1!=ret; ) { - ret = scanf("%d", &arrLen); + ret = scanf("%zu", &arrLen); for( ; 0x20<=getchar(); ); // for removing overflow garbages // '0x20<=code' is character region } @@ -452,7 +476,7 @@ static int InputACL(OicSecAcl_t *acl) goto error; } - for(int i = 0; i < arrLen; i++) + for(unsigned int i = 0; i < arrLen; i++) { printf(" Enter ResourceType[%d] Name (e.g. core.led): ", i+1); for(int ret=0; 1!=ret; ) @@ -475,7 +499,7 @@ static int InputACL(OicSecAcl_t *acl) printf(" Enter Number of interface name for [%s]: ", rsrc->href); for(int ret=0; 1!=ret; ) { - ret = scanf("%d", &arrLen); + ret = scanf("%zu", &arrLen); for( ; 0x20<=getchar(); ); // for removing overflow garbages // '0x20<=code' is character region } @@ -494,7 +518,7 @@ static int InputACL(OicSecAcl_t *acl) goto error; } - for(int i = 0; i < arrLen; i++) + for(unsigned int i = 0; i < arrLen; i++) { printf(" Enter interfnace[%d] Name (e.g. oic.if.baseline): ", i+1); for(int ret=0; 1!=ret; ) @@ -801,6 +825,47 @@ PVDP_ERROR: ask = 1; } +OCStackResult displayMutualVerifNumCB(uint8_t mutualVerifNum[MUTUAL_VERIF_NUM_LEN]) +{ + OIC_LOG(INFO, TAG, "IN displayMutualVerifNumCB"); + OIC_LOG(INFO, TAG, "############ mutualVerifNum ############"); + OIC_LOG_BUFFER(INFO, TAG, mutualVerifNum, MUTUAL_VERIF_NUM_LEN); + OIC_LOG(INFO, TAG, "############ mutualVerifNum ############"); + OIC_LOG(INFO, TAG, "OUT displayMutualVerifNumCB"); + return OC_STACK_OK; +} + +OCStackResult confirmMutualVerifNumCB(void) +{ + for (;;) + { + int userConfirm; + + printf(" > Press 1 if the mutual verification numbers are the same\n"); + printf(" > Press 0 if the mutual verification numbers are not the same\n"); + + for (int ret=0; 1!=ret; ) + { + ret = scanf("%d", &userConfirm); + for (; 0x20<=getchar(); ); // for removing overflow garbage + // '0x20<=code' is character region + } + if (1 == userConfirm) + { + break; + } + else if (0 == userConfirm) + { + return OC_STACK_USER_DENIED_REQ; + } + printf(" Entered Wrong Number. Please Enter Again\n"); + } + return OC_STACK_OK; +} + + + + #if defined(__WITH_DTLS__) || defined(__WITH_TLS__) static int saveTrustCert(void) { @@ -814,7 +879,7 @@ static int saveTrustCert(void) if (fp) { - size_t fsize; + int fsize; if (fseeko(fp, 0, SEEK_END) == 0 && (fsize = ftello(fp)) >= 0) { trustCertChainArray.data = (uint8_t*)OICCalloc(1, fsize); @@ -831,8 +896,8 @@ static int saveTrustCert(void) { OIC_LOG(ERROR,TAG,"Read error"); } - fclose(fp); } + fclose(fp); } OIC_LOG_BUFFER(DEBUG, TAG, trustCertChainArray.data, trustCertChainArray.len); @@ -850,13 +915,45 @@ static int saveTrustCert(void) void certChainCallBack(uint16_t credId, uint8_t *trustCertChain,size_t chainSize) { OIC_LOG_V(INFO, TAG, "trustCertChain Changed for credId %u", credId); + OC_UNUSED(trustCertChain); + OC_UNUSED(chainSize); return; } #endif // __WITH_DTLS__ or __WITH_TLS__ +#ifdef MULTIPLE_OWNER +void MOTMethodCB(PMResultList_t *result, int hasError) +{ + if (hasError) + { + std::cout << "Error!!! in callback"<getDeviceID()<<" From IP: "; + std::cout << pMOTEnabledDeviceList[i]->getDevAddr() << std::endl; + } + } + + // select device + unsigned int dev_num = 0; + for( ; ; ) + { + std::cout << "Enter Device Number, to change the mode: "<> dev_num; + if(0 < dev_num && dev_count >= dev_num) + { + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"< Enter Mode of Multiple Ownership Transfer :"<changeMOTMode( + (const OicSecMomType_t)momType,MOTMethodCB)) + { + OIC_LOG(ERROR, TAG, "changeMOTMode API error"); + } + } + else + { + if(dev_num <= pOwnedDevList.size()) + { + if(OC_STACK_OK != pOwnedDevList[dev_num-1]->changeMOTMode(momType, + MOTMethodCB)) + { + OIC_LOG(ERROR, TAG, "changeMOTMode API error"); + } + } + else + { + if(OC_STACK_OK != pMOTEnabledDeviceList[(dev_num - + pOwnedDevList.size() - 1)]->changeMOTMode(momType, + MOTMethodCB)) + { + OIC_LOG(ERROR, TAG, "changeMOTMode API error"); + } + } + } + break; + } + case 17: + { + if (!pMOTEnabledDeviceList.size()) + { + std::cout <<"Please discover the MOT device first. Use option 18"<> dev_num; + if(0 < dev_num && pMOTEnabledDeviceList.size() >=dev_num) + { + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"< Enter Number of OxM for Multiple Ownership Transfer : "<> oxm; + if(0 == oxm) + { + secOxm = OIC_RANDOM_DEVICE_PIN; + break; + } + if(1 == oxm) + { + secOxm = OIC_PRECONFIG_PIN; + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"<selectMOTMethod((const OicSecOxm_t)secOxm, + MOTMethodCB)) + { + OIC_LOG(ERROR, TAG, "selectMOTMethod API error"); + } + break; + } + case 18: + { + pMOTEnabledDeviceList.clear(); + std::cout << "Started MOT Enabled device discovery..." <> dev_num; + if(0 < dev_num && pMOTEnabledDeviceList.size() >=dev_num) + { + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"< Input the 8 digit PreconfigPin (e.g. 12341234) :" <provisionPreconfPin(preconfigPin, + preconfPinLength, MOTMethodCB)) + { + OIC_LOG(ERROR, TAG, "provisionPreconfPin API error"); + } + break; + } + case 20: + { + if (!pMOTEnabledDeviceList.size()) + { + std::cout <<"Please discover the MOT device first. Use option 16"<> dev_num; + if(0 < dev_num && pMOTEnabledDeviceList.size() >=dev_num) + { + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"< Input the 8 digit preconfPIN (e.g. 12341234) :" <addPreconfigPIN(preconfPIN, + preconfPinLength)) + { + OIC_LOG(ERROR, TAG, "addPreconfigPIN API error"); + } + break; + } + case 21: //Remove sub-owner + { + if (!pMOTEnabledDeviceList.size()) + { + std::cout <<"Please discover the MOT device first. Use option 16"<> dev_num; + if(0 < dev_num && pMOTEnabledDeviceList.size() >=dev_num) + { + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"<getSubOwnerList(subOwenrList); + if (0 == subOwenrList.size()) + { + std::cout << "SubOwner List is empty."<> so_num; + if(0 < so_num && subOwenrList.size() >=so_num) + { + pMOTEnabledDeviceList[dev_num - 1]->removeSubOwner(&subOwenrList[so_num], MOTRemoveSubOwnerCB); + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"<> dev_num; + if(0 < dev_num && pMOTEnabledDeviceList.size() >=dev_num) + { + break; + } + std::cout << " Entered Wrong Number. Please Enter Again"<getSubOwnerList(subOwenrList); + if (0 == subOwenrList.size()) + { + std::cout << "SubOwner List is empty."<removeAllSubOwner(MOTRemoveSubOwnerCB); + } + break; + } +#endif //MULTIPLE_OWNER + case 30: + { + OCStackResult result; + result = OCSecure::configSelfOwnership(); + if (OC_STACK_OK != result) + { + std::cout<<"configSelfOwnership API error. Please check SVR DB"<