鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

revealShare

用于还原最终的计算结果。

int revealShare(
    DG_TeeCtx *dgTeeCtx,
    DG_MpcMatShare *share,
    DG_TeeMatOutput **output
)

参数

参数名

描述

取值范围

输入/输出

dgTeeCtx

KCAL上下文信息

initTeeCtx成功初始化的结果

输入

share

调用calculate后的结果

类型为DG_MpcMatShare可参见negotiateSeeds

不能为NULL

输入

output

最终的计算结果

类型为DG_TeeMatOutput

一级指针为NULL,二级指针不为NULL

输出

表1 DG_TeeMatOutput

名称

类型

说明

data

DG_MpcDataUnion

输入数据strings的类型为DG_String *,doubleNumbers为double *, u64Numbers类型为u64 *

row

uint32_t

矩阵行数

col

uint32_t

矩阵列数

dataType

DG_MpcDataType

数据类型枚举有:

MPC_DOUBLE(密态矩阵加法、密态矩阵减法、密态矩阵乘法)

表2 DG_MpcDataUnion联合体

名称

类型

说明

strings

DG_String

字符串数组类型

u64Numbers

u64

u64数组

doubleNumbers

double

double数组

返回值

  • 成功:返回0。
  • 失败:返回错误码。

错误码

错误码

错误码值

描述

特殊说明

DG_ERR_MPC_TEE_INVALID_PARAM

4501

参数校验失败

dgTeeCtx为null

share为null

share的size为0

output二级指针为null

DG_ERR_MPC_NET_SEND_FAIL

4012

通信发送失败

-

DG_ERR_MPC_RECV_DATA_FAIL

4015

接收序列化数据失败

-

依赖

  • dgTeeCtx依赖initTeeCtx的成功初始化。
  • 依赖的头文件为 #include "data_guard_mpc.h"。

示例

#include  "data_guard_mpc.h"
// output不为null
DG_MpcMatShare *share_out = nullptr;
res = aritOpts.revealShare(dgTee, share_out, &output);

计算结果:res为0。

  • 取output中结果时需要根据DG_MpcDataType中的对应的类型取data中对应的数据。类型为MPC_INT时数据取output中data的u64Numbers;类型为MPC_DOUBLE时取output中data的doubleNumbers;类型为MPC_STRING时取output中data的strings。
  • 依赖的头文件为 #include "data_guard_mpc.h"。