calculateByFile
int calculateByFile(
DG_TeeCtx *dgTeeCtx,
DG_AlgorithmsType type,
DG_MpcFileInputSet *input,
DG_MpcFileOutput *output
)
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
|---|---|---|---|
dgTeeCtx |
KCAL上下文信息 |
为initTeeCtx成功初始化的结果 |
输入 |
type |
算子枚举 DG_AlgorithmsType |
MULTI : 乘法 DIV :除法 LT :小于 LT_EQ :小于等于 GT :大于 GT_EQ :大于等于 EQ : 等于 NEQ: 不等于 AVG :平均数 SUM: 求和 ASCEND_SORT : 升序排序 DESCEND_SORT :降序排序 ADD:加法 SUB:减法 MAX:最大值 MIN:最小值 MATRIX_ADD:矩阵加法 MATRIX_SUB:矩阵减法 MATRIX_MUL:矩阵乘法 |
输入 |
input |
文件数据组装后的结构体 类型为DG_MpcFileInputSet |
不能输入为NULL |
输入 |
output |
计算结果 类型为:DG_MpcFileOutput |
不能输入为NULL |
输出 |
名称 |
类型 |
说明 |
|---|---|---|
shareInputSet |
DG_MpcFileInput* |
每个参与方的分片文件 |
size |
unsigned long |
参与方数量 |
名称 |
类型 |
说明 |
|---|---|---|
filePath |
char* |
文件路径 |
pathLen |
uint32_t |
路径长度 |
dataSize |
uint64_t |
数据大小 |
名称 |
类型 |
说明 |
|---|---|---|
filePath |
char* |
文件路径 |
pathLen |
uint32_t |
路径长度 |
dataSize |
uint64_t |
数据大小 |
返回值
- 成功:返回0。
- 失败:返回错误码。
错误码
错误码 |
错误码值 |
描述 |
特殊说明 |
|---|---|---|---|
DG_ERR_MPC_TEE_INVALID_PARAM |
4501 |
无效参数 |
- |
DG_ERR_MPC_TEE_INVALID_ALGORITHM_TYPE |
4502 |
无效算法类型 |
- |
DG_ERR_MALLOC_FAIL |
51 |
内存分配失败 |
- |
DG_ERR_MPC_TEE_DIV_IS_ZERO |
4512 |
除0异常 |
- |
DG_FAILURE |
1 |
算子执行失败 |
参数校验失败 分片失败 接收对方数据失败 |
依赖
依赖调用revealShareByFile的返回结果。
示例
- 使用调用initTeeCtx成功后的dgTeeCtx来调用calculateByFile接口。
- 通过分片获取的是单个数据方的分片结果,需要用户调用makeShareByFile,将各方的文件输出为文件分片。
- 对于基础运算,其中有计算节点和非计算节点,规定:其中0为计算节点,1为非计算节点,支持三方的算子,2为非计算节点。
#include "data_guard_mpc.h"
//计算方
std::vector<DG_MpcFileInput> inputs(inputFilePaths.size());
for (size_t i = 0; i < inputFilePaths.size(); ++i) {
inputs[i].filePath = const_cast<char *>(inputFilePaths[i].c_str());
inputs[i].pathLen = static_cast<uint32_t>(inputFilePaths[i].length());
}
DG_MpcFileInputSet inputSet;
inputSet.shareInputSet = inputs.data();
inputSet.size = static_cast<uint32_t>(inputFilePaths.size());
DG_MpcFileOutput teeFileOutput;
teeFileOutput.filePath = const_cast<char *>(outputFilePath.c_str());
teeFileOutput.pathLen = static_cast<uint32_t>(outputFilePath.length());
int ret = opts_->calculateByFile(dgTeeCtx_, ADD, &inputSet, &teeFileOutput);