clientCalculate
客户端发送要查询的key到服务端获取查询结果。
int clientCalculate(
DG_TeeCtx *dgTeeCtx,
DG_TeeMode outputMode,
DG_TeeInput *input,
DG_TeeOutput **output
)
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
|---|---|---|---|
dgTeeCtx |
MPC上下文信息 |
为DG_InitPsmOpts成功初始化的结果 |
输入 |
outputMode |
结果形式 |
TEE_OUTPUT_STRING和TEE_OUTPUT_INDEX |
输入 |
input |
要查询的值 DG_TeeInput |
目前支持字符串数组 |
输入 |
output |
返回查询结果 DG_TeeOutput |
支持字符串数组以及input数组下标 |
输出 |
enum DG_TeeMode {
TEE_OUTPUT_STRING,
TEE_OUTPUT_INDEX
};名称 |
类型 |
说明 |
|---|---|---|
data |
DG_MpcDataUnion |
输入数据strings的类型为DG_String *,doubleNumbers为double *, u64Numbers类型为u64 * |
size |
uint64_t |
数据量 |
dataType |
DG_MpcDataType |
数据类型枚举有: MPC_STRING(PSM查询) MPC_INT(PSM字符串交集下标) |
名称 |
类型 |
说明 |
|---|---|---|
strings |
DG_String |
字符串数组类型 |
u64Numbers |
u64 |
u64数组 |
doubleNumbers |
double |
double数组 |
返回值
- 成功:返回0。
- 失败:返回错误码。
错误码
错误码 |
错误码值 |
描述 |
特殊说明 |
|---|---|---|---|
DG_SUCCESS |
0 |
成功 |
无 |
DG_FAILURE |
1 |
通信失败 |
发送接收失败 |
DG_ERR_MALLOC_FAIL |
51 |
申请内存失败 |
无 |
DG_ERR_STRCPY_FAIL |
54 |
字符串拷贝失败 |
无 |
DG_ERR_MPC_TEE_INVALID_NODE_INFO |
4503 |
无效的tee节点信息 |
无 |
DG_ERR_MPC_TEE_INVALID_PARAM |
4501 |
参数校验失败 |
DgCfg为NULL或dgTeeCtx二级指针为空 |
依赖
- dgCfg依赖DataGuard操作集设置类接口设置MPC配置信息成功,用设定好的dgCfg作为此接口的入参。
- psmOpts依赖DG_InitPsmOpts的成功初始化PSM类算子函数组。
- 依赖的头文件为 #include "data_guard_mpc.h"。
示例
#include "data_guard_mpc.h"
void BuildDgString(std::vector<std::string> &strings, DG_String **dg, unsigned int &size)
{
size = strings.size();
DG_String *dgString = new DG_String[strings.size()];
for (size_t i = 0; i < strings.size(); i++) {
dgString[i].str = strdup(strings[i].c_str());
dgString[i].size = strings[i].size() + 1;
}
*dg = dgString;
}
DG_TeeInput BuildTeeInput(std::vector<std::string> inputData)
{
DG_String *dgInput;
unsigned int size;
BuildDgString(inputData, &dgInput, size);
DG_TeeInput dgTeeInput = {};
dgTeeInput.dataType = MPC_STRING;
dgTeeInput.data.strings = dgInput;
dgTeeInput.size = size;
return dgTeeInput;
}
DG_TeeInput teeInput = BuildTeeInput("name", "age", "a", "hello");
DG_TeeOutput *output = nullptr;
// psmOpts为DG_InitPsmOpts成功后的结果,dgTee为initTeeMpcSql成功后的结果
int rv = psmOpts.clientCalculate(nodeCtx, TEE_OUTPUT_STRING, &teeInput, &output);
if (rv != 0) {
return rv;
}
调用DG_InitPsmOpts成功后的psmOpts来调用initTeeCtx接口。
父主题: 隐私匹配PSM类算子调用