makeShareByFile
两方计算调用此函数对原始数据进行分片,分为计算方0节点和非计算方1节点,当为计算方时先设置isRecvShare为1用于接收非计算方发送的分片,后设置isRecvShare为0用于分片自身的数据。当为非计算方时设置isRecvShare为0用于分片自身的数据,并将分片发送给计算方。三方计算调用此函数对原始数据进行分片,分为计算方0节点、非计算方1、2节点,可以对任意两个节点原始数据进行分片,假设0,1节点有数据,当为计算方时节点0先设置isRecvShare为1用于接收非计算方发送的分片,后设置isRecvShare为0用于分片自身的数据。当为非计算方时,节点1设置isRecvShare为0用于分片自身的数据,并将分片发送给计算方,设置isRecvShare为1时用于接收节点0发送的分片。然后节点2设置isRecvShare为1用于接收0节点发送的分片,设置isRecvShare为1用于接收1节点发送的分片。
int makeShareByFile(
DG_TeeCtx *dgTeeCtx,
int isRecvShare,
const DG_MpcFileInput *input,
DG_MpcFileOutput *output
)
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
|---|---|---|---|
dgTeeCtx |
KCAL上下文信息 |
为initTeeCtx成功初始化的结果 |
输入 |
isRecvShare |
|
0或1 |
输入 |
input |
DG_MpcFileInput |
不能输入为NULL |
输入 |
output |
DG_MpcFileOutput |
不能输入为NULL |
输出 |
名称 |
类型 |
说明 |
|---|---|---|
filePath |
char* |
文件路径 |
pathLen |
uint32_t |
路径长度 |
dataSize |
uint64_t |
数据大小 |
名称 |
类型 |
说明 |
|---|---|---|
filePath |
char* |
文件路径 |
pathLen |
uint32_t |
路径长度 |
dataSize |
uint64_t |
数据大小 |
返回值
- 成功:返回0。
- 失败:返回错误码。
错误码
错误码 |
错误码值 |
描述 |
特殊说明 |
|---|---|---|---|
DG_ERR_MPC_TEE_INVALID_PARAM 4516 |
4501 DG_ERR_MPC_TEE_TMP_PATH_SET_ERROR |
无效参数 临时目录设置错误 |
- |
DG_ERR_MPC_TEE_INVALID_ALGORITHM_TYPE 4514 |
4502 DG_ERR_MPC_TEE_CHUNK_SIZE_SET_ERROR |
无效算法类型 文件分片块大小设置错误 |
- |
依赖
- dgTeeCtx依赖initTeeCtx的成功初始化。
- 依赖的头文件为"data_guard_mpc.h"。
示例
- 调用DG_InitArithmeticOpts成功后的aritOpts来调用makeShareByFile接口。
- 在两个节点(0计算节点和1计算节点)中调用接口时,若某一调用方返回非成功错误码,需要此调用方通过任务调度通知对端结束业务流程。例如,调用makeShareByFile时1计算节点返回错误码,0计算节点在等待接收,此时需要调用方通知0计算节点停止接收。
#include "data_guard_mpc.h"
//计算方
DG_MpcFileInput teeFileInput;
teeFileInput.filePath = const_cast<char *>(inputFilePath.c_str());
teeFileInput.pathLen = static_cast<uint32_t>(inputFilePath.length());
DG_MpcFileOutput teeFileOutput;
teeFileOutput.filePath = const_cast<char *>(shareFilePath.c_str());
teeFileOutput.pathLen = static_cast<uint32_t>(shareFilePath.length());
int ret = opts_->makeShareByFile(dgTeeCtx_, isRecvShare, &teeFileInput, &teeFileOutput);
父主题: 算术类算子