X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fsecurity%2Funittest%2Fcredentialresource.cpp;h=6640831e5bbb57d19e06867199623ea16920e360;hb=refs%2Ftags%2Ftizen_4.0.m2_release;hp=ed5e99a033f67fece63d59e43419d56c2c8a2a8a;hpb=c2b7d54fdd4c59e3422d2ff635475eca0d7dec80;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/security/unittest/credentialresource.cpp b/resource/csdk/security/unittest/credentialresource.cpp index ed5e99a..6640831 100644 --- a/resource/csdk/security/unittest/credentialresource.cpp +++ b/resource/csdk/security/unittest/credentialresource.cpp @@ -19,6 +19,7 @@ //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #include "gtest/gtest.h" +extern "C" { #include "logger.h" #include "ocpayload.h" #include "ocstack.h" @@ -31,9 +32,13 @@ #include "srmutility.h" #include "psinterface.h" #include "security_internals.h" - +#include "secureresourcemanager.h" +} #define TAG "SRM-CRED-UT" +const char *SRP_TEST_FILE_NAME = "secureresourceprovider.dat"; +static OCPersistentStorage ps; + OicSecCred_t * getCredList() { size_t sz = 0; @@ -52,7 +57,9 @@ OicSecCred_t * getCredList() #endif cred->credType = SYMMETRIC_PAIR_WISE_KEY; + cred->privateData.encoding = OIC_ENCODING_RAW; cred->privateData.data = (uint8_t *)OICCalloc(1, strlen("My private Key11") + 1); + cred->privateData.len = strlen("My private Key11"); VERIFY_NON_NULL(TAG, cred->privateData.data, ERROR); OICStrcpy((char *)cred->privateData.data, strlen("My private Key11")+1,"My private Key11"); // use |memcpy| for copying full-lengthed UUID without null termination @@ -66,7 +73,9 @@ OicSecCred_t * getCredList() cred->next->roleIdsLen = 0; #endif cred->next->credType = SYMMETRIC_PAIR_WISE_KEY; - sz = strlen("My private Key21") + 1; + cred->next->privateData.encoding = OIC_ENCODING_RAW; + cred->next->privateData.len = strlen("My private Key21"); + sz = cred->next->privateData.len + 1; cred->next->privateData.data = (uint8_t *)OICCalloc(1, sz); VERIFY_NON_NULL(TAG, cred->next->privateData.data, ERROR); OICStrcpy((char *)cred->next->privateData.data, sz, "My private Key21"); @@ -104,16 +113,37 @@ static void printCred(const OicSecCred_t * cred) { OIC_LOG_V(INFO, TAG, "cred->privateData.data = %s", credTmp1->privateData.data); } -#ifdef __WITH_X509__ +#ifdef __WITH_DTLS__ if(credTmp1->publicData.data) { OIC_LOG_V(INFO, TAG, "cred->publicData.data = %s", credTmp1->publicData.data); } -#endif /* __WITH_X509__ */ - OIC_LOG_V(INFO, TAG, "cred->rownerID = %s", credTmp1->rownerID.id); +#endif /* __WITH_DTLS__ */ + OIC_LOG_V(INFO, TAG, "cred->rownerID = %s", credTmp1->rownerID.id); } } +FILE *fOpenCustom(const char *path, const char *mode) +{ + (void)path; + FILE *fp = fopen(SRP_TEST_FILE_NAME, mode); + return fp; +} + +//init db +TEST(CredResourceTest,initDb) +{ + ps.open = fOpenCustom; + ps.read = fread; + ps.write = fwrite; + ps.close = fclose; + ps.unlink = unlink; + + SRMRegisterPersistentStorageHandler(&ps); + + InitPersistentStorageInterface(); +} + //InitCredResource Tests TEST(CredResourceTest, InitCredResource) { @@ -154,22 +184,21 @@ TEST(CredResourceTest, CredEntityHandlerInvalidFlag) } //Cred DELETE request +/* TEST(CredResourceTest, CredEntityHandlerDeleteTest) { OCEntityHandlerRequest ehReq = OCEntityHandlerRequest(); - static OCPersistentStorage ps = OCPersistentStorage(); const OicSecCred_t* subjectCred1 = NULL; const OicSecCred_t* subjectCred2 = NULL; OCEntityHandlerResult ehRet = OC_EH_ERROR; char query[] = "subjectuuid=31313131-3131-3131-3131-313131313131"; //canonical uuid of subject1 - SetPersistentHandler(&ps, true); - OicSecCred_t *cred = getCredList(); ASSERT_TRUE(NULL != cred); uint8_t *payload = NULL; size_t size = 0; - EXPECT_EQ(OC_STACK_OK, CredToCBORPayload(cred, &payload, &size)); + int secureFlag = 0; + EXPECT_EQ(OC_STACK_OK, CredToCBORPayload(cred, &payload, &size, secureFlag)); if (!payload) { DeleteCredList(cred); @@ -216,11 +245,13 @@ TEST(CredResourceTest, CredEntityHandlerDeleteTest) DeleteCredList(cred); OCPayloadDestroy((OCPayload *)ehReq.payload); } +*/ TEST(CredResourceTest, CredToCBORPayloadNULL) { + int secureFlag = 0; OicSecCred_t *cred = getCredList(); - EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(NULL, NULL, 0)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(NULL, NULL, 0, secureFlag)); size_t size = 0; uint8_t *cborPayload = (uint8_t *) OICCalloc(1, 10); if (!cborPayload) @@ -228,12 +259,12 @@ TEST(CredResourceTest, CredToCBORPayloadNULL) DeleteCredList(cred); } ASSERT_TRUE(NULL != cborPayload); - EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(cred, &cborPayload, &size)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(cred, &cborPayload, &size, secureFlag)); OICFree(cborPayload); cborPayload = NULL; - EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(NULL, &cborPayload, &size)); - EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(cred, &cborPayload, 0)); - EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(cred, NULL, &size)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(NULL, &cborPayload, &size,secureFlag)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(cred, &cborPayload, 0, secureFlag)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CredToCBORPayload(cred, NULL, &size, secureFlag)); DeleteCredList(cred); } @@ -241,9 +272,10 @@ TEST(CredResourceTest, CredToCBORPayloadVALID) { uint8_t* payload = NULL; size_t size = 0; + int secureFlag = 0; OicSecCred_t *cred = getCredList(); - EXPECT_EQ(OC_STACK_OK, CredToCBORPayload(cred, &payload, &size)); + EXPECT_EQ(OC_STACK_OK, CredToCBORPayload(cred, &payload, &size, secureFlag)); if (!payload) { DeleteCredList(cred); @@ -260,7 +292,8 @@ TEST(CredResourceTest, CBORPayloadToCredVALID) uint8_t *payload = NULL; size_t size = 0; - EXPECT_EQ(OC_STACK_OK, CredToCBORPayload(cred1, &payload, &size)); + int secureFlag = 0; + EXPECT_EQ(OC_STACK_OK, CredToCBORPayload(cred1, &payload, &size, secureFlag)); DeleteCredList(cred1); ASSERT_TRUE(NULL != payload); @@ -271,6 +304,33 @@ TEST(CredResourceTest, CBORPayloadToCredVALID) DeleteCredList(cred2); } +TEST(CredResourceTest, CBORPayloadToCredSecureVALID) +{ + OicSecCred_t *cred1 = getCredList(); + ASSERT_TRUE(NULL != cred1); + cred1->privateData.data = (uint8_t *)OICCalloc(1, OWNER_PSK_LENGTH_128); + ASSERT_TRUE(NULL != cred1->privateData.data); + cred1->privateData.len = OWNER_PSK_LENGTH_128; + + uint8_t *payload = NULL; + size_t size = 0; + int secureFlag = 1; + EXPECT_EQ(OC_STACK_OK, CredToCBORPayload(cred1, &payload, &size, secureFlag)); + + ASSERT_TRUE(NULL != payload); + + OicSecCred_t *cred2 = NULL; + EXPECT_EQ(OC_STACK_OK, CBORPayloadToCred(payload, size, &cred2)); + ASSERT_TRUE(cred2 != NULL); + ASSERT_TRUE(NULL == cred2->privateData.data); + ASSERT_TRUE(0 == cred2->privateData.len); + + OICFree(payload); + + DeleteCredList(cred1); + DeleteCredList(cred2); +} + TEST(CredResourceTest, CBORPayloadToCredNULL) { OicSecCred_t *cred = NULL; @@ -304,13 +364,14 @@ TEST(CredResourceTest, GenerateCredentialValidInput) OicSecCred_t * cred = NULL; cred = GenerateCredential(&subject, SYMMETRIC_PAIR_WISE_KEY, NULL, - &key, &rownerID); + &key, &rownerID, NULL); printCred(cred); ASSERT_TRUE(NULL != cred); DeleteCredList(cred); } +/* TEST(CredResourceTest, GenerateAndAddCredentialValidInput) { OicUuid_t rownerID = {{0}}; @@ -326,7 +387,7 @@ TEST(CredResourceTest, GenerateAndAddCredentialValidInput) OicSecCred_t *headCred = NULL; cred1 = GenerateCredential(&subject, SYMMETRIC_PAIR_WISE_KEY, NULL, - &key, &rownerID); + &key, &rownerID, NULL); EXPECT_EQ(OC_STACK_OK, AddCredential(cred1)); headCred = cred1; @@ -334,13 +395,13 @@ TEST(CredResourceTest, GenerateAndAddCredentialValidInput) OICStrcpy((char *)rownerID.id, sizeof(rownerID.id), "ownersId22"); OICStrcpy((char *)subject.id, sizeof(subject.id), "subject22"); cred1 = GenerateCredential(&subject, SYMMETRIC_PAIR_WISE_KEY, NULL, - &key, &rownerID); + &key, &rownerID, NULL); EXPECT_EQ(OC_STACK_OK, AddCredential(cred1)); OICStrcpy((char *)rownerID.id, sizeof(rownerID.id), "ownersId33"); OICStrcpy((char *)subject.id, sizeof(subject.id), "subject33"); cred1 = GenerateCredential(&subject, SYMMETRIC_PAIR_WISE_KEY, NULL, - &key, &rownerID); + &key, &rownerID, NULL); EXPECT_EQ(OC_STACK_OK, AddCredential(cred1)); const OicSecCred_t* credList = GetCredResourceData(&headCred->subject); @@ -349,6 +410,7 @@ TEST(CredResourceTest, GenerateAndAddCredentialValidInput) DeleteCredList(headCred); } +*/ #if 0 TEST(CredGetResourceDataTest, GetCredResourceDataValidSubject) @@ -358,44 +420,19 @@ TEST(CredGetResourceDataTest, GetCredResourceDataValidSubject) } #endif -#ifdef __WITH_X509__ -#include - -static char PROV_TOOL_DB_FILE[] = "/oic_svr_db_prov.dat"; - -#define STRINGIZE2(x) #x -#define STRINGIZE(x) STRINGIZE2(x) - -static FILE *client_fopen(const char* UNUSED_PARAM , const char *mode) +#if defined(__WITH_DTLS__) || defined(__WITH_TLS__) +TEST(CredGetDtlsPskCredentialsTest, NullResult) { - (void)UNUSED_PARAM; - - int len = strlen(STRINGIZE(SECURITY_BUILD_UNITTEST_DIR)) + strlen(PROV_TOOL_DB_FILE) + 1; - char *filepath = (char *)OICCalloc(1, len); - - if (!filepath) - { - printf("filepath memory allocation failed. \n"); - return NULL; - } - - snprintf(filepath, len, "%s%s", STRINGIZE(SECURITY_BUILD_UNITTEST_DIR), PROV_TOOL_DB_FILE); - - FILE* file = fopen(filepath, mode); - OICFree(filepath); - return file; + EXPECT_EQ(-1, GetDtlsPskCredentials(CA_DTLS_PSK_KEY, NULL, 0, NULL, 0)); } -static OCPersistentStorage ps = { client_fopen, fread, fwrite, fclose, unlink }; - -//GetDtlsX509Credentials Test -TEST(CredResourceTest, GetDtlsX509Credentials) +TEST(CredAddTmpPskWithPINTest, NullSubject) { - ASSERT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_CLIENT_SERVER)); - OCRegisterPersistentStorageHandler(&ps); - InitCredResource(); - CADtlsX509Creds_t g_X509Cred = {{0}, 0, 0, {0}, {0}, {0}}; - EXPECT_EQ(0, GetDtlsX509Credentials(&g_X509Cred)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, AddTmpPskWithPIN(NULL, SYMMETRIC_PAIR_WISE_KEY, + NULL, 0, NULL, NULL)); +} +#endif // __WITH_DTLS__ or __WITH_TLS__ +TEST(CredCBORPayloadToCredTest, NullPayload) +{ + EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToCred(NULL, 0, NULL)); } - -#endif