I. 域名及API密钥

生产环境域名 (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

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)
响应头:Content-Type:application/json;charset=utf-8
响应状态码为:0表示处理成功,非 0 表示请求错误系统异常

III. 请求参数统一格式

Param类型是否必须说明
app_idString必须商户唯一标识
dataString可选json格式的数据加密之后的字符串;客户的RSA私钥加密,具体加密信息见各接口 请求参数数据结构
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类型是否必须说明
dataString必须json格式的数据加密之后的字符串;Custody的RSA私钥加密,具体加密信息见 响应结果data解密后格式
{
    "data": "ItMK-uGEuHC-d8RsrEM-LxKZzy-osF5JMsBAjioLTzU-YnACZm_ryS7ilW8MMpjBWpxx_DYE5T5w9G8pAy-X-Fxb8mJafpdRLDLi0U2i2tjDGWgaVd0bmmb2-1meSuyS-ggdsN2R9rZtK6SSbBlTG32I4fMhL0WrppREfnRF7IdzRYVveA1j0ZYKHYGZbu_aT4lft9KxJqTJfFyxAvV96iQ-WcWNe4aygyTueSM_HbRrvaozakCytpJi2R8jnHDyV_Y7KiF6Ucd_kV9eqvqlwGHyxPUJIrvtOhXF3No7flrvrEnLLjSxpiHPVgJwkIqPzG8ICB4ilVpJnKmqxZsJJw"
}

响应结果data解密后格式

响应结果data解密后,原始json数据参数结果格式如下:

Param类型是否必须说明
codeString状态码,例:100002
msgString响应结果说明,例:请求参数错误
dataString具体响应数据,数据结构定义见各接口 响应参数数据结构

V. 加解密方式

请求参数data与响应字段data的值都是经过rsa加密后再通过 base64urlsafe 加密的结果

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

rsa加密与解密使用分段加密