mirror of
https://gitee.com/openharmony/security_huks
synced 2024-11-30 10:21:22 +00:00
Add HksRenameKeyAlias API TDD tests
Signed-off-by: l00889714 <linzhaosheng@huawei.com>
This commit is contained in:
parent
e44fbb204a
commit
a8e4806100
@ -45,7 +45,7 @@ enum HksIpcInterfaceCode {
|
|||||||
HKS_MSG_CHIPSET_PLATFORM_DECRYPT,
|
HKS_MSG_CHIPSET_PLATFORM_DECRYPT,
|
||||||
HKS_MSG_ATTEST_KEY_ASYNC_REPLY,
|
HKS_MSG_ATTEST_KEY_ASYNC_REPLY,
|
||||||
HKS_MSG_LIST_ALIASES,
|
HKS_MSG_LIST_ALIASES,
|
||||||
HKS_MSG_RENAME_KEY_ALIASES,
|
HKS_MSG_RENAME_KEY_ALIAS,
|
||||||
/* new cmd type must be added before HKS_MSG_MAX */
|
/* new cmd type must be added before HKS_MSG_MAX */
|
||||||
HKS_MSG_MAX,
|
HKS_MSG_MAX,
|
||||||
};
|
};
|
||||||
|
@ -126,6 +126,7 @@ static uint32_t g_validTags[] = {
|
|||||||
HKS_TAG_IF_NEED_APPEND_AUTH_INFO,
|
HKS_TAG_IF_NEED_APPEND_AUTH_INFO,
|
||||||
HKS_TAG_VERIFIED_AUTH_TOKEN,
|
HKS_TAG_VERIFIED_AUTH_TOKEN,
|
||||||
HKS_TAG_IS_APPEND_UPDATE_DATA,
|
HKS_TAG_IS_APPEND_UPDATE_DATA,
|
||||||
|
HKS_TAG_IS_COPY_NEW_KEY,
|
||||||
|
|
||||||
HKS_TAG_PROCESS_NAME,
|
HKS_TAG_PROCESS_NAME,
|
||||||
HKS_TAG_PACKAGE_NAME,
|
HKS_TAG_PACKAGE_NAME,
|
||||||
|
@ -926,9 +926,7 @@ int32_t HksClientRenameKeyAlias(const struct HksBlob *oldKeyAlias, const struct
|
|||||||
}
|
}
|
||||||
ret = HksRenameKeyAliasPack(oldKeyAlias, newKeyAlias, newParamSet, &inBlob);
|
ret = HksRenameKeyAliasPack(oldKeyAlias, newKeyAlias, newParamSet, &inBlob);
|
||||||
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "HksRenameKeyAliasPack failed!")
|
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "HksRenameKeyAliasPack failed!")
|
||||||
|
ret = HksSendRequest(HKS_MSG_RENAME_KEY_ALIAS, &inBlob, NULL, newParamSet);
|
||||||
ret = HksSendRequest(HKS_MSG_RENAME_KEY_ALIASES, &inBlob, NULL, newParamSet);
|
|
||||||
|
|
||||||
} while (0);
|
} while (0);
|
||||||
HksFreeParamSet(&newParamSet);
|
HksFreeParamSet(&newParamSet);
|
||||||
HKS_FREE_BLOB(inBlob);
|
HKS_FREE_BLOB(inBlob);
|
||||||
|
@ -460,4 +460,13 @@ int32_t HksClientListAliases(const struct HksParamSet *paramSet, struct HksKeyAl
|
|||||||
0
|
0
|
||||||
};
|
};
|
||||||
return HksServiceListAliases(&processInfo, paramSet, outData);
|
return HksServiceListAliases(&processInfo, paramSet, outData);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t HksClientRenameKeyAlias(const struct HksBlob *oldKeyAlias, const struct HksParamSet *paramSet,
|
||||||
|
const struct HksBlob *newKeyAlias)
|
||||||
|
{
|
||||||
|
(void)oldKeyAlias;
|
||||||
|
(void)paramSet;
|
||||||
|
(void)newKeyAlias;
|
||||||
|
return HKS_ERROR_NOT_SUPPORTED;
|
||||||
}
|
}
|
@ -275,9 +275,8 @@ int32_t HksCheckIpcRenameKeyAlias(const struct HksBlob *oldKeyAlias, const struc
|
|||||||
int32_t ret = HksCheckBlob2AndParamSet(oldKeyAlias, newKeyAlias, paramSet);
|
int32_t ret = HksCheckBlob2AndParamSet(oldKeyAlias, newKeyAlias, paramSet);
|
||||||
HKS_IF_NOT_SUCC_LOGE_RETURN(ret, ret, "check keyAlias or paramSet failed")
|
HKS_IF_NOT_SUCC_LOGE_RETURN(ret, ret, "check keyAlias or paramSet failed")
|
||||||
|
|
||||||
if (((sizeof(oldKeyAlias->size) + ALIGN_SIZE(oldKeyAlias->size) +
|
if ((MAX_PROCESS_SIZE - sizeof(oldKeyAlias->size) - ALIGN_SIZE(oldKeyAlias->size) -
|
||||||
sizeof(newKeyAlias->size) + ALIGN_SIZE(newKeyAlias->size) +
|
sizeof(newKeyAlias->size) - ALIGN_SIZE(newKeyAlias->size) < ALIGN_SIZE(paramSet->paramSetSize))) {
|
||||||
ALIGN_SIZE(paramSet->paramSetSize)) > MAX_PROCESS_SIZE)) {
|
|
||||||
HKS_LOG_E("ipc rename key alias check size failed");
|
HKS_LOG_E("ipc rename key alias check size failed");
|
||||||
return HKS_ERROR_INVALID_ARGUMENT;
|
return HKS_ERROR_INVALID_ARGUMENT;
|
||||||
}
|
}
|
||||||
|
@ -63,5 +63,6 @@
|
|||||||
HksConvertErrCode;
|
HksConvertErrCode;
|
||||||
HksMalloc;
|
HksMalloc;
|
||||||
HksFreeKeyAliasSet;
|
HksFreeKeyAliasSet;
|
||||||
|
HksRenameKeyAlias;
|
||||||
local: *;
|
local: *;
|
||||||
};
|
};
|
@ -339,8 +339,8 @@ int32_t HksCheckOldKeyExist(const struct HksProcessInfo *processInfo, const stru
|
|||||||
HKS_IF_NOT_SUCC_RETURN(ret, ret);
|
HKS_IF_NOT_SUCC_RETURN(ret, ret);
|
||||||
|
|
||||||
ret = HksManageStoreIsKeyBlobExist(processInfo, paramSet, oldKeyAlias, HKS_STORAGE_TYPE_KEY);
|
ret = HksManageStoreIsKeyBlobExist(processInfo, paramSet, oldKeyAlias, HKS_STORAGE_TYPE_KEY);
|
||||||
if (ret != HKS_SUCCESS) {
|
if (ret == HKS_ERROR_NOT_EXIST) {
|
||||||
HKS_LOG_E("oldKey not exist !");
|
HKS_LOG_E("the oldKey not exist!");
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -353,10 +353,11 @@ int32_t HksCheckNewKeyNotExist(const struct HksProcessInfo *processInfo, const s
|
|||||||
|
|
||||||
ret = HksManageStoreIsKeyBlobExist(processInfo, paramSet, newKeyAlias, HKS_STORAGE_TYPE_KEY);
|
ret = HksManageStoreIsKeyBlobExist(processInfo, paramSet, newKeyAlias, HKS_STORAGE_TYPE_KEY);
|
||||||
if (ret == HKS_SUCCESS) {
|
if (ret == HKS_SUCCESS) {
|
||||||
HKS_LOG_E("newKey is exist!");
|
HKS_LOG_E("the newKey is already exist!");
|
||||||
return HKS_ERROR_ALREADY_EXISTS;
|
return HKS_ERROR_ALREADY_EXISTS;
|
||||||
}
|
}
|
||||||
if (ret == HKS_ERROR_NOT_EXIST) {
|
if (ret == HKS_ERROR_NOT_EXIST) {
|
||||||
|
HKS_LOG_I("the newKey is not exist!");
|
||||||
return HKS_SUCCESS;
|
return HKS_SUCCESS;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -2084,18 +2084,18 @@ int32_t HksServiceRenameKeyAlias(const struct HksProcessInfo *processInfo, const
|
|||||||
ret = HKsCheckOldKeyAliasDiffNewKeyAlias(oldKeyAlias, newKeyAlias);
|
ret = HKsCheckOldKeyAliasDiffNewKeyAlias(oldKeyAlias, newKeyAlias);
|
||||||
if (ret != HKS_SUCCESS) {
|
if (ret != HKS_SUCCESS) {
|
||||||
HKS_LOG_E("the new key alias same as old key alias !, ret = %" LOG_PUBLIC "d", ret);
|
HKS_LOG_E("the new key alias same as old key alias !, ret = %" LOG_PUBLIC "d", ret);
|
||||||
return HKS_ERROR_BAD_STATE;
|
return HKS_ERROR_INVALID_ARGUMENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = HksCheckOldKeyExist(processInfo, oldKeyAlias, paramSet);
|
ret = HksCheckOldKeyExist(processInfo, oldKeyAlias, paramSet);
|
||||||
if (ret != HKS_SUCCESS) {
|
if (ret != HKS_SUCCESS) {
|
||||||
HKS_LOG_E("the old key is not exist !, ret = %" LOG_PUBLIC "d", ret);
|
HKS_LOG_E("HksCheckOldKeyExist failed!, ret = %" LOG_PUBLIC "d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = HksCheckNewKeyNotExist(processInfo, newKeyAlias, paramSet);
|
ret = HksCheckNewKeyNotExist(processInfo, newKeyAlias, paramSet);
|
||||||
if (ret != HKS_SUCCESS) {
|
if (ret != HKS_SUCCESS) {
|
||||||
HKS_LOG_E("the new key is already exist !, ret = %" LOG_PUBLIC "d", ret);
|
HKS_LOG_E("HksCheckNewKeyNotExist failed!, ret = %" LOG_PUBLIC "d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,10 @@ void HksServiceDeleteUIDKeyAliasFile(const struct HksProcessInfo *processInfo);
|
|||||||
|
|
||||||
int32_t HksListAliasesByProcessName(const struct HksStoreFileInfo *fileInfo, struct HksKeyAliasSet **outData);
|
int32_t HksListAliasesByProcessName(const struct HksStoreFileInfo *fileInfo, struct HksKeyAliasSet **outData);
|
||||||
|
|
||||||
int32_t HksStoreRenameKeyAlias(const struct HksStoreFileInfo *oldFileInfo,
|
int32_t HksStorageCopyKeyBlobFile(const char *srcPath, const char *srcFileName,
|
||||||
|
const char *destPath, const char *destFileName);
|
||||||
|
|
||||||
|
int32_t HksStoreRenameKeyAlias(const struct HksStoreFileInfo *oldFileInfo,
|
||||||
const struct HksStoreFileInfo *newFileInfo, bool isCopy);
|
const struct HksStoreFileInfo *newFileInfo, bool isCopy);
|
||||||
|
|
||||||
#ifdef HKS_ENABLE_SMALL_TO_SERVICE
|
#ifdef HKS_ENABLE_SMALL_TO_SERVICE
|
||||||
|
@ -148,7 +148,6 @@ static int32_t HksStorageRemoveFile(const char *path, const char *fileName)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SUPPORT_STORAGE_BACKUP
|
|
||||||
static int32_t CopyKeyBlobFromSrc(const char *srcPath, const char *srcFileName,
|
static int32_t CopyKeyBlobFromSrc(const char *srcPath, const char *srcFileName,
|
||||||
const char *destPath, const char *destFileName)
|
const char *destPath, const char *destFileName)
|
||||||
{
|
{
|
||||||
@ -185,7 +184,6 @@ static int32_t CopyKeyBlobFromSrc(const char *srcPath, const char *srcFileName,
|
|||||||
HKS_FREE(buffer);
|
HKS_FREE(buffer);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static int32_t GetKeyBlobFromFile(const char *path, const char *fileName, struct HksBlob *keyBlob)
|
static int32_t GetKeyBlobFromFile(const char *path, const char *fileName, struct HksBlob *keyBlob)
|
||||||
{
|
{
|
||||||
@ -868,7 +866,9 @@ int32_t HksListAliasesByProcessName(const struct HksStoreFileInfo *fileInfo, str
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t HksStoreRenameKeyAlias(const struct HksStoreFileInfo *oldFileInfo,
|
#endif
|
||||||
|
|
||||||
|
int32_t HksStoreRenameKeyAlias(const struct HksStoreFileInfo *oldFileInfo,
|
||||||
const struct HksStoreFileInfo *newFileInfo, bool isCopy)
|
const struct HksStoreFileInfo *newFileInfo, bool isCopy)
|
||||||
{
|
{
|
||||||
int32_t ret;
|
int32_t ret;
|
||||||
@ -876,9 +876,11 @@ int32_t HksStoreRenameKeyAlias(const struct HksStoreFileInfo *oldFileInfo,
|
|||||||
ret = CopyKeyBlobFromSrc(oldFileInfo->mainPath.path, oldFileInfo->mainPath.fileName,
|
ret = CopyKeyBlobFromSrc(oldFileInfo->mainPath.path, oldFileInfo->mainPath.fileName,
|
||||||
newFileInfo->mainPath.path, newFileInfo->mainPath.fileName);
|
newFileInfo->mainPath.path, newFileInfo->mainPath.fileName);
|
||||||
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks copy old key blob failed, ret = %" LOG_PUBLIC "d.", ret)
|
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks copy old key blob failed, ret = %" LOG_PUBLIC "d.", ret)
|
||||||
|
#ifdef SUPPORT_STORAGE_BACKUP
|
||||||
ret = CopyKeyBlobFromSrc(oldFileInfo->bakPath.path, oldFileInfo->bakPath.fileName,
|
ret = CopyKeyBlobFromSrc(oldFileInfo->bakPath.path, oldFileInfo->bakPath.fileName,
|
||||||
newFileInfo->bakPath.path, newFileInfo->bakPath.fileName);
|
newFileInfo->bakPath.path, newFileInfo->bakPath.fileName);
|
||||||
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks copy old key blob failed, ret = %" LOG_PUBLIC "d.", ret)
|
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks copy old key blob failed, ret = %" LOG_PUBLIC "d.", ret)
|
||||||
|
#endif
|
||||||
if (!isCopy) {
|
if (!isCopy) {
|
||||||
ret = HksStoreDeleteKeyBlob(oldFileInfo);
|
ret = HksStoreDeleteKeyBlob(oldFileInfo);
|
||||||
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks delete key blob failed, ret = %" LOG_PUBLIC "d.", ret)
|
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks delete key blob failed, ret = %" LOG_PUBLIC "d.", ret)
|
||||||
@ -887,5 +889,4 @@ int32_t HksStoreRenameKeyAlias(const struct HksStoreFileInfo *oldFileInfo,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif /* _CUT_AUTHENTICATE_ */
|
||||||
#endif /* _CUT_AUTHENTICATE_ */
|
|
@ -582,15 +582,19 @@ int32_t HksManageStoreRenameKeyAlias(const struct HksProcessInfo *processInfo,
|
|||||||
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "check paramset invalid failed!");
|
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "check paramset invalid failed!");
|
||||||
|
|
||||||
struct HksParam *isNeedCopy = NULL;
|
struct HksParam *isNeedCopy = NULL;
|
||||||
int32_t ret = HksGetParam(paramSet, HKS_TAG_IS_COPY_NEW_KEY, &isNeedCopy);
|
ret = HksGetParam(paramSet, HKS_TAG_IS_COPY_NEW_KEY, &isNeedCopy);
|
||||||
if (ret == HKS_ERROR_PARAM_NOT_EXIST || isNeedCopy->boolParam == false) {
|
if (ret == HKS_SUCCESS && isNeedCopy->boolParam == true) {
|
||||||
ret = HksStoreRenameKeyAlias(&oldKeyFileInfo, &newKeyFileInfo, false);
|
ret = HksStoreRenameKeyAlias(&oldKeyFileInfo, &newKeyFileInfo, true);
|
||||||
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks rename key blod failed, ret = %" LOG_PUBLIC "d.", ret);
|
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks rename key blod failed, ret = %" LOG_PUBLIC "d.", ret);
|
||||||
} else {
|
} else {
|
||||||
ret = HksStoreRenameKeyAlias(&oldKeyFileInfo, &newKeyFileInfo, true);
|
ret = HksStoreRenameKeyAlias(&oldKeyFileInfo, &newKeyFileInfo, false);
|
||||||
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks rename key blod failed, ret = %" LOG_PUBLIC "d.", ret);
|
HKS_IF_NOT_SUCC_LOGE_BREAK(ret, "hks rename key blod failed, ret = %" LOG_PUBLIC "d.", ret);
|
||||||
}
|
}
|
||||||
} while (0);
|
} while (0);
|
||||||
|
FileInfoFree(&oldKeyFileInfo);
|
||||||
|
FileInfoFree(&newKeyFileInfo);
|
||||||
|
FreeStorageMaterial(&oldKeyMaterial);
|
||||||
|
FreeStorageMaterial(&newKeyMaterial);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1003,9 +1003,6 @@ void HksIpcServiceRenameKeyAlias(const struct HksBlob *srcData, const uint8_t *c
|
|||||||
|
|
||||||
HksSendResponse(context, ret, NULL);
|
HksSendResponse(context, ret, NULL);
|
||||||
|
|
||||||
HksFreeParamSet(¶mSet);
|
|
||||||
HKS_FREE_BLOB(processInfo.processName);
|
HKS_FREE_BLOB(processInfo.processName);
|
||||||
HKS_FREE_BLOB(processInfo.userId);
|
HKS_FREE_BLOB(processInfo.userId);
|
||||||
HKS_FREE_BLOB(oldKeyAlias);
|
|
||||||
HKS_FREE_BLOB(newKeyAlias);
|
|
||||||
}
|
}
|
@ -46,7 +46,7 @@ const struct HksIpcEntryPoint HKS_IPC_MESSAGE_HANDLER[] = {
|
|||||||
{ HKS_MSG_MAC, HksIpcServiceMac },
|
{ HKS_MSG_MAC, HksIpcServiceMac },
|
||||||
{ HKS_MSG_GET_KEY_INFO_LIST, HksIpcServiceGetKeyInfoList },
|
{ HKS_MSG_GET_KEY_INFO_LIST, HksIpcServiceGetKeyInfoList },
|
||||||
{ HKS_MSG_LIST_ALIASES, HksIpcServiceListAliases },
|
{ HKS_MSG_LIST_ALIASES, HksIpcServiceListAliases },
|
||||||
{ HKS_MSG_RENAME_KEY_ALIASES, HksIpcServiceRenameKeyAlias },
|
{ HKS_MSG_RENAME_KEY_ALIAS, HksIpcServiceRenameKeyAlias },
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*HksIpcThreeStageHandlerFuncProc)(const struct HksBlob *msg, struct HksBlob *outData,
|
typedef void (*HksIpcThreeStageHandlerFuncProc)(const struct HksBlob *msg, struct HksBlob *outData,
|
||||||
|
@ -67,6 +67,8 @@ ohos_unittest("huks_UT_test") {
|
|||||||
"src/hks_pbkdf2_derive_part1_test.cpp",
|
"src/hks_pbkdf2_derive_part1_test.cpp",
|
||||||
"src/hks_pbkdf2_derive_part2_test.cpp",
|
"src/hks_pbkdf2_derive_part2_test.cpp",
|
||||||
"src/hks_pbkdf2_derive_test_common.cpp",
|
"src/hks_pbkdf2_derive_test_common.cpp",
|
||||||
|
|
||||||
|
# "src/hks_rename_test.cpp",
|
||||||
"src/hks_three_stage_test_common.c",
|
"src/hks_three_stage_test_common.c",
|
||||||
"src/hks_x25519_agree_test.cpp",
|
"src/hks_x25519_agree_test.cpp",
|
||||||
"src/symmetric_alg_test/hks_aes_cipher_ccm_test.cpp",
|
"src/symmetric_alg_test/hks_aes_cipher_ccm_test.cpp",
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021-2022 Huawei Device Co., Ltd.
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HUKS_OTHERS_TEST_H
|
||||||
|
#define HUKS_OTHERS_TEST_H
|
||||||
|
|
||||||
|
int HksRenameKeyAliasTest001(void);
|
||||||
|
|
||||||
|
int HksRenameKeyAliasTest002(void);
|
||||||
|
|
||||||
|
int HksRenameKeyAliasTest003(void);
|
||||||
|
|
||||||
|
int HksRenameKeyAliasTest004(void);
|
||||||
|
|
||||||
|
int HksRenameKeyAliasTest005(void);
|
||||||
|
|
||||||
|
int HksRenameKeyAliasTest006(void);
|
||||||
|
|
||||||
|
int HksRenameKeyAliasTest007(void);
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,478 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 Huawei Device Co., Ltd.
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include "hks_rename_test.h"
|
||||||
|
#include "hks_api.h"
|
||||||
|
#include "hks_param.h"
|
||||||
|
#include "hks_test_common.h"
|
||||||
|
#include "hks_test_log.h"
|
||||||
|
#include "hks_type.h"
|
||||||
|
#include "hks_log.h"
|
||||||
|
#include "hks_mem.h"
|
||||||
|
#include "nativetoken_kit.h"
|
||||||
|
#include "token_setproc.h"
|
||||||
|
#include "hks_file_operator.h"
|
||||||
|
using namespace testing::ext;
|
||||||
|
namespace {
|
||||||
|
class HksRenameKeyAliasTest : public testing::Test {
|
||||||
|
public:
|
||||||
|
static void SetUpTestCase(void);
|
||||||
|
|
||||||
|
static void TearDownTestCase(void);
|
||||||
|
|
||||||
|
void SetUp();
|
||||||
|
|
||||||
|
void TearDown();
|
||||||
|
};
|
||||||
|
|
||||||
|
void HksRenameKeyAliasTest::SetUpTestCase(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HksRenameKeyAliasTest::TearDownTestCase(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HksRenameKeyAliasTest::SetUp()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HksRenameKeyAliasTest::TearDown()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static const uint32_t USER_ID_INT = 0;
|
||||||
|
|
||||||
|
static int32_t TestGenerateKey(const struct HksBlob *keyAlias)
|
||||||
|
{
|
||||||
|
struct HksParam tmpParams[] = {
|
||||||
|
{ .tag = HKS_TAG_BLOCK_MODE, .uint32Param = HKS_MODE_ECB },
|
||||||
|
{ .tag = HKS_TAG_ALGORITHM, .uint32Param = HKS_ALG_RSA },
|
||||||
|
{ .tag = HKS_TAG_KEY_SIZE, .uint32Param = HKS_RSA_KEY_SIZE_2048 },
|
||||||
|
{ .tag = HKS_TAG_DIGEST, .uint32Param = HKS_DIGEST_SHA256 },
|
||||||
|
{ .tag = HKS_TAG_PADDING, .uint32Param = HKS_PADDING_PSS },
|
||||||
|
{ .tag = HKS_TAG_PURPOSE, .uint32Param = HKS_KEY_PURPOSE_VERIFY },
|
||||||
|
{ .tag = HKS_TAG_KEY_STORAGE_FLAG, .uint32Param = HKS_STORAGE_PERSISTENT },
|
||||||
|
{ .tag = HKS_TAG_KEY_GENERATE_TYPE, .uint32Param = HKS_KEY_GENERATE_TYPE_DEFAULT },
|
||||||
|
{ .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE },
|
||||||
|
};
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
int32_t ret = HksInitParamSet(¶mSet);
|
||||||
|
if (ret != HKS_SUCCESS) {
|
||||||
|
HKS_LOG_E("hks_core_service_test HksInitParamSet failed");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = HksAddParams(paramSet, tmpParams, sizeof(tmpParams) / sizeof(tmpParams[0]));
|
||||||
|
if (ret != HKS_SUCCESS) {
|
||||||
|
HKS_LOG_E("hks_core_service_test HksAddParams failed");
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = HksBuildParamSet(¶mSet);
|
||||||
|
if (ret != HKS_SUCCESS) {
|
||||||
|
HKS_LOG_E("hks_core_service_test HksBuildParamSet failed");
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = HksGenerateKey(keyAlias, paramSet, nullptr);
|
||||||
|
if (ret != HKS_SUCCESS) {
|
||||||
|
HKS_LOG_E("hks_core_service_test HksGenerateKey failed");
|
||||||
|
}
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t BuildParamSetWithParam(struct HksParamSet **paramSet, struct HksParam *param, uint32_t paramCnt)
|
||||||
|
{
|
||||||
|
int32_t ret = HksInitParamSet(paramSet);
|
||||||
|
if (ret != HKS_SUCCESS) {
|
||||||
|
HKS_LOG_E("BuildParamSetWithParam HksInitParamSet failed");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
if (param != nullptr) {
|
||||||
|
ret = HksAddParams(*paramSet, param, paramCnt);
|
||||||
|
if (ret != HKS_SUCCESS) {
|
||||||
|
HKS_LOG_E("BuildParamSetWithParam HksAddParams failed");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return HksBuildParamSet(paramSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
static int32_t SetIdsToken()
|
||||||
|
{
|
||||||
|
uint64_t tokenId;
|
||||||
|
const char *acls[] = {
|
||||||
|
"ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS",
|
||||||
|
};
|
||||||
|
const char *perms[] = {
|
||||||
|
"ohos.permission.PLACE_CALL", // system_basic
|
||||||
|
"ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS",
|
||||||
|
};
|
||||||
|
NativeTokenInfoParams infoInstance = {
|
||||||
|
.dcapsNum = 0,
|
||||||
|
.permsNum = 2,
|
||||||
|
.dcaps = nullptr,
|
||||||
|
.perms = perms,
|
||||||
|
.aplStr = "system_basic",
|
||||||
|
};
|
||||||
|
infoInstance.acls = acls;
|
||||||
|
infoInstance.aclsNum = 1;
|
||||||
|
infoInstance.processName = "test_movece";
|
||||||
|
tokenId = GetAccessTokenId(&infoInstance);
|
||||||
|
int32_t ret = SetSelfTokenID(tokenId);
|
||||||
|
if (ret != HKS_SUCCESS) {
|
||||||
|
HKS_LOG_I("SetSelfTokenID fail, ret is %" LOG_PUBLIC "x!", ret);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @tc.name: HksRenameKeyAliasTest.HksRenameKeyAliasTest001
|
||||||
|
* @tc.desc: Rename the key and keep the old one;
|
||||||
|
* @tc.type: FUNC
|
||||||
|
*/
|
||||||
|
HWTEST_F(HksRenameKeyAliasTest, HksRenameKeyAliasTest001, TestSize.Level0)
|
||||||
|
{
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
SetIdsToken();
|
||||||
|
#endif
|
||||||
|
const char *alias = "oldAlias001";
|
||||||
|
struct HksBlob keyAlias = { strlen(alias), (uint8_t *)alias };
|
||||||
|
|
||||||
|
int32_t ret = TestGenerateKey(&keyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
struct HksParam storageLevel = { .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE };
|
||||||
|
ret = BuildParamSetWithParam(¶mSet, &storageLevel, sizeof(storageLevel) / sizeof(HksParam));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;;
|
||||||
|
|
||||||
|
struct HksParamSet *renameParamSet = NULL;
|
||||||
|
struct HksParam paramArr[] = {
|
||||||
|
{.tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE},
|
||||||
|
{.tag = HKS_TAG_SPECIFIC_USER_ID, .uint32Param = USER_ID_INT},
|
||||||
|
{.tag = HKS_TAG_IS_COPY_NEW_KEY, .boolParam = true},
|
||||||
|
};
|
||||||
|
ret = BuildParamSetWithParam(&renameParamSet, paramArr, sizeof(paramArr) / sizeof(paramArr[0]));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
const char *alias2 = "newKeyAlias001";
|
||||||
|
struct HksBlob newKeyAlias = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
ret = HksRenameKeyAlias(&keyAlias, renameParamSet, &newKeyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "HksRenameKeyAlias ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "old key is not exit, ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksKeyExist(&newKeyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "new key is not exit, ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksDeleteKey(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksDeleteKey(&newKeyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
HksFreeParamSet(&renameParamSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @tc.name: HksRenameKeyAliasTest.HksRenameKeyAliasTest002
|
||||||
|
* @tc.desc: Rename the key and remove the old one;
|
||||||
|
* @tc.type: FUNC
|
||||||
|
*/
|
||||||
|
HWTEST_F(HksRenameKeyAliasTest, HksRenameKeyAliasTest002, TestSize.Level0)
|
||||||
|
{
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
SetIdsToken();
|
||||||
|
#endif
|
||||||
|
const char *alias = "oldAlias002";
|
||||||
|
struct HksBlob keyAlias = { strlen(alias), (uint8_t *)alias };
|
||||||
|
|
||||||
|
int32_t ret = TestGenerateKey(&keyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
struct HksParam storageLevel = { .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE };
|
||||||
|
ret = BuildParamSetWithParam(¶mSet, &storageLevel, sizeof(storageLevel) / sizeof(HksParam));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;;
|
||||||
|
|
||||||
|
struct HksParamSet *renameParamSet = NULL;
|
||||||
|
struct HksParam paramArr[] = {
|
||||||
|
{.tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE},
|
||||||
|
{.tag = HKS_TAG_SPECIFIC_USER_ID, .uint32Param = USER_ID_INT},
|
||||||
|
};
|
||||||
|
ret = BuildParamSetWithParam(&renameParamSet, paramArr, sizeof(paramArr) / sizeof(paramArr[0]));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
const char *alias2 = "newKeyAlias002";
|
||||||
|
struct HksBlob newKeyAlias = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
ret = HksRenameKeyAlias(&keyAlias, renameParamSet, &newKeyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "HksRenameKeyAlias ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_ERROR_NOT_EXIST) << "old key exit, delet failed, ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksKeyExist(&newKeyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "new key is not exit, ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksDeleteKey(&newKeyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
HksFreeParamSet(&renameParamSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *STORE_PATH = "/data/service/el1/public/huks_service/maindata/0/0/key/";
|
||||||
|
/**
|
||||||
|
* @tc.name: HksRenameKeyAliasTest.HksRenameKeyAliasTest003
|
||||||
|
* @tc.desc: If the main key is lost, the renaming is still successful;
|
||||||
|
* @tc.type: FUNC
|
||||||
|
*/
|
||||||
|
HWTEST_F(HksRenameKeyAliasTest, HksRenameKeyAliasTest003, TestSize.Level0)
|
||||||
|
{
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
SetIdsToken();
|
||||||
|
#endif
|
||||||
|
const char *alias = "oldAlias003";
|
||||||
|
struct HksBlob keyAlias = { strlen(alias), (uint8_t *)alias };
|
||||||
|
|
||||||
|
int32_t ret = TestGenerateKey(&keyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
struct HksParam storageLevel = { .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE };
|
||||||
|
ret = BuildParamSetWithParam(¶mSet, &storageLevel, sizeof(storageLevel) / sizeof(HksParam));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksFileRemove(STORE_PATH, alias);
|
||||||
|
ASSERT_EQ(ret, HKS_SUCCESS);
|
||||||
|
|
||||||
|
struct HksParamSet *renameParamSet = NULL;
|
||||||
|
struct HksParam paramArr[] = {
|
||||||
|
{.tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE},
|
||||||
|
{.tag = HKS_TAG_SPECIFIC_USER_ID, .uint32Param = USER_ID_INT},
|
||||||
|
{.tag = HKS_TAG_IS_COPY_NEW_KEY, .boolParam = true},
|
||||||
|
};
|
||||||
|
ret = BuildParamSetWithParam(&renameParamSet, paramArr, sizeof(paramArr) / sizeof(paramArr[0]));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
const char *alias2 = "newKeyAlias003";
|
||||||
|
struct HksBlob newKeyAlias = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
ret = HksRenameKeyAlias(&keyAlias, renameParamSet, &newKeyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "HksRenameKeyAlias ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "old key exit, delet failed, ret is " << ret;
|
||||||
|
ret = HksKeyExist(&newKeyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "new key is not exit, ret is " << ret;
|
||||||
|
ret = HksDeleteKey(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksDeleteKey(&newKeyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
HksFreeParamSet(&renameParamSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @tc.name: HksRenameKeyAliasTest.HksRenameKeyAliasTest004
|
||||||
|
* @tc.desc: The old key is lost, the renaming is failed;
|
||||||
|
* @tc.type: FUNC
|
||||||
|
*/
|
||||||
|
HWTEST_F(HksRenameKeyAliasTest, HksRenameKeyAliasTest004, TestSize.Level2)
|
||||||
|
{
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
SetIdsToken();
|
||||||
|
#endif
|
||||||
|
const char *alias = "oldAlias004";
|
||||||
|
struct HksBlob keyAlias = { strlen(alias), (uint8_t *)alias };
|
||||||
|
|
||||||
|
int32_t ret = TestGenerateKey(&keyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
struct HksParam storageLevel = { .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE };
|
||||||
|
ret = BuildParamSetWithParam(¶mSet, &storageLevel, sizeof(storageLevel) / sizeof(HksParam));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksDeleteKey(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks delete MainFile key failed, ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *renameParamSet = NULL;
|
||||||
|
struct HksParam paramArr[] = {
|
||||||
|
{.tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE},
|
||||||
|
{.tag = HKS_TAG_SPECIFIC_USER_ID, .uint32Param = USER_ID_INT},
|
||||||
|
{.tag = HKS_TAG_IS_COPY_NEW_KEY, .boolParam = true},
|
||||||
|
};
|
||||||
|
ret = BuildParamSetWithParam(&renameParamSet, paramArr, sizeof(paramArr) / sizeof(paramArr[0]));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
const char *alias2 = "newKeyAlias004";
|
||||||
|
struct HksBlob newKeyAlias = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
ret = HksRenameKeyAlias(&keyAlias, renameParamSet, &newKeyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_ERROR_NOT_EXIST) << "HksRenameKeyAlias ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_ERROR_NOT_EXIST) << "old key exit, delet failed, ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksKeyExist(&newKeyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_ERROR_NOT_EXIST) << "new key is not exit, ret is " << ret;
|
||||||
|
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
HksFreeParamSet(&renameParamSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @tc.name: HksRenameKeyAliasTest.HksRenameKeyAliasTest005
|
||||||
|
* @tc.desc: A new key with the same name exists, the renaming is faild;
|
||||||
|
* @tc.type: FUNC
|
||||||
|
*/
|
||||||
|
HWTEST_F(HksRenameKeyAliasTest, HksRenameKeyAliasTest005, TestSize.Level1)
|
||||||
|
{
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
SetIdsToken();
|
||||||
|
#endif
|
||||||
|
const char *alias = "oldAlias005";
|
||||||
|
const char *alias2 = "newKeyAlias005";
|
||||||
|
struct HksBlob keyAlias = { strlen(alias), (uint8_t *)alias };
|
||||||
|
struct HksBlob keyAlias2 = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
|
||||||
|
int32_t ret = TestGenerateKey(&keyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey keyAlias ret is " << ret;
|
||||||
|
ret = TestGenerateKey(&keyAlias2);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey keyAlias2 ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
struct HksParam storageLevel = { .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE };
|
||||||
|
ret = BuildParamSetWithParam(¶mSet, &storageLevel, sizeof(storageLevel) / sizeof(HksParam));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;
|
||||||
|
ret = HksKeyExist(&keyAlias2, paramSet);;
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;
|
||||||
|
struct HksParamSet *renameParamSet = NULL;
|
||||||
|
struct HksParam paramArr[] = {
|
||||||
|
{ .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE},
|
||||||
|
{ .tag = HKS_TAG_SPECIFIC_USER_ID, .uint32Param = USER_ID_INT},
|
||||||
|
{ .tag = HKS_TAG_IS_COPY_NEW_KEY, .boolParam = true},
|
||||||
|
};
|
||||||
|
ret = BuildParamSetWithParam(&renameParamSet, paramArr, sizeof(paramArr) / sizeof(paramArr[0]));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
struct HksBlob newKeyAlias = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
ret = HksRenameKeyAlias(&keyAlias, renameParamSet, &newKeyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_ERROR_ALREADY_EXISTS) << "HksRenameKeyAlias ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksDeleteKey(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksDeleteKey(&keyAlias2, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
HksFreeParamSet(&renameParamSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @tc.name: HksRenameKeyAliasTest.HksRenameKeyAliasTest006
|
||||||
|
* @tc.desc: The renameParamSet has incorrect parameters, the renaming is faild;
|
||||||
|
* @tc.type: FUNC
|
||||||
|
*/
|
||||||
|
HWTEST_F(HksRenameKeyAliasTest, HksRenameKeyAliasTest006, TestSize.Level0)
|
||||||
|
{
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
SetIdsToken();
|
||||||
|
#endif
|
||||||
|
const char *alias = "oldAlias006";
|
||||||
|
struct HksBlob keyAlias = { strlen(alias), (uint8_t *)alias };
|
||||||
|
|
||||||
|
int32_t ret = TestGenerateKey(&keyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey keyAlias ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
struct HksParam storageLevel = { .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE };
|
||||||
|
ret = BuildParamSetWithParam(¶mSet, &storageLevel, sizeof(storageLevel) / sizeof(HksParam));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;
|
||||||
|
struct HksParamSet *renameParamSet = NULL;
|
||||||
|
struct HksParam paramArr[] = {
|
||||||
|
{ .tag = HKS_TAG_ALGORITHM, .uint32Param = HKS_ALG_RSA },
|
||||||
|
{ .tag = HKS_TAG_KEY_SIZE, .uint32Param = HKS_RSA_KEY_SIZE_2048 },
|
||||||
|
{ .tag = HKS_TAG_DIGEST, .uint32Param = HKS_DIGEST_SHA256 },
|
||||||
|
{ .tag = HKS_TAG_PADDING, .uint32Param = HKS_PADDING_PSS },
|
||||||
|
{ .tag = HKS_TAG_IS_COPY_NEW_KEY, .boolParam = true},
|
||||||
|
};
|
||||||
|
ret = BuildParamSetWithParam(&renameParamSet, paramArr, sizeof(paramArr) / sizeof(paramArr[0]));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
const char *alias2 = "newKeyAlias006";
|
||||||
|
struct HksBlob newKeyAlias = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
ret = HksRenameKeyAlias(&keyAlias, renameParamSet, &newKeyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_ERROR_PARAM_NOT_EXIST) << "HksRenameKeyAlias ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksDeleteKey(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
HksFreeParamSet(&renameParamSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @tc.name: HksRenameKeyAliasTest.HksRenameKeyAliasTest007
|
||||||
|
* @tc.desc: The old and new name of the key are the same, the renaming is faild;
|
||||||
|
* @tc.type: FUNC
|
||||||
|
*/
|
||||||
|
HWTEST_F(HksRenameKeyAliasTest, HksRenameKeyAliasTest007, TestSize.Level0)
|
||||||
|
{
|
||||||
|
#ifdef HKS_INTERACT_ABILITY
|
||||||
|
SetIdsToken();
|
||||||
|
#endif
|
||||||
|
const char *alias = "oldAlias007";
|
||||||
|
struct HksBlob keyAlias = { strlen(alias), (uint8_t *)alias };
|
||||||
|
|
||||||
|
int32_t ret = TestGenerateKey(&keyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "TestGenerateKey keyAlias ret is " << ret;
|
||||||
|
|
||||||
|
struct HksParamSet *paramSet = nullptr;
|
||||||
|
struct HksParam storageLevel = { .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE };
|
||||||
|
ret = BuildParamSetWithParam(¶mSet, &storageLevel, sizeof(storageLevel) / sizeof(HksParam));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
ret = HksKeyExist(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS) << "Hks get generate key failed, ret is " << ret;
|
||||||
|
struct HksParamSet *renameParamSet = NULL;
|
||||||
|
struct HksParam paramArr[] = {
|
||||||
|
{ .tag = HKS_TAG_AUTH_STORAGE_LEVEL, .uint32Param = HKS_AUTH_STORAGE_LEVEL_DE},
|
||||||
|
{ .tag = HKS_TAG_SPECIFIC_USER_ID, .uint32Param = USER_ID_INT},
|
||||||
|
{ .tag = HKS_TAG_IS_COPY_NEW_KEY, .boolParam = true},
|
||||||
|
};
|
||||||
|
ret = BuildParamSetWithParam(&renameParamSet, paramArr, sizeof(paramArr) / sizeof(paramArr[0]));
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
const char *alias2 = "oldAlias007";
|
||||||
|
struct HksBlob newKeyAlias = { strlen(alias2), (uint8_t *)alias2 };
|
||||||
|
ret = HksRenameKeyAlias(&keyAlias, renameParamSet, &newKeyAlias);
|
||||||
|
EXPECT_EQ(ret, HKS_ERROR_INVALID_ARGUMENT) << "HksRenameKeyAlias ret is " << ret;
|
||||||
|
|
||||||
|
ret = HksDeleteKey(&keyAlias, paramSet);
|
||||||
|
EXPECT_EQ(ret, HKS_SUCCESS);
|
||||||
|
HksFreeParamSet(¶mSet);
|
||||||
|
HksFreeParamSet(&renameParamSet);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user