offlineCalculate
服务端生成分桶数据,方便线上查询时快速查询结果。
int offlineCalculate(
DG_TeeCtx *dgTeeCtx,
DG_PairList *pairList,
DG_BucketMap **bucketMap
)
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
|---|---|---|---|
dgTeeCtx |
KCAL上下文信息 |
为initTeeCtx成功初始化的结果 |
输入 |
pairList |
输入的查询结构,为key-value结构体 |
- |
输入 |
bucketMap |
生成的分桶数据 |
- |
输出 |
名称 |
类型 |
说明 |
|---|---|---|
dgPair |
key-value结构体数组DG_Pair |
- |
size |
包含的key-value结构体的个数unsigned long |
- |
名称 |
类型 |
说明 |
|---|---|---|
key |
key值,类型DG_String |
查询结构的key值 |
value |
value值,与key值对应的value值,类型DG_String |
查询结构的value值 |
名称 |
类型 |
说明 |
|---|---|---|
str |
char * |
定义的DG_String中的数据内容 |
size |
unsigned long |
定义的DG_String中的数据内容的长度 |
返回值
- 成功:返回0。
- 失败:返回错误码。
错误码
错误码 |
错误码值 |
描述 |
特殊说明 |
|---|---|---|---|
DG_SUCCESS |
0 |
成功 |
- |
DG_FAILURE |
1 |
失败 |
向桶内写key-value对失败 |
DG_ERR_MALLOC_FAIL |
51 |
申请内存失败 |
- |
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 BuildDgPairList(std::vector<std::pair<std::string, std::string>>& data, DG_PairList **pairList) {
auto size = data.size();
*pairList = new DG_PairList;
(*pairList)->dgPair = new DG_Pair[size];
for (unsigned long i = 0; i < size; ++i) {
(*pairList)->dgPair[i].key = BuildPairString(data[i].first);
(*pairList)->dgPair[i].value = BuildPairString(data[i].second);
}
(*pairList)->size = data.size();
}
DG_PairList *pairList = nullptr;
DG_BucketMap *bucketMap = nullptr;
unsigned int size;
BuildDgPairList(datas, &pairList);
// pirOpts为DG_InitPirOpts成功后的结果,dgTee为initTeeCtx成功后的结果
rv = pirOpts.offlineCalculate(dgTee, pairList, &bucketMap);
if (rv != 0) {
return rv;
}
调用DG_InitPirOpts成功后的pirOpts来调用offlineCalculate接口。
父主题: 隐匿查询PIR类算子