* Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved.
* virtCCA_sdk is licensed under the Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#ifndef KCAL_MIDDLEWARE_KCAL_MAKE_SHARE_H
#define KCAL_MIDDLEWARE_KCAL_MAKE_SHARE_H
#include <string>
#include "kcal/core/IContext.h"
#include "kcal/utils/io.h"
namespace kcal {
class MakeShare {
public:
explicit MakeShare(std::shared_ptr<IContext> context) : context_(std::move(context)) {}
static std::unique_ptr<MakeShare> Create(std::shared_ptr<IContext> context);
bool IsInitialized() const { return initialized_; }
int Run(const io::Input &input, int isRecvShare, io::MpcShare *share);
int Run(const std::string &inputFilePath, int isRecvShare, const std::string &shareFilePath, int &outCnt);
private:
int Initialize();
std::shared_ptr<IContext> context_;
DG_TeeCtx *dgTeeCtx_ = nullptr;
std::unique_ptr<DG_Arithmetic_Opts> opts_;
bool initialized_ = false;
};
}
#endif