clientCalculate
客户端发送要查询的key到服务端获取查询结果。
int clientCalculate(
DG_TeeCtx *dgTeeCtx,
DG_DummyMode dummyMode,
DG_TeeInput *input,
DG_TeeOutput **output
)
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
|---|---|---|---|
dgTeeCtx |
KCAL上下文信息 |
为initTeeCtx成功初始化的结果 |
输入 |
dummyMode |
dummy模式DG_DummyMode |
正常模式NORMAL和dummy模式DUMMY |
输入 |
input |
要查询的key值 DG_TeeInput |
目前支持字符串数组 |
输入 |
output |
返回查询结果 DG_TeeOutput |
支持字符串数组 |
输出 |
名称 |
说明 |
|---|---|
NORMAL |
正常模式,隐藏client真实的查询内容 |
DUMMY |
dummy模式,对client查询的真实数量与内容做dummy隐藏处理 |
名称 |
类型 |
说明 |
|---|---|---|
data |
DG_MpcDataUnion |
输入数据strings的类型为DG_String *,doubleNumbers为double *, u64Numbers类型为u64 * |
size |
uint64_t |
数据量 |
dataType |
DG_MpcDataType |
数据类型枚举有: MPC_STRING(PIR查询) |
名称 |
类型 |
说明 |
|---|---|---|
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操作集设置类接口设置KCAL配置信息成功,用设定好的dgCfg作为此接口的入参。
- pirOpts依赖DG_InitPirOpts的成功初始化PIR类算子函数组。
- 依赖的头文件为#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_String *strings = nullptr;
BuildDgString(dataString, &strings, size);
DG_TeeInput teeInput;
teeInput.data.strings = strings;
teeInput.size = size;
teeInput.dataType = MPC_STRING;
DG_TeeOutput* output = nullptr;
// pirOpts为DG_InitPirOpts成功后的结果,dgTee为initTeeMpcSql成功后的结果
int rv = pirOpts.clientCalculate(dgTee, DUMMY, &teeInput, &output);
if (rv != 0) {
return rv;
}
调用DG_InitPirOpts成功后的pirOpts来调用clientCalculate接口。