> ## Documentation Index
> Fetch the complete documentation index at: https://custodydocs-zh.chainup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 统一说明

## I. 域名及API密钥

| 生产环境域名 ([https://openapi.chainup.com/](https://openapi.chainup.com/)) | 不支持测试环境 |
| :- | - |
| app\_id: | 请创建钱包后获取 |
| rsa\_wallet\_pub: | Custody系统公钥；请创建钱包后从Custody系统获取 |
| rsa\_third\_prv: | 客户私钥；自主生成、保存 |
| rsa\_third\_pub: | 客户公钥；自主生成；请创建钱包后配置到Custody系统 |
| rsa\_co\_signer\_pri: | Co-Signer私钥；使用Co-Signer生成，或自主生成、保存 |
| rsa\_co\_signer\_pub: | Co-Signer公钥；使用Co-Signer生成，或自主生成；请创建钱包后配置到Custody系统 |

### RSA公私钥格式

密码长度：2048

密钥格式：PKCS#8

```sh theme={null}
openssl genrsa -out rsa_private_key.pem 2048

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key_2048.pem

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform pem -nocrypt -out private_pkcs8.pem
```

其中：`rsa_public_key_2048.pem`为公钥文件，`private_pkcs8.pem`为私钥文件

## II. 接口规则

| 传输方式: | https(测试环境暂时使用 http) |
| :- | - |
| 请求地址: | 域名+接口地址 |
| 请求头: | Content-Type:application/x-www-form-urlencoded |
| 加密算法: | RSA，参考 [https://en.wikipedia.org/wiki/RSA\_(cryptosystem)](https://en.wikipedia.org/wiki/RSA_\(cryptosystem\)) |
| 响应头: | Content-Type:application/json;charset=utf-8 |
| 响应状态码为: | `0`表示处理`成功`，非 0 表示**请求错误**或**系统异常** |

## III. 请求参数统一格式

| Param | 类型 | 是否必须 | 说明 |
| :- | :- | :- | :- |
| app\_id | String | 必须 | 商户唯一标识 |
| data | String | 可选 | `json格式的数据`加密之后的字符串；客户的RSA私钥加密，具体加密信息见各接口 `请求参数数据结构` |

```curl theme={null}
curl -X GET \
--url 'https://openapi.chainup.com/api/mpc/wallet/open_coin?app_id=16a9f17fc2ad61ca4339fdd6a8a37f21&data=SWYYr-LBVAmaS0eq8n-CUT_nHkM3OBxyWOsImMTe41UaqAoYI2ZghmaphXHov-7hsRsVmOhyPqC-JFuRGvonJKFd2Jirxv6Vn_8V40r_MMYTkhqcviQbZWYW5xX8Ai8CIpqas9fIWVDIYA_NKBl0UCJpwGxscxLNpjq5Z8-BTyIYDsVBquM9zEQGBCfcA7szD9n2fN_loSkoexlwqV8wg9HIZO5yQ6utZ_Kt0lNDQQb8zn8BwfAvsEsbJlOINUAqhxh1vV_AJ4bXn2uYx8TaYcBht-n_ZcBdxIDt975dbOFUiH-oCzIuDi1oLDtb4EylfCvhU5E4ozel_lQ-6cyIG0Dqiiyx0RFFOCJzPSXIoV031pvoa8pTCpkWklh8mRw1rylBgeZtqSxpnJO2_u2RIlXq6Hs8Yly9CmhIXaSrUgPir0h6xVxlf4VC6PFVCkiiTlp0kZ_H_UbKm0nUis3v3U2sflWJ2C449waSrikhuxVrFAQ6PQmrFVCAE6MYXNrFXJQuam2HAIQNSGbFQjspw8b_bXyfyZMGZ3K2oBC4I_v3eETTdPe0pfSNJb-5g37K0tOAr_UFbWK8pkC8yl56fSjn8tcR3yCRWwoi8jxTcUBiswTtvXZtzgG4dyzkaHXjsZjSGiywXSqP76VZWlyOmAx6IDSViLcPLPISdU3ruCI'
```

## IV. 响应参数统一格式

| Param | 类型 | 是否必须 | 说明 |
| :- | :- | :- | :- |
| data | String | 必须 | `json格式的数据`加密之后的字符串；Custody的RSA私钥加密，具体加密信息见 `响应结果data解密后格式` |

```json theme={null}
{
    "data": "ItMK-uGEuHC-d8RsrEM-LxKZzy-osF5JMsBAjioLTzU-YnACZm_ryS7ilW8MMpjBWpxx_DYE5T5w9G8pAy-X-Fxb8mJafpdRLDLi0U2i2tjDGWgaVd0bmmb2-1meSuyS-ggdsN2R9rZtK6SSbBlTG32I4fMhL0WrppREfnRF7IdzRYVveA1j0ZYKHYGZbu_aT4lft9KxJqTJfFyxAvV96iQ-WcWNe4aygyTueSM_HbRrvaozakCytpJi2R8jnHDyV_Y7KiF6Ucd_kV9eqvqlwGHyxPUJIrvtOhXF3No7flrvrEnLLjSxpiHPVgJwkIqPzG8ICB4ilVpJnKmqxZsJJw"
}
```

### 响应结果data解密后格式

响应结果data解密后，原始`json数据`参数结果格式如下：

| Param | 类型 | 是否必须 | 说明 |
| :- | :- | :- | :- |
| code | String | 是 | 状态码，例：100002 |
| msg | String | 是 | 响应结果说明，例：请求参数错误 |
| data | String | 否 | 具体响应数据，数据结构定义见各接口  `响应参数数据结构` |

## V. 加解密方式

**1. 注意事项**

请求参数data与响应字段data的值都是经过rsa加密后再通过 **base64urlsafe** 加密的结果，具体参考[SDK](https://custodydocs-zh.chainup.com/api-references/mpc-apis/sdk.md)

> [!WARNING]
>
> base64传统编码中会出现+, /两个会被url直接转义的符号，因此如果希望通过url传输这些编码字符串，我们需要先做传统base64编码，随后将+和/分别替换为- \_两个字符，在接收端则做相反的动作解码
>
> rsa加密与解密使用`分段加密`

**2. 示例密钥**

![](https://mintcdn.com/custody-zh/qHezw-OC45ZTBFPH/images/custody-guide/api_rsa.png?fit=max\&auto=format\&n=qHezw-OC45ZTBFPH\&q=85\&s=c08a12c7d57ef99b883eac627f9f9504)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.