09c8ed9e创建于 2025年8月22日历史提交
/*

 * Copyright (c) 2024 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 "hks_api.h"



#include "hks_api_mock_helper.h"



namespace OHOS {

namespace Security {

namespace CodeSign {

int g_count = 0;

int32_t HksKeyExist(const struct HksBlob *keyAlias, const struct HksParamSet *paramSet)

{

    LOG_INFO("Mock HksKeyExist");

    if (g_count == KEYEXIST) {

        return -1;

    }

    if (g_count == ERROR) {

        return HKS_ERROR_NOT_EXIST;

    }

    return HKS_SUCCESS;

}



int32_t HksAttestKey(const struct HksBlob *keyAlias, const struct HksParamSet *paramSet,

    struct HksCertChain *certChain)

{

    LOG_INFO("Mock HksAttestKey");

    if (g_count == ATTESTKEY) {

        return -1;

    }



    bool ret = GetCertInDer(certChain->certs[0].data, certChain->certs[0].size);

    if (!ret) {

        LOG_ERROR("Failed to convert PEM to DER.\n");

        return HKS_FAILURE;

    }

    return HKS_SUCCESS;

}



int32_t HksGenerateKey(const struct HksBlob *keyAlias,

    const struct HksParamSet *paramSetIn, struct HksParamSet *paramSetOut)

{

    LOG_INFO("Mock HksGenerateKey");

    if (g_count == GENERATEKEY || g_count == ERROR) {

        return -1;

    }

    return HKS_SUCCESS;

}



int32_t HksInit(const struct HksBlob *keyAlias, const struct HksParamSet *paramSet,

    struct HksBlob *handle, struct HksBlob *token)

{

    LOG_INFO("Mock HksInit");

    if (g_count == INIT) {

        return -1;

    }

    return HKS_SUCCESS;

}





int32_t HksUpdate(const struct HksBlob *handle, const struct HksParamSet *paramSet,

    const struct HksBlob *inData, struct HksBlob *outData)

{

    LOG_INFO("Mock HksUpdate");

    if (g_count == UPDATE) {

        return -1;

    }

    return HKS_SUCCESS;

}



int32_t HksFinish(const struct HksBlob *handle, const struct HksParamSet *paramSet,

    const struct HksBlob *inData, struct HksBlob *outData)

{

    LOG_INFO("Mock HksFinish");

    if (g_count == FINISH) {

        return -1;

    }

    return HKS_SUCCESS;

}



int32_t HksAbort(const struct HksBlob *handle, const struct HksParamSet *paramSet)

{

    LOG_INFO("Mock HksAbort");

    return HKS_SUCCESS;

}

}

}

}