X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=resource%2Fcsdk%2Fsecurity%2Fprovisioning%2Fsrc%2Fcredentialgenerator.c;h=a930e5358900fadb519e6285b0b06a408e2cbbfe;hb=c315c87e07c4080ecd0ef488e7a1047bc3c509b2;hp=ece5cf6698c4e548b98eaa31d278c8d5bd6b5ce8;hpb=ae6e681f3aa422e0bad2cc0cf706b54bde18bb1b;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/security/provisioning/src/credentialgenerator.c b/resource/csdk/security/provisioning/src/credentialgenerator.c index ece5cf6..a930e53 100644 --- a/resource/csdk/security/provisioning/src/credentialgenerator.c +++ b/resource/csdk/security/provisioning/src/credentialgenerator.c @@ -19,88 +19,61 @@ * *****************************************************************/ #include #include "credentialgenerator.h" +#include "base64.h" #include "oic_malloc.h" -#include "logger.h" +#include "oic_string.h" +#include "ocpayload.h" +#include "payload_logging.h" #include "credresource.h" #include "ocrandom.h" -#include "base64.h" +#include "srmutility.h" #include "stdbool.h" #include "securevirtualresourcetypes.h" -#define TAG "SRPAPI-CG" - -/** - * @def PM_VERIFY_SUCCESS - * @brief Macro to verify success of operation. - * eg: PM_VERIFY_SUCCESS(TAG, OC_STACK_OK == foo(), OC_STACK_ERROR, ERROR); - * @note Invoking function must define "bail:" label for goto functionality to work correctly and - * must define "OCStackResult res" for setting error code. - * */ -#define PM_VERIFY_SUCCESS(tag, op, errCode, logLevel) { if (!(op)) \ - {OC_LOG((logLevel), tag, #op " failed!!"); res = errCode; goto bail;} } -/** - * @def PM_VERIFY_NON_NULL - * @brief Macro to verify argument is not equal to NULL. - * eg: PM_VERIFY_NON_NULL(TAG, ptrData, ERROR); - * @note Invoking function must define "bail:" label for goto functionality to work correctly. - * */ -#define PM_VERIFY_NON_NULL(tag, arg, errCode, logLevel) { if (NULL == (arg)) \ - { OC_LOG((logLevel), tag, #arg " is NULL"); res = errCode; goto bail;} } +#define TAG "OIC_SRPAPI_CG" OCStackResult PMGeneratePairWiseCredentials(OicSecCredType_t type, size_t keySize, - const OicUuid_t *ptDeviceId, - const OicUuid_t *firstDeviceId, const OicUuid_t *secondDeviceId, - OicSecCred_t **firstCred, OicSecCred_t **secondCred) + const OicUuid_t *ptDeviceId, const OicUuid_t *firstDeviceId, + const OicUuid_t *secondDeviceId, OicSecCred_t **firstCred, OicSecCred_t **secondCred) { - - if (NULL == ptDeviceId || NULL == firstDeviceId || NULL != *firstCred || \ - NULL == secondDeviceId || NULL != *secondCred) + if (NULL == ptDeviceId || NULL == firstDeviceId || NULL == firstCred || NULL != *firstCred || \ + NULL == secondDeviceId || NULL == secondCred || NULL != *secondCred) { - OC_LOG(INFO, TAG, "Invalid params"); + OIC_LOG(INFO, TAG, "Invalid params"); return OC_STACK_INVALID_PARAM; } if(!(keySize == OWNER_PSK_LENGTH_128 || keySize == OWNER_PSK_LENGTH_256)) { - OC_LOG(INFO, TAG, "Invalid key size"); + OIC_LOG(INFO, TAG, "Invalid key size"); return OC_STACK_INVALID_PARAM; } OCStackResult res = OC_STACK_ERROR; - uint8_t* privData = NULL; - char* base64Buff = NULL; OicSecCred_t *tempFirstCred = NULL; OicSecCred_t *tempSecondCred = NULL; size_t privDataKeySize = keySize; - privData = (uint8_t*) OICCalloc(privDataKeySize,sizeof(uint8_t)); - PM_VERIFY_NON_NULL(TAG, privData, OC_STACK_NO_MEMORY, ERROR); - - OCFillRandomMem(privData,privDataKeySize); - - uint32_t outLen = 0; + uint8_t *privData = (uint8_t *)OICCalloc(privDataKeySize, sizeof(uint8_t)); + VERIFY_NON_NULL(TAG, privData, ERROR); + OicSecKey_t privKey = {.data=privData, .len=keySize}; - base64Buff = (char*) OICCalloc(B64ENCODE_OUT_SAFESIZE(privDataKeySize) + 1, sizeof(char)); - PM_VERIFY_NON_NULL(TAG, base64Buff, OC_STACK_NO_MEMORY, ERROR); - int memReq = (B64ENCODE_OUT_SAFESIZE(privDataKeySize) + 1) * sizeof(char); - B64Result b64Ret = b64Encode(privData, privDataKeySize*sizeof(uint8_t), base64Buff, - memReq, &outLen); - PM_VERIFY_SUCCESS(TAG, B64_OK == b64Ret, OC_STACK_ERROR, ERROR); + OCFillRandomMem(privData, privDataKeySize); // TODO: currently owner array is 1. only provisioning tool's id. - tempFirstCred = GenerateCredential(secondDeviceId, type, NULL, base64Buff, 1, ptDeviceId); - PM_VERIFY_NON_NULL(TAG, tempFirstCred, OC_STACK_ERROR, ERROR); + tempFirstCred = GenerateCredential(secondDeviceId, type, NULL, &privKey, ptDeviceId, NULL); + VERIFY_NON_NULL(TAG, tempFirstCred, ERROR); // TODO: currently owner array is 1. only provisioning tool's id. - tempSecondCred = GenerateCredential(firstDeviceId, type, NULL, base64Buff, 1, ptDeviceId); - PM_VERIFY_NON_NULL(TAG, tempSecondCred, OC_STACK_ERROR, ERROR); + tempSecondCred = GenerateCredential(firstDeviceId, type, NULL, &privKey, ptDeviceId, NULL); + VERIFY_NON_NULL(TAG, tempSecondCred, ERROR); *firstCred = tempFirstCred; *secondCred = tempSecondCred; res = OC_STACK_OK; -bail: +exit: + OICClearMemory(privData, privDataKeySize); OICFree(privData); - OICFree(base64Buff); if(res != OC_STACK_OK) {