---
title: revealShare
description: "用于还原最终的计算结果。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/tee/kcal/kunpeng_kcal_16_0087.html
sourcePath: /source/zh/kunpengcctrustzone/tee/kcal/kunpeng_kcal_16_0087.html
indexId: 78307c5432e9a745cf3fde6e7d36c9edd8c705faeffd5cd603192acf5777266464
---
# 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
的成功初始化。
- 依赖的头文件为"data_guard_mpc.h"。


#### 示例

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


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

计算结果：res为0。
