diff --git a/test/fuzztest/devauthinterface_fuzzer/devauthinterface_fuzzer.cpp b/test/fuzztest/devauthinterface_fuzzer/devauthinterface_fuzzer.cpp index d15c09f6..3541b429 100644 --- a/test/fuzztest/devauthinterface_fuzzer/devauthinterface_fuzzer.cpp +++ b/test/fuzztest/devauthinterface_fuzzer/devauthinterface_fuzzer.cpp @@ -1388,6 +1388,14 @@ static void DevAuthInterfaceTestCase032() FreeJson(inputDataJson); } +static void DevAuthInterfaceTestCase0321() +{ + // dev_session_util.c interface test + (void)GetSelfUserId(DEFAULT_OS_ACCOUNT, nullptr, TEST_LEN); + char userId[TEST_LEN]; + (void)GetSelfUserId(DEFAULT_OS_ACCOUNT, userId, TEST_LEN); +} + static void DevAuthInterfaceTestCase033() { // huks_adapter.c interface test @@ -1575,6 +1583,7 @@ static void DevAuthInterfaceTestCasePart2() (void)DevAuthInterfaceTestCase030(); (void)DevAuthInterfaceTestCase031(); (void)DevAuthInterfaceTestCase032(); + (void)DevAuthInterfaceTestCase0321(); (void)DevAuthInterfaceTestCase033(); (void)DevAuthInterfaceTestCase034(); (void)DevAuthInterfaceTestCase035(); diff --git a/test/fuzztest/identityservice_fuzzer/identityservice_fuzzer.cpp b/test/fuzztest/identityservice_fuzzer/identityservice_fuzzer.cpp index ac2f7882..f44150d5 100644 --- a/test/fuzztest/identityservice_fuzzer/identityservice_fuzzer.cpp +++ b/test/fuzztest/identityservice_fuzzer/identityservice_fuzzer.cpp @@ -47,8 +47,16 @@ namespace OHOS { #define QUERY_RESULT_NUM_2 2 #define TEST_CRED_TYPE 1 #define TEST_CRED_TYPE_1 3 +#define TEST_REQ_ID 11111111 +#define TEST_REQ_ID_S 22222222 +#define TEST_REQ_ID_AUTH 12312121 +#define TEST_REQ_ID_AUTH_S 4352345234534 #define TEST_OWNER_UID_1 1 #define TEST_OWNER_UID_2 2 +#define TEST_OWNER_UID_1 1 +#define TEST_OWNER_UID_2 2 +#define TEST_DEV_AUTH_SLEEP_TIME 50000 +#define DATA_LEN 10 #define TEST_CRED_DATA_PATH "/data/service/el1/public/deviceauthMock/hccredential.dat" @@ -58,6 +66,20 @@ static const char *ADD_PARAMS = "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\"," "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"]," "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}"; +static const char *CLIENT_AUTH_PARAMS = + "{\"credType\":2,\"keyFormat\":1,\"algorithmType\":1,\"subject\":1," + "\"proofType\":1,\"method\":2,\"authorizedScope\":1," + "\"keyValue\":\"1234567812345678123456781234567812345678123456781234567812345678\"," + "\"deviceId\":\"52E2706717D5C39D736E134CC1E3BE1BAA2AA52DB7C76A37C749558BD2E6492C\",\"credOwner\":\"TestAppId\"," + "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"]," + "\"peerUserSpaceId\":\"0\",\"extendInfo\":\"\"}"; +static const char *SERVER_AUTH_PARAMS = + "{\"credType\":2,\"keyFormat\":1,\"algorithmType\":1,\"subject\":1," + "\"proofType\":1,\"method\":2,\"authorizedScope\":1," + "\"keyValue\":\"1234567812345678123456781234567812345678123456781234567812345678\"," + "\"deviceId\":\"5420459D93FE773F9945FD64277FBA2CAB8FB996DDC1D0B97676FBB1242B3930\",\"credOwner\":\"TestAppId\"," + "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"]," + "\"peerUserSpaceId\":\"0\",\"extendInfo\":\"\"}"; static const char *ADD_PARAMS1 = "{\"credType\":0,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1," "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\"," @@ -168,6 +190,21 @@ enum CredListenerStatus { CRED_LISTENER_ON_UPDATE = 2, CRED_LISTENER_ON_DELETE = 3, }; +enum AsyncStatus { + ASYNC_STATUS_WAITING = 0, + ASYNC_STATUS_TRANSMIT = 1, + ASYNC_STATUS_FINISH = 2, + ASYNC_STATUS_ERROR = 3 +}; + +static AsyncStatus volatile g_asyncStatus; +static uint32_t g_transmitDataMaxLen = 2048; +static uint8_t g_transmitData[2048] = { 0 }; +static uint32_t g_transmitDataLen = 0; +static bool g_isBind = false; +static char g_clientCredId[256] = { 0 }; +static char g_serverCredId[256] = { 0 }; +static const char *PIN_CODE = "000000"; static CredListenerStatus volatile g_credListenerStatus; @@ -203,6 +240,185 @@ static void DeleteDatabase() HcFileRemove(TEST_CRED_DATA_PATH); } +static bool CompareSubject(Credential *credential, QueryCredentialParams *params) +{ + credential->subject = SUBJECT_ACCESSORY_DEVICE; + (void)CompareIntParams(params, credential); + credential->subject = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->subject = SUBJECT_MASTER_CONTROLLER; + credential->subject = SUBJECT_ACCESSORY_DEVICE; + (void)CompareIntParams(params, credential); + credential->subject = SUBJECT_MASTER_CONTROLLER; + bool ret = CompareIntParams(params, credential); + params->subject = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareIssuer(Credential *credential, QueryCredentialParams *params) +{ + credential->issuer = SYSTEM_ACCOUNT; + (void)CompareIntParams(params, credential); + credential->issuer = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->issuer = SYSTEM_ACCOUNT; + credential->issuer = SYSTEM_ACCOUNT; + (void)CompareIntParams(params, credential); + credential->issuer = APP_ACCOUNT; + bool ret = CompareIntParams(params, credential); + params->issuer = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareOwnerUid(Credential *credential, QueryCredentialParams *params) +{ + credential->ownerUid = TEST_OWNER_UID_1; + (void)CompareIntParams(params, credential); + credential->ownerUid = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->ownerUid = TEST_OWNER_UID_1; + credential->ownerUid = TEST_OWNER_UID_1; + (void)CompareIntParams(params, credential); + credential->ownerUid = TEST_OWNER_UID_2; + bool ret = CompareIntParams(params, credential); + params->ownerUid = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareAuthorziedScope(Credential *credential, QueryCredentialParams *params) +{ + credential->authorizedScope = SCOPE_DEVICE; + (void)CompareIntParams(params, credential); + credential->authorizedScope = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->authorizedScope = SCOPE_DEVICE; + credential->authorizedScope = SCOPE_DEVICE; + (void)CompareIntParams(params, credential); + credential->authorizedScope = SCOPE_USER; + bool ret = CompareIntParams(params, credential); + params->authorizedScope = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareKeyFormat(Credential *credential, QueryCredentialParams *params) +{ + credential->keyFormat = SYMMETRIC_KEY; + (void)CompareIntParams(params, credential); + credential->keyFormat = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->keyFormat = SYMMETRIC_KEY; + credential->keyFormat = SYMMETRIC_KEY; + (void)CompareIntParams(params, credential); + credential->keyFormat = ASYMMETRIC_PUB_KEY; + bool ret = CompareIntParams(params, credential); + params->keyFormat = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareAlgorithmType(Credential *credential, QueryCredentialParams *params) +{ + credential->algorithmType = ALGO_TYPE_AES_256; + (void)CompareIntParams(params, credential); + credential->algorithmType = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->algorithmType = ALGO_TYPE_AES_256; + credential->algorithmType = ALGO_TYPE_AES_256; + (void)CompareIntParams(params, credential); + credential->algorithmType = ALGO_TYPE_AES_128; + bool ret = CompareIntParams(params, credential); + params->algorithmType = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareProofType(Credential *credential, QueryCredentialParams *params) +{ + credential->proofType = PROOF_TYPE_PSK; + (void)CompareIntParams(params, credential); + credential->proofType = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->proofType = PROOF_TYPE_PSK; + credential->proofType = PROOF_TYPE_PSK; + (void)CompareIntParams(params, credential); + credential->proofType = PROOF_TYPE_PKI; + bool ret = CompareIntParams(params, credential); + params->proofType = DEFAULT_CRED_PARAM_VAL; + return ret; +} + + +static bool OnTransmit(int64_t requestId, const uint8_t *data, uint32_t dataLen) +{ + if (memcpy_s(g_transmitData, g_transmitDataMaxLen, data, dataLen) != EOK) { + return false; + } + g_transmitDataLen = dataLen; + g_asyncStatus = ASYNC_STATUS_TRANSMIT; + return true; +} + +static void OnSessionKeyReturned(int64_t requestId, const uint8_t *sessionKey, uint32_t sessionKeyLen) +{ + (void)requestId; + (void)sessionKey; + (void)sessionKeyLen; + return; +} + +static void OnFinish(int64_t requestId, int operationCode, const char *authReturn) +{ + g_asyncStatus = ASYNC_STATUS_FINISH; +} + +static void OnError(int64_t requestId, int operationCode, int errorCode, const char *errorReturn) +{ + g_asyncStatus = ASYNC_STATUS_ERROR; +} + +static char *OnAuthRequest(int64_t requestId, int operationCode, const char* reqParam) +{ + CJson *json = CreateJson(); + AddIntToJson(json, FIELD_CONFIRMATION, REQUEST_ACCEPTED); + AddIntToJson(json, FIELD_OS_ACCOUNT_ID, DEFAULT_OS_ACCOUNT); + if (g_isBind) { + AddStringToJson(json, FIELD_PIN_CODE, PIN_CODE); + } else { + AddStringToJson(json, FIELD_CRED_ID, g_serverCredId); + } + AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID); + char *returnDataStr = PackJsonToString(json); + FreeJson(json); + return returnDataStr; +} + +static DeviceAuthCallback g_caCallback = { + .onTransmit = OnTransmit, + .onSessionKeyReturned = OnSessionKeyReturned, + .onFinish = OnFinish, + .onError = OnError, + .onRequest = OnAuthRequest +}; + +static const char *GenerateBindParams() +{ + CJson *json = CreateJson(); + AddStringToJson(json, FIELD_PIN_CODE, PIN_CODE); + AddIntToJson(json, FIELD_OS_ACCOUNT_ID, DEFAULT_OS_ACCOUNT); + AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID); + char *returnDataStr = PackJsonToString(json); + FreeJson(json); + return returnDataStr; +} + +static const char *GenerateAuthParams() +{ + CJson *json = CreateJson(); + AddStringToJson(json, FIELD_CRED_ID, g_clientCredId); + AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID); + char *returnDataStr = PackJsonToString(json); + FreeJson(json); + return returnDataStr; +} + static int32_t IdentityServiceTestCase001(void) { DeleteDatabase(); @@ -1277,6 +1493,71 @@ static void IdentityServiceTestCase069() cm->destroyInfo(&returnData); } +static void CompareParamsFuzzTestCase(void) +{ + Credential *credential = CreateCredential(); + QueryCredentialParams params = InitQueryCredentialParams(); + bool ret = CompareIntParams(¶ms, credential); + params.credType = ACCOUNT_RELATED; + credential->credType = ACCOUNT_UNRELATED; + ret = CompareIntParams(¶ms, credential); + params.credType = DEFAULT_CRED_PARAM_VAL; + ret = CompareSubject(credential, ¶ms); + ret = CompareIssuer(credential, ¶ms); + ret = CompareOwnerUid(credential, ¶ms); + ret = CompareAuthorziedScope(credential, ¶ms); + ret = CompareKeyFormat(credential, ¶ms); + ret = CompareAlgorithmType(credential, ¶ms); + ret = CompareProofType(credential, ¶ms); + DestroyCredential(credential); +} + + +static void AuthCredDemo(void) +{ + g_asyncStatus = ASYNC_STATUS_WAITING; + bool isClient = true; + SetDeviceStatus(isClient); + const CredAuthManager *ca = GetCredAuthInstance(); + int32_t ret = ca->authCredential(DEFAULT_OS_ACCOUNT, g_isBind ? TEST_REQ_ID : TEST_REQ_ID_AUTH, + g_isBind ? GenerateBindParams() : GenerateAuthParams(), &g_caCallback); + if (ret != HC_SUCCESS) { + g_asyncStatus = ASYNC_STATUS_ERROR; + return; + } + while (g_asyncStatus == ASYNC_STATUS_WAITING) { + usleep(TEST_DEV_AUTH_SLEEP_TIME); + } + while (g_asyncStatus == ASYNC_STATUS_TRANSMIT) { + isClient = !isClient; + SetDeviceStatus(isClient); + g_asyncStatus = ASYNC_STATUS_WAITING; + if (isClient) { + ret = ca->processCredData(g_isBind ? TEST_REQ_ID : TEST_REQ_ID_AUTH, g_transmitData, g_transmitDataLen, + &g_caCallback); + } else { + ret = ca->processCredData(g_isBind ? TEST_REQ_ID_S : TEST_REQ_ID_AUTH_S, g_transmitData, g_transmitDataLen, + &g_caCallback); + } + (void)memset_s(g_transmitData, g_transmitDataMaxLen, 0, g_transmitDataMaxLen); + g_transmitDataLen = 0; + if (ret != HC_SUCCESS) { + g_asyncStatus = ASYNC_STATUS_ERROR; + return; + } + while (g_asyncStatus == ASYNC_STATUS_WAITING) { + usleep(TEST_DEV_AUTH_SLEEP_TIME); + } + if (g_asyncStatus == ASYNC_STATUS_ERROR) { + break; + } + if (g_transmitDataLen > 0) { + g_asyncStatus = ASYNC_STATUS_TRANSMIT; + } + } + SetDeviceStatus(true); +} + static void IdentityServiceTestCase070() { RemoveOsAccountCredInfo(DEFAULT_OS_ACCOUNT); @@ -1289,121 +1570,41 @@ static void IdentityServiceTestCase070() cm->destroyInfo(&returnData); } -static void CompareSubject(Credential *credential, QueryCredentialParams *params) +static void IdentityServiceAuth001(void) { - credential->subject = SUBJECT_ACCESSORY_DEVICE; - (void)CompareIntParams(params, credential); - credential->subject = DEFAULT_CRED_PARAM_VAL; - (void)CompareIntParams(params, credential); - params->subject = SUBJECT_MASTER_CONTROLLER; - credential->subject = SUBJECT_ACCESSORY_DEVICE; - (void)CompareIntParams(params, credential); - credential->subject = SUBJECT_MASTER_CONTROLLER; - (void)CompareIntParams(params, credential); - params->subject = DEFAULT_CRED_PARAM_VAL; + g_isBind = true; + AuthCredDemo(); + const CredManager *cm = GetCredMgrInstance(); + char *clientReturnData = nullptr; + char *serverReturnData = nullptr; + (void)cm->addCredential(DEFAULT_OS_ACCOUNT, CLIENT_AUTH_PARAMS, &clientReturnData); + (void)cm->addCredential(DEFAULT_OS_ACCOUNT, SERVER_AUTH_PARAMS, &serverReturnData); + (void)strcpy_s(g_clientCredId, HcStrlen(clientReturnData) + 1, clientReturnData); + (void)strcpy_s(g_serverCredId, HcStrlen(serverReturnData) + 1, serverReturnData); + g_isBind = false; + AuthCredDemo(); + cm->destroyInfo(&clientReturnData); + cm->destroyInfo(&serverReturnData); } -static void CompareIssuer(Credential *credential, QueryCredentialParams *params) +static void IdentityServiceAuth002(void) { - credential->issuer = SYSTEM_ACCOUNT; - (void)CompareIntParams(params, credential); - credential->issuer = DEFAULT_CRED_PARAM_VAL; - (void)CompareIntParams(params, credential); - params->issuer = SYSTEM_ACCOUNT; - credential->issuer = SYSTEM_ACCOUNT; - (void)CompareIntParams(params, credential); - credential->issuer = APP_ACCOUNT; - (void)CompareIntParams(params, credential); - params->issuer = DEFAULT_CRED_PARAM_VAL; + const CredAuthManager *ca = GetCredAuthInstance(); + ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, nullptr, nullptr); + ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, nullptr, &g_caCallback); + ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, GenerateBindParams(), nullptr); + ca->processCredData(TEST_REQ_ID, nullptr, DATA_LEN, nullptr); + ca->processCredData(TEST_REQ_ID, nullptr, DATA_LEN, &g_caCallback); + ca->processCredData(TEST_REQ_ID, (const uint8_t*)GenerateBindParams(), DATA_LEN, nullptr); } -static void CompareOwnerUid(Credential *credential, QueryCredentialParams *params) +static void IdentityServiceAuthPart(void) { - credential->ownerUid = TEST_OWNER_UID_1; - (void)CompareIntParams(params, credential); - credential->ownerUid = DEFAULT_CRED_PARAM_VAL; - (void)CompareIntParams(params, credential); - params->ownerUid = TEST_OWNER_UID_1; - credential->ownerUid = TEST_OWNER_UID_1; - (void)CompareIntParams(params, credential); - credential->ownerUid = TEST_OWNER_UID_2; - (void)CompareIntParams(params, credential); - params->ownerUid = DEFAULT_CRED_PARAM_VAL; -} - -static void CompareAuthorziedScope(Credential *credential, QueryCredentialParams *params) -{ - credential->authorizedScope = SCOPE_DEVICE; - (void)CompareIntParams(params, credential); - credential->authorizedScope = DEFAULT_CRED_PARAM_VAL; - (void)CompareIntParams(params, credential); - params->authorizedScope = SCOPE_DEVICE; - credential->authorizedScope = SCOPE_DEVICE; - (void)CompareIntParams(params, credential); - credential->authorizedScope = SCOPE_USER; - (void)CompareIntParams(params, credential); - params->authorizedScope = DEFAULT_CRED_PARAM_VAL; -} - -static void CompareKeyFormat(Credential *credential, QueryCredentialParams *params) -{ - credential->keyFormat = SYMMETRIC_KEY; - (void)CompareIntParams(params, credential); - credential->keyFormat = DEFAULT_CRED_PARAM_VAL; - (void)CompareIntParams(params, credential); - params->keyFormat = SYMMETRIC_KEY; - credential->keyFormat = SYMMETRIC_KEY; - (void)CompareIntParams(params, credential); - credential->keyFormat = ASYMMETRIC_PUB_KEY; - (void)CompareIntParams(params, credential); - params->keyFormat = DEFAULT_CRED_PARAM_VAL; -} - -static void CompareAlgorithmType(Credential *credential, QueryCredentialParams *params) -{ - credential->algorithmType = ALGO_TYPE_AES_256; - (void)CompareIntParams(params, credential); - credential->algorithmType = DEFAULT_CRED_PARAM_VAL; - (void)CompareIntParams(params, credential); - params->algorithmType = ALGO_TYPE_AES_256; - credential->algorithmType = ALGO_TYPE_AES_256; - (void)CompareIntParams(params, credential); - credential->algorithmType = ALGO_TYPE_AES_128; - (void)CompareIntParams(params, credential); - params->algorithmType = DEFAULT_CRED_PARAM_VAL; -} - -static void CompareProofType(Credential *credential, QueryCredentialParams *params) -{ - credential->proofType = PROOF_TYPE_PSK; - (void)CompareIntParams(params, credential); - credential->proofType = DEFAULT_CRED_PARAM_VAL; - (void)CompareIntParams(params, credential); - params->proofType = PROOF_TYPE_PSK; - credential->proofType = PROOF_TYPE_PSK; - (void)CompareIntParams(params, credential); - credential->proofType = PROOF_TYPE_PKI; - (void)CompareIntParams(params, credential); - params->proofType = DEFAULT_CRED_PARAM_VAL; -} - -static void IdentityServiceTestCase071() -{ - Credential *credential = CreateCredential(); - QueryCredentialParams params = InitQueryCredentialParams(); - (void)CompareIntParams(¶ms, credential); - params.credType = ACCOUNT_RELATED; - credential->credType = ACCOUNT_UNRELATED; - (void)CompareIntParams(¶ms, credential); - params.credType = DEFAULT_CRED_PARAM_VAL; - CompareSubject(credential, ¶ms); - CompareIssuer(credential, ¶ms); - CompareOwnerUid(credential, ¶ms); - CompareAuthorziedScope(credential, ¶ms); - CompareKeyFormat(credential, ¶ms); - CompareAlgorithmType(credential, ¶ms); - CompareProofType(credential, ¶ms); - DestroyCredential(credential); + DeleteDatabase(); + (void)InitDeviceAuthService(); + IdentityServiceAuth001(); + IdentityServiceAuth002(); + DestroyDeviceAuthService(); } static void IdentiyServiceFuzzPart(void) @@ -1435,7 +1636,6 @@ static void IdentiyServiceFuzzPart(void) (void)IdentityServiceTestCase068(); (void)IdentityServiceTestCase069(); (void)IdentityServiceTestCase070(); - (void)IdentityServiceTestCase071(); DestroyDeviceAuthService(); } @@ -1450,6 +1650,8 @@ bool FuzzDoCallback(const uint8_t* data, size_t size) (void)UpdateCredFuzzPart(); (void)CredListenerFuzzPart(); IdentiyServiceFuzzPart(); + CompareParamsFuzzTestCase(); + IdentityServiceAuthPart(); return true; } } diff --git a/test/unittest/deviceauth/BUILD.gn b/test/unittest/deviceauth/BUILD.gn index ab5c600d..94454fbd 100644 --- a/test/unittest/deviceauth/BUILD.gn +++ b/test/unittest/deviceauth/BUILD.gn @@ -101,7 +101,6 @@ ohos_unittest("deviceauth_llt") { "source/deviceauth_standard_test.cpp", "source/group_operation_common_test.cpp", "source/identity_manager_test.cpp", - "source/iso_auth_task_test.cpp", "source/mk_agree_test.cpp", "source/os_account_adapter_mock.c", "source/privacy_enhancement_test.cpp", @@ -350,6 +349,7 @@ ohos_unittest("device_auth_identity_service_test") { "${authenticators_path}/src/account_unrelated/pake_task/pake_v1_task/pake_v1_task_main.c", "${identity_service_path}/session/src/cred_session_util.c", "${identity_service_path}/src/identity_operation.c", + "${cred_data_manager_path}/src/credential_data_manager.c", ] sources += [ diff --git a/test/unittest/deviceauth/source/deviceauth_identity_service_test.cpp b/test/unittest/deviceauth/source/deviceauth_identity_service_test.cpp index 894dfba1..4f0f2cd9 100644 --- a/test/unittest/deviceauth/source/deviceauth_identity_service_test.cpp +++ b/test/unittest/deviceauth/source/deviceauth_identity_service_test.cpp @@ -38,6 +38,8 @@ #include "base/security/device_auth/services/identity_service/src/identity_operation.c" #include "base/security/device_auth/services/identity_service/src/identity_service_impl.c" #include "base/security/device_auth/services/identity_service/session/src/cred_session_util.c" +#include "base/security/device_auth/services/data_manager/cred_data_manager/src/credential_data_manager.c" + #include "cred_listener.h" using namespace std; @@ -54,6 +56,12 @@ namespace { #define TEST_CRED_TYPE_1 2 #define TEST_CRED_TYPE_2 3 #define TEST_CRED_TYPE_3 4 +#define TEST_REQ_ID 11111111 +#define TEST_REQ_ID_S 22222222 +#define TEST_REQ_ID_AUTH 12312121 +#define TEST_REQ_ID_AUTH_S 4352345234534 +#define TEST_OWNER_UID_1 1 +#define TEST_OWNER_UID_2 2 #define TEST_CRED_INFO_ID "TestCredInfoId" #define TEST_PIN_CODE "123456" #define TEST_PIN_CODE_1 "" @@ -63,7 +71,7 @@ namespace { #define DEFAULT_OS_ACCOUNT_ID 100 #define DEFAULT_VAL 0 #define DEFAULT_CHANNEL_TYPE 0 - +#define TEST_DEV_AUTH_SLEEP_TIME 50000 #define TEST_CRED_DATA_PATH "/data/service/el1/public/deviceauthMock/hccredential.dat" static const char *TEST_DATA = "testData"; static const char *ADD_PARAMS = @@ -72,6 +80,20 @@ static const char *ADD_PARAMS = "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\"," "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"]," "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}"; +static const char *CLIENT_AUTH_PARAMS = + "{\"credType\":2,\"keyFormat\":1,\"algorithmType\":1,\"subject\":1," + "\"proofType\":1,\"method\":2,\"authorizedScope\":1," + "\"keyValue\":\"1234567812345678123456781234567812345678123456781234567812345678\"," + "\"deviceId\":\"52E2706717D5C39D736E134CC1E3BE1BAA2AA52DB7C76A37C749558BD2E6492C\",\"credOwner\":\"TestAppId\"," + "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"]," + "\"peerUserSpaceId\":\"0\",\"extendInfo\":\"\"}"; +static const char *SERVER_AUTH_PARAMS = + "{\"credType\":2,\"keyFormat\":1,\"algorithmType\":1,\"subject\":1," + "\"proofType\":1,\"method\":2,\"authorizedScope\":1," + "\"keyValue\":\"1234567812345678123456781234567812345678123456781234567812345678\"," + "\"deviceId\":\"5420459D93FE773F9945FD64277FBA2CAB8FB996DDC1D0B97676FBB1242B3930\",\"credOwner\":\"TestAppId\"," + "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"]," + "\"peerUserSpaceId\":\"0\",\"extendInfo\":\"\"}"; static const char *ADD_PARAMS1 = "{\"credType\":0,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1," "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\"," @@ -206,6 +228,22 @@ static const char *QUERY_PARAMS = "{\"deviceId\":\"TestDeviceId\"}"; static const char *QUERY_PARAMS1 = "{\"deviceId\":\"TestDeviceId1\"}"; static const char *DEL_PARAMS = "{\"credOwner\":\"TestAppId\"}"; static const char *DEL_PARAMS1 = "{\"credOwner\":\"TestAppId\",\"userIdHash\":\"12D2\",\"deviceIdHash\":\"12D2\"}"; +enum AsyncStatus { + ASYNC_STATUS_WAITING = 0, + ASYNC_STATUS_TRANSMIT = 1, + ASYNC_STATUS_FINISH = 2, + ASYNC_STATUS_ERROR = 3 +}; + +static AsyncStatus volatile g_asyncStatus; +static uint32_t g_transmitDataMaxLen = 2048; +static uint8_t g_transmitData[2048] = { 0 }; +static uint32_t g_transmitDataLen = 0; +static bool g_isBind = false; +static char g_clientCredId[256] = { 0 }; +static char g_serverCredId[256] = { 0 }; +static const char *PIN_CODE = "000000"; + enum CredListenerStatus { CRED_LISTENER_INIT = 0, CRED_LISTENER_ON_ADD = 1, @@ -247,6 +285,111 @@ static void DeleteDatabase() HcFileRemove(TEST_CRED_DATA_PATH); } +static bool CompareSubject(Credential *credential, QueryCredentialParams *params) +{ + credential->subject = SUBJECT_ACCESSORY_DEVICE; + (void)CompareIntParams(params, credential); + credential->subject = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->subject = SUBJECT_MASTER_CONTROLLER; + credential->subject = SUBJECT_ACCESSORY_DEVICE; + (void)CompareIntParams(params, credential); + credential->subject = SUBJECT_MASTER_CONTROLLER; + bool ret = CompareIntParams(params, credential); + params->subject = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareIssuer(Credential *credential, QueryCredentialParams *params) +{ + credential->issuer = SYSTEM_ACCOUNT; + (void)CompareIntParams(params, credential); + credential->issuer = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->issuer = SYSTEM_ACCOUNT; + credential->issuer = SYSTEM_ACCOUNT; + (void)CompareIntParams(params, credential); + credential->issuer = APP_ACCOUNT; + bool ret = CompareIntParams(params, credential); + params->issuer = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareOwnerUid(Credential *credential, QueryCredentialParams *params) +{ + credential->ownerUid = TEST_OWNER_UID_1; + (void)CompareIntParams(params, credential); + credential->ownerUid = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->ownerUid = TEST_OWNER_UID_1; + credential->ownerUid = TEST_OWNER_UID_1; + (void)CompareIntParams(params, credential); + credential->ownerUid = TEST_OWNER_UID_2; + bool ret = CompareIntParams(params, credential); + params->ownerUid = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareAuthorziedScope(Credential *credential, QueryCredentialParams *params) +{ + credential->authorizedScope = SCOPE_DEVICE; + (void)CompareIntParams(params, credential); + credential->authorizedScope = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->authorizedScope = SCOPE_DEVICE; + credential->authorizedScope = SCOPE_DEVICE; + (void)CompareIntParams(params, credential); + credential->authorizedScope = SCOPE_USER; + bool ret = CompareIntParams(params, credential); + params->authorizedScope = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareKeyFormat(Credential *credential, QueryCredentialParams *params) +{ + credential->keyFormat = SYMMETRIC_KEY; + (void)CompareIntParams(params, credential); + credential->keyFormat = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->keyFormat = SYMMETRIC_KEY; + credential->keyFormat = SYMMETRIC_KEY; + (void)CompareIntParams(params, credential); + credential->keyFormat = ASYMMETRIC_PUB_KEY; + bool ret = CompareIntParams(params, credential); + params->keyFormat = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareAlgorithmType(Credential *credential, QueryCredentialParams *params) +{ + credential->algorithmType = ALGO_TYPE_AES_256; + (void)CompareIntParams(params, credential); + credential->algorithmType = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->algorithmType = ALGO_TYPE_AES_256; + credential->algorithmType = ALGO_TYPE_AES_256; + (void)CompareIntParams(params, credential); + credential->algorithmType = ALGO_TYPE_AES_128; + bool ret = CompareIntParams(params, credential); + params->algorithmType = DEFAULT_CRED_PARAM_VAL; + return ret; +} + +static bool CompareProofType(Credential *credential, QueryCredentialParams *params) +{ + credential->proofType = PROOF_TYPE_PSK; + (void)CompareIntParams(params, credential); + credential->proofType = DEFAULT_CRED_PARAM_VAL; + (void)CompareIntParams(params, credential); + params->proofType = PROOF_TYPE_PSK; + credential->proofType = PROOF_TYPE_PSK; + (void)CompareIntParams(params, credential); + credential->proofType = PROOF_TYPE_PKI; + bool ret = CompareIntParams(params, credential); + params->proofType = DEFAULT_CRED_PARAM_VAL; + return ret; +} + class GetCredMgrInstanceTest : public testing::Test { public: static void SetUpTestCase(); @@ -476,6 +619,35 @@ HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest018, TestSize.Level0) EXPECT_EQ(ret, IS_SUCCESS); } +HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest019, TestSize.Level0) +{ + Credential *credential = CreateCredential(); + ASSERT_NE(credential, nullptr); + QueryCredentialParams params = InitQueryCredentialParams(); + bool ret = CompareIntParams(¶ms, credential); + EXPECT_EQ(ret, true); + params.credType = ACCOUNT_RELATED; + credential->credType = ACCOUNT_UNRELATED; + ret = CompareIntParams(¶ms, credential); + EXPECT_EQ(ret, false); + params.credType = DEFAULT_CRED_PARAM_VAL; + ret = CompareSubject(credential, ¶ms); + EXPECT_EQ(ret, true); + ret = CompareIssuer(credential, ¶ms); + EXPECT_EQ(ret, false); + ret = CompareOwnerUid(credential, ¶ms); + EXPECT_EQ(ret, false); + ret = CompareAuthorziedScope(credential, ¶ms); + EXPECT_EQ(ret, false); + ret = CompareKeyFormat(credential, ¶ms); + EXPECT_EQ(ret, false); + ret = CompareAlgorithmType(credential, ¶ms); + EXPECT_EQ(ret, false); + ret = CompareProofType(credential, ¶ms); + EXPECT_EQ(ret, false); + DestroyCredential(credential); +} + class CredMgrExportCredentialTest : public testing::Test { public: static void SetUpTestCase(); @@ -1668,4 +1840,182 @@ HWTEST_F(CredSessionUtilTest, CredSessionUtilTest012, TestSize.Level0) EXPECT_NE(ret, IS_SUCCESS); FreeJson(in); } + +static bool OnTransmit(int64_t requestId, const uint8_t *data, uint32_t dataLen) +{ + if (memcpy_s(g_transmitData, g_transmitDataMaxLen, data, dataLen) != EOK) { + return false; + } + g_transmitDataLen = dataLen; + g_asyncStatus = ASYNC_STATUS_TRANSMIT; + return true; +} + +static void OnSessionKeyReturned(int64_t requestId, const uint8_t *sessionKey, uint32_t sessionKeyLen) +{ + (void)requestId; + (void)sessionKey; + (void)sessionKeyLen; + return; +} + +static void OnFinish(int64_t requestId, int operationCode, const char *authReturn) +{ + g_asyncStatus = ASYNC_STATUS_FINISH; +} + +static void OnError(int64_t requestId, int operationCode, int errorCode, const char *errorReturn) +{ + g_asyncStatus = ASYNC_STATUS_ERROR; +} + +static char *OnAuthRequest(int64_t requestId, int operationCode, const char* reqParam) +{ + CJson *json = CreateJson(); + AddIntToJson(json, FIELD_CONFIRMATION, REQUEST_ACCEPTED); + AddIntToJson(json, FIELD_OS_ACCOUNT_ID, DEFAULT_OS_ACCOUNT); + if (g_isBind) { + AddStringToJson(json, FIELD_PIN_CODE, PIN_CODE); + } else { + AddStringToJson(json, FIELD_CRED_ID, g_serverCredId); + } + AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID); + char *returnDataStr = PackJsonToString(json); + FreeJson(json); + return returnDataStr; +} + +static DeviceAuthCallback g_caCallback = { + .onTransmit = OnTransmit, + .onSessionKeyReturned = OnSessionKeyReturned, + .onFinish = OnFinish, + .onError = OnError, + .onRequest = OnAuthRequest +}; + +static const char *GenerateBindParams() +{ + CJson *json = CreateJson(); + AddStringToJson(json, FIELD_PIN_CODE, PIN_CODE); + AddIntToJson(json, FIELD_OS_ACCOUNT_ID, DEFAULT_OS_ACCOUNT); + AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID); + char *returnDataStr = PackJsonToString(json); + FreeJson(json); + return returnDataStr; +} + +static const char *GenerateAuthParams() +{ + CJson *json = CreateJson(); + AddStringToJson(json, FIELD_CRED_ID, g_clientCredId); + AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID); + char *returnDataStr = PackJsonToString(json); + FreeJson(json); + return returnDataStr; +} + +static void AuthCredDemo(void) +{ + g_asyncStatus = ASYNC_STATUS_WAITING; + bool isClient = true; + SetDeviceStatus(isClient); + const CredAuthManager *ca = GetCredAuthInstance(); + ASSERT_NE(ca, nullptr); + int32_t ret = ca->authCredential(DEFAULT_OS_ACCOUNT, g_isBind ? TEST_REQ_ID : TEST_REQ_ID_AUTH, + g_isBind ? GenerateBindParams() : GenerateAuthParams(), &g_caCallback); + if (ret != HC_SUCCESS) { + g_asyncStatus = ASYNC_STATUS_ERROR; + return; + } + while (g_asyncStatus == ASYNC_STATUS_WAITING) { + usleep(TEST_DEV_AUTH_SLEEP_TIME); + } + while (g_asyncStatus == ASYNC_STATUS_TRANSMIT) { + isClient = !isClient; + SetDeviceStatus(isClient); + g_asyncStatus = ASYNC_STATUS_WAITING; + if (isClient) { + ret = ca->processCredData(g_isBind ? TEST_REQ_ID : TEST_REQ_ID_AUTH, g_transmitData, g_transmitDataLen, + &g_caCallback); + } else { + ret = ca->processCredData(g_isBind ? TEST_REQ_ID_S : TEST_REQ_ID_AUTH_S, g_transmitData, g_transmitDataLen, + &g_caCallback); + } + (void)memset_s(g_transmitData, g_transmitDataMaxLen, 0, g_transmitDataMaxLen); + g_transmitDataLen = 0; + if (ret != HC_SUCCESS) { + g_asyncStatus = ASYNC_STATUS_ERROR; + return; + } + while (g_asyncStatus == ASYNC_STATUS_WAITING) { + usleep(TEST_DEV_AUTH_SLEEP_TIME); + } + if (g_asyncStatus == ASYNC_STATUS_ERROR) { + break; + } + if (g_transmitDataLen > 0) { + g_asyncStatus = ASYNC_STATUS_TRANSMIT; + } + } + SetDeviceStatus(true); +} + +class CredAuthTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CredAuthTest::SetUpTestCase() {} +void CredAuthTest::TearDownTestCase() {} + +void CredAuthTest::SetUp() +{ + DeleteDatabase(); + int32_t ret = InitDeviceAuthService(); + EXPECT_EQ(ret, HC_SUCCESS); +} + +void CredAuthTest::TearDown() +{ + DestroyDeviceAuthService(); +} + +HWTEST_F(CredAuthTest, CredAuthTest001, TestSize.Level0) +{ + const CredAuthManager *ca = GetCredAuthInstance(); + ASSERT_NE(ca, nullptr); + g_isBind = true; + AuthCredDemo(); + ASSERT_EQ(g_asyncStatus, ASYNC_STATUS_FINISH); + const CredManager *cm = GetCredMgrInstance(); + ASSERT_NE(cm, nullptr); + char *clientReturnData = nullptr; + char *serverReturnData = nullptr; + int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, CLIENT_AUTH_PARAMS, &clientReturnData); + EXPECT_EQ(ret, IS_SUCCESS); + ret = cm->addCredential(DEFAULT_OS_ACCOUNT, SERVER_AUTH_PARAMS, &serverReturnData); + EXPECT_EQ(ret, IS_SUCCESS); + (void)strcpy_s(g_clientCredId, HcStrlen(clientReturnData) + 1, clientReturnData); + (void)strcpy_s(g_serverCredId, HcStrlen(serverReturnData) + 1, serverReturnData); + g_isBind = false; + AuthCredDemo(); + ASSERT_EQ(g_asyncStatus, ASYNC_STATUS_FINISH); + cm->destroyInfo(&clientReturnData); + cm->destroyInfo(&serverReturnData); +} + +HWTEST_F(CredAuthTest, CredAuthTest002, TestSize.Level0) +{ + const CredAuthManager *ca = GetCredAuthInstance(); + ASSERT_NE(ca, nullptr); + ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, nullptr, nullptr); + ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, nullptr, &g_caCallback); + ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, GenerateBindParams(), nullptr); + ca->processCredData(TEST_REQ_ID, nullptr, DATA_LEN, nullptr); + ca->processCredData(TEST_REQ_ID, nullptr, DATA_LEN, &g_caCallback); + ca->processCredData(TEST_REQ_ID, (const uint8_t*)GenerateBindParams(), DATA_LEN, nullptr); +} } // namespace \ No newline at end of file diff --git a/test/unittest/deviceauth/source/deviceauth_interface_test.cpp b/test/unittest/deviceauth/source/deviceauth_interface_test.cpp index 15d3784f..cb33d943 100644 --- a/test/unittest/deviceauth/source/deviceauth_interface_test.cpp +++ b/test/unittest/deviceauth/source/deviceauth_interface_test.cpp @@ -76,6 +76,7 @@ namespace { #define TEST_AUTH_ID "TestAuthId" #define TEST_KEY_LEN_1 10 #define TEST_KEY_LEN_2 40 +#define TEST_LEN 16 #define TEST_OS_ACCOUNT_ID 0 #define TEST_DEVICE_PK "testDevicePk" #define TEST_VERSION 0 @@ -1798,6 +1799,15 @@ HWTEST_F(DeviceAuthInterfaceTest, DeviceAuthInterfaceTest033, TestSize.Level0) ASSERT_NE(res, HC_SUCCESS); } + +HWTEST_F(DeviceAuthInterfaceTest, DeviceAuthInterfaceTest0331, TestSize.Level0) +{ + // dev_session_util.c interface test + (void)GetSelfUserId(DEFAULT_OS_ACCOUNT, nullptr, TEST_LEN); + char userId[TEST_LEN]; + (void)GetSelfUserId(DEFAULT_OS_ACCOUNT, userId, TEST_LEN); +} + HWTEST_F(DeviceAuthInterfaceTest, DeviceAuthInterfaceTest034, TestSize.Level0) { // account_task_manager.c interface test diff --git a/test/unittest/deviceauth/source/p2p_bind_ipc_test.cpp b/test/unittest/deviceauth/source/p2p_bind_ipc_test.cpp index db0e19d4..4b17f046 100644 --- a/test/unittest/deviceauth/source/p2p_bind_ipc_test.cpp +++ b/test/unittest/deviceauth/source/p2p_bind_ipc_test.cpp @@ -342,7 +342,7 @@ HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest002, TestSize.Level0) HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest003, TestSize.Level0) { int32_t res = ProcessCredentialDemo(CRED_OP_DELETE, DEFAULT_SERVICE_TYPE); - ASSERT_NE(res, HC_SUCCESS); + ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_QUERY, DEFAULT_SERVICE_TYPE); ASSERT_NE(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_CREATE, DEFAULT_SERVICE_TYPE); @@ -358,7 +358,7 @@ HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest003, TestSize.Level0) HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest004, TestSize.Level0) { int32_t res = ProcessCredentialDemo(CRED_OP_CREATE, DEFAULT_SERVICE_TYPE); - ASSERT_NE(res, HC_SUCCESS); + ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_QUERY, DEFAULT_SERVICE_TYPE); ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_DELETE, DEFAULT_SERVICE_TYPE); @@ -372,7 +372,7 @@ HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest005, TestSize.Level0) int32_t res = CreateServerKeyPair(); ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemoImport(SERVICE_TYPE_IMPORT); - ASSERT_NE(res, HC_SUCCESS); + ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_QUERY, SERVICE_TYPE_IMPORT); ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_DELETE, SERVICE_TYPE_IMPORT); @@ -386,7 +386,7 @@ HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest005, TestSize.Level0) HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest006, TestSize.Level0) { int32_t res = CreateServerKeyPair(); - ASSERT_NE(res, HC_SUCCESS); + ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemoImport(SERVICE_TYPE_IMPORT); ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemoImport(SERVICE_TYPE_IMPORT); @@ -404,7 +404,7 @@ HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest006, TestSize.Level0) HWTEST_F(DaAuthDeviceTest, DaAuthDeviceTest007, TestSize.Level0) { int32_t res = ProcessCredentialDemo(CRED_OP_CREATE, DEFAULT_SERVICE_TYPE); - ASSERT_NE(res, HC_SUCCESS); + ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_QUERY, DEFAULT_SERVICE_TYPE); ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_CREATE, DEFAULT_SERVICE_TYPE); @@ -472,7 +472,7 @@ void ApiAccessPassTest::TearDown() HWTEST_F(ApiAccessPassTest, ApiAccessPassTest001, TestSize.Level0) { int32_t res = ProcessCredentialDemo(CRED_OP_CREATE, DEFAULT_SERVICE_TYPE); - ASSERT_NE(res, HC_SUCCESS); + ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_QUERY, DEFAULT_SERVICE_TYPE); ASSERT_EQ(res, HC_SUCCESS); res = ProcessCredentialDemo(CRED_OP_DELETE, DEFAULT_SERVICE_TYPE); diff --git a/test/unittest/tdd_framework/unit_test/services/creds_manager/BUILD.gn b/test/unittest/tdd_framework/unit_test/services/creds_manager/BUILD.gn index e121a540..da24394a 100644 --- a/test/unittest/tdd_framework/unit_test/services/creds_manager/BUILD.gn +++ b/test/unittest/tdd_framework/unit_test/services/creds_manager/BUILD.gn @@ -60,6 +60,7 @@ ohos_unittest("creds_manager_test") { "${tdd_framework_path}/common/src/hc_dev_info_mock.c", "${tdd_framework_path}/common/src/os_account_adapter_mock.c", ] + sources -= [ "${services_path}/device_auth.c" ] include_dirs += identity_manager_inc sources += identity_manager_files diff --git a/test/unittest/tdd_framework/unit_test/services/creds_manager/creds_manager_test.cpp b/test/unittest/tdd_framework/unit_test/services/creds_manager/creds_manager_test.cpp index 8db890fe..7678630d 100644 --- a/test/unittest/tdd_framework/unit_test/services/creds_manager/creds_manager_test.cpp +++ b/test/unittest/tdd_framework/unit_test/services/creds_manager/creds_manager_test.cpp @@ -28,6 +28,7 @@ #include "hc_log.h" #include "json_utils.h" #include "securec.h" +#include "base/security/device_auth/services/device_auth.c" using namespace std; using namespace testing::ext; @@ -1945,4 +1946,41 @@ HWTEST_F(CredsManagerTest, CredsManagerTest064, TestSize.Level0) HcFree(sharedSecret.val); FreeJson(json); } + +class DeviceAuthTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void DeviceAuthTest::SetUpTestCase() {} +void DeviceAuthTest::TearDownTestCase() {} + +void DeviceAuthTest::SetUp() +{ + DeleteDatabase(); + int ret = InitDeviceAuthService(); + EXPECT_EQ(ret, HC_SUCCESS); +} + +void DeviceAuthTest::TearDown() +{ + DestroyDeviceAuthService(); +} + +HWTEST_F(DeviceAuthTest, DeviceAuthTest001, TestSize.Level0) +{ + int32_t ret = AddOriginDataForPlugin(nullptr, nullptr); + EXPECT_NE(ret, HC_SUCCESS); + ret = AddOriginDataForPlugin(nullptr, (const uint8_t*)TEST_ADD_PARAMS.c_str()); + EXPECT_NE(ret, HC_SUCCESS); + CJson *json = CreateJson(); + ret = AddOriginDataForPlugin(json, (const uint8_t*)TEST_ADD_PARAMS.c_str()); + EXPECT_EQ(ret, HC_SUCCESS); + ret = AddOriginDataForPlugin(json, nullptr); + EXPECT_NE(ret, HC_SUCCESS); + FreeJson(json); +} } \ No newline at end of file