-
Notifications
You must be signed in to change notification settings - Fork 0
LWC 安全硬件操作接口
gaochun edited this page Feb 18, 2021
·
18 revisions
| 版本 | 内容 | 日期 | 修改者 |
|---|---|---|---|
| 0.1.0 | 基础加密与签名功能 | 2020-09-12 | Gao Chun |
| 0.2.0 | 添加设备管理接口 | 2021-01-12 | Gao Chun |
| 0.2.1 | 整理接口名称,加入oraclize系列接口列表 | 2021-01-12 | Gao Chun |
| 0.2.2 | 添加management_clear_session接口 | 2021-02-18 | Gao Chun |
通用安全硬件是BigBangCore区块链团队针对物联网应用所开发硬件签名与加密模块,为客户提供密钥的安全存储以及加解密和秘密分享的解决方案。本文将详细描述BBC区块链安全模块的硬件访问接口以及访问方式。
非常重要的注意事项:
- 模块不提供密钥生成功能,所有的密钥都需要从外部导入;
- 每个模块的初始pincode为“111111”,该初始密码仅可用于设置新的pincode,无法用于处理业务;
- 在已设置过pincode的情况下,pincode登录以及pincode重设的最大重试次数为32次,每次错误输入将导致重试次数减少1次;重试次数未减少到0次的情况下,只要正确输入一次,重试次数将自动重新设置未32次;一旦重试次数减少为0次,模块将永久锁定,密钥以及密文永久丢失,无法恢复。
2.1 请求报文(宿主->模块)
报文内容:[数据包总长度(4byte uint32) | 请求序号(4byte uint32) | 接口标识(1byte uint8) | 接口参数长度(4byte uint32) | 参数序列(0~nbyte) ]
说明:"数据包总长度"包括了自身的4字节长度; "接口参数长度"不包括自身的4字节长度,如果无"参数序列",则"接口参数长度"为0
2.2 响应报文头(模块->宿主)
报文内容:[数据包总长度(4byte uint32) | 响应序号(4byte uint32) | 响应状态码(2byte uint16) | 接口标识(1byte uint8) | 接口返回值长度(4byte uint32) | 返回序列(0~nbyte)]
说明:"数据包总长度"包括了自身的4字节长度;"响应序号"与对应请求报文中的"请求序号"相等;"接口返回值长度"不包括自身4字节长度,如果无"返回序列",则"接口返回值长度"为0
2.3 响应状态码含义
2.3.1 状态码等于0x9000表示请求被正确响应;
2.3.2 状态码大于0x9000标识系统异常;
2.3.3 状态码小于0x9000表示请求已被处理且返回对应处理状态,该状态与具体的请求接口相关,需查阅下文具体接口获得更多信息;
| 响应状态码 | 对应十进制 | 含义 |
|---|---|---|
| 0x9000 | 36864 | 请求被正确处理 |
| 0x9001 | 36965 | 系统忙 |
| 0x9002 | 36866 | 无效的包 |
| 0x9003 | 36867 | 未知的包命令字 |
| 0x9004 | 36868 | 错误的包长度 |
| 0x9005 | 36869 | 无效的序号 |
| 0x9006 | 36870 | 校验失败 |
| 0x9007 | 36871 | 硬件故障 |
| 0x9008 | 36872 | 非法操作 |
| 0x9045 | 36933 | 未登录设备,拒绝服务 |
| 0x9046 | 36934 | 超过pincode重试次数(32),设备已永久锁定 |
| 0x9056 | 36950 | 参数长度错误 |
| 0x9057 | 36951 | 安全存储异常 |
| 序号 | 接口名称 | 接口标识 | 说明 | 版本支持 |
|---|---|---|---|---|
| 模块管理接口 | ||||
| 1 | management_get_about | 0x01 | 获取模块关于信息 | 0.1.0-Latest |
| 2 | management_device_status | 0x02 | 查询模块的运行状态 | 0.2.0-Latest |
| 3 | management_set_pincode | 0x03 | 设置(新建&修改)硬件访问密钥 | 0.2.0-Latest |
| 4 | management_access_by_pincode | 0x04 | 硬件模块接入验证(登录) | 0.2.0-Latest |
| 5 | management_wirte_keypair | 0x05 | 写入私钥 | 0.2.0-Latest |
| 6 | management_erase_keypair | 0x06 | 擦除私钥(需要再次验证pincode) | 0.2.0-Latest |
| 7 | management_write_secret | 0x07 | 写入秘密数据 | 0.2.0-Latest |
| 8 | management_erase_secret | 0x08 | 擦除秘密(需要验证pincode) | 0.2.0-Latest |
| 9 | management_read_secret | 0x09 | 读取秘密数据 | 0.2.0-Latest |
| 10 | management_get_id | 0x0a | 获取设备id | 0.2.0-Latest |
| 11 | management_reset_device | 0x0b | 重置设备(需要验证pincode) | 0.2.0-Latest |
| 12 | management_clear_session | 0x0c | 退出已登录设备 | 0.2.1-Latest |
| management_wirte_keypair_v2 | 写入不同币种keypair | -- | ||
| 钱包操作接口 | ||||
| 1 | wallet_get_ed25519_pk | 0x23 | 获取指定序号钱包的公钥 | 0.1.0-Latest |
| 2 | wallet_get_curve25519_pk | 0x24 | 获取指定序号钱包的curve25519公钥 | 0.1.0-Latest |
| 3 | wallet_get_curve25519_sk | 0x25 | 获取指定序号钱包的curve25519私钥 | 0.1.0-Latest |
| 4 | wallet_get_address | 0x26 | 获取指定序号钱包地址 | 0.1.0-Latest |
| Oraclize(预言机)操作接口 | ||||
| 1 | oraclize_data_signature | 0x43 | 非交易数据签名 | 0.2.1-Latest |
| 2 | oraclize_data_verify | 0x44 | 非交易数据验签 | 0.2.1-Latest |
| 3 | oraclize_transaction_signature | 0x45 | 对外部传入的BBC原始交易序列做签名操作 | 0.1.0-Latest |
| 4 | oraclize_transaction_signature_v2 | 0x47 | 支持多币种签名能力 | -- |
| 加密操作接口 | ||||
| 1 | crypto_box_beforenm | 0x63 | 产生指定序号钱包与libsoudium兼容的共享访问密钥 | 0.1.0-Latest |
| 2 | crypto_curve25519_scalarmult | 0x64 | 产生指定序号钱包curve25519共享访问密钥 | 0.1.0-Latest |
| LWS协议操作接口 | ||||
| 1 | lws_request_signature | 0x80 | 每次LWS请求的签名操作 | 0.1.0 |
| 2 | lws_nonce | 0x81 | 获取nonce | -- |
| 3 | lws_hash_blake2b | 0x82 | blake2b hash | -- |
| 4 | lws_sign_ed25519 | 0x83 | ed25519 sign | -- |
- 接口类型:模块管理接口
- 接口标识:0x01
- 参数数目:0
- 参数总长度:0
- 示例请求序列:
0x|0d000000|01000000|01|00000000 - 返回值数目:1
- 返回值总长度:设备"关于信息"json字符串长度
- 返回值1:设备"关于信息"json字符串
- 示例响应序列:
0x|9a000000|01000000|0090|01|8b000000|7b226e616d65223a202242696742616e67436f7265204c5743204d6f64756c65222c202276657273696f6e223a22302e312e30222c202268617368223a2236356632326265222c2022636f70797269676874223a2242696742616e67205465616d2032303230222c2022656d61696c223a22636f6e746163744062696762616e67636f72652e636f6d227d - 响应报文内容:json字符串——
{"name":"BigBangCore LWC Module", "version":"0.2.0", "hash":"6c3b6f9", "copyright":"BigBang Team 2020", "email":"contact@bigbangcore.com"} - 状态码说明:0x9000表示接口调用正常,其他表示接口调用异常
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x02
- 参数数目:0
- 参数总长度:0字节
- 示例请求序列:
0x|0d000000|03000000|02|00000000 - 返回值数目:8
- 返回值总长度:15字节
- 返回值1:pincode的设置状态,0-已启用pincode;1-未启用pincode;2-设备异常
- 返回值2:设备登录重试次数倒数,有32次重试机会
- 返回值3:solt0的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值4:solt1的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值5:solt2的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值6:solt3的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值7:solt4的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值8:solt5的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值9:solt6的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值10:secret0的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值11:secret1的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值12:secret2的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值13:secret3的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值14:secret4的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值15:secret5的存储状态,0-已使用;1-未使用;2-设备异常
- 返回值16:secret6的存储状态,0-已使用;1-未使用;2-设备异常
- 示例响应序列:
0x|1f000000|03000000|0090|02|10000000|00200000000000000001010101010101 - 状态码说明:0x9000表示接口调用正常,其他表示接口调用异常
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x03
- 参数数目:4
- 参数总长度:old pincode长度 + 1 + new pincode长度 + 1(必须大于或等于14byte)
- 参数1:1byte,标识old pincode的长度
- 参数2:old pincode(6-128个ascii码字符)
- 参数3:1byte,标识new pincode的长度
- 参数4:new pincode(6-128个ascii码字符)
- 示例请求序列:
0x|1b000000|04000000|03|0e000000|0631313131313106303132333435 - 返回值数目:0
- 返回值总长度:0
- 示例响应序列:
0x|0f000000|04000000|0090|03|00000000 - 状态码说明:1~5-设备异常,6-new pincode长度不符合;7-old pincode的长度不符合;8-new pincode不符合ascii限制;9-old pincode不符合ascii限制;10-old pincode不匹配,无法修改;11-初始密码不匹配(查看备注);12-设备异常;0-修改pincode成功
- 备注:新设备默认密码为"111111"(device_status接口对应返回值为1的情况),此时访问除get_about、device_status、set_pincode以外的接口将被拒绝服务,访问access_by_pincode接口持续返回
未启用返回码,用户此时设置密码需将old pincode设置为"111111"
- 接口类型:模块管理接口
- 接口标识:0x04
- 参数数目:1
- 参数总长度:pincode字符长度
- 参数1:pincode
- 示例请求序列:
0x|13000000|05000000|04|06000000|303132333435 - 返回值数目:0
- 返回值总长度:0
- 示例响应序列:
0x|0f000000|05000000|0090|04|00000000 - 状态码说明:1~5-设备异常, 6-pincode少于6字符;7-pincode有非ascii码字符;8-pincode访问未启用,需修改密码;9-设备异常;10-pincode不匹配
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x05
- 参数数目:3
- 参数总长度:1 + 32 + 32字节
- 参数1:写入的solt,值为0~6
- 参数2:32字节私钥
- 参数3:32字节公钥
- 示例请求序列:
0x|4e000000|06000000|05|41000000|00|0354737713d56bf3e22093d6260b35dba7ef031f8c608d2761818c78f65d82bb|9a6501818596c03a0f5a982e366801e7be9386f5134a0a698fe6dd6c0e50ac8c - 返回值数目:0
- 返回值总长度:0
- 示例响应序列:
0x|0f000000|06000000|0090|05|00000000 - 状态码说明:1~5-设备异常;6-slot编号超出范围;7-无效币种;10-存储位置已被占用,写入需要先擦除原密钥;11-写入异常,私钥验证失败;
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x06
- 参数数目:3
- 参数总长度:1 + 1 + n字节
- 参数1:需要擦除的solt,值为0~6
- 参数2:1字节的pincode长度标识
- 参数3:n字节(参数2标识的长度)的pincode
- 示例请求序列:
0x|15000000|07000000|06|08000000|00|06|303132333435 - 返回值数目:0
- 返回值总长度:0
- 示例响应序列:
0x|0f000000|07000000|0090|06|00000000 - 状态码说明:1~5-设备异常;6-solt编号超出范围;10-pincode异常
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x07
- 参数数目:3
- 参数总长度:1 + 4 + 4 + n字节
- 参数1:写入的section,值为0~6
- 参数2:数据序列crc32校验值(不包括数据长度)
- 参数3:4字节数据长度描述
- 参数4:n字节数据
- 示例请求序列:
0x|a0000000|0a000000|07|8f000000|01|36da2a74|8a000000|7b226e616d65223a2242696742616e67436f7265204c5743204d6f64756c65222c202276657273696f6e223a22302e322e30222c202268617368223a2232363939303538222c2022636f70797269676874223a2242696742616e67205465616d2032303230222c2022656d61696c223a22636f6e746163744062696762616e67636f72652e636f6d227d - 返回值数目:0
- 返回值总长度:0
- 示例响应序列:
0x|0f000000|0a000000|0090|07|00000000 - 状态码说明:6-section编号超出范围;7-数据长度超长;8-存储位置已被占用,写入需要先擦除原数据;9~11-写入异常
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x08
- 参数数目:3
- 参数总长度:1 + 1 + n字节
- 参数1:需要擦除的section,值为0~6
- 参数2:1字节的pincode长度标识
- 参数3:n字节(参数2标识的长度)的pincode
- 示例请求序列:
0x|15000000|08000000|08|08000000|00|06|303132333435 - 返回值数目:0
- 返回值总长度:0
- 示例响应序列:
0x|0f000000|08000000|0090|08|00000000 - 状态码说明:6-solt编号超出范围;8-擦除异常;10-pincode不匹配
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x09
- 参数数目:1
- 参数总长度:1 字节
- 参数1:需要读取的section,值为0~6
- 示例请求序列:
0x|0e000000|09000000|09|01000000|00 - 返回值数目:2
- 返回值总长度:4 + n
- 返回值1:数据序列crc32校验值(不包括数据长度)
- 返回值2:读取的数据序列
- 示例响应序列:
0x|a1000000|09000000|0090|09|92000000|36da2a74|8a000000|7b226e616d65223a2242696742616e67436f7265204c5743204d6f64756c65222c202276657273696f6e223a22302e322e30222c202268617368223a2232363939303538222c2022636f70797269676874223a2242696742616e67205465616d2032303230222c2022656d61696c223a22636f6e746163744062696762616e67636f72652e636f6d227d - 状态码说明:6-section编号超出范围;8-存储位置无数据
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x0a
- 参数数目:0
- 参数总长度:0
- 示例请求序列:
0x|0d000000|10000000|0a|00000000 - 返回值数目:1
- 返回值总长度:32
- 返回值2:读取的设备id
- 示例响应序列:
0x|2f000000|10000000|0090|0a|20000000|0123fcbdaac0b7cf5016f5c48955f64cda9b081bae6e15f60b3cf96073f5cdef - 状态码说明:1~5-设备异常
- 备注:设备ID共有32字节,其中开头2字节和末尾2字节为固定标识,值分别为:0x0123和0xcdef;中间28字节为实际的全局唯一内容,其中前8字节为设备出厂时间的纳秒数,后20字节为设备出厂时产生的硬件随机数;二者可以分别使用也可以合并使用,均可作为识别设备身份的标识
- 接口类型:模块管理接口
- 接口标识:0x0b
- 参数数目:2
- 参数总长度:1 + n字节
- 参数1:1字节的pincode长度标识
- 参数2:n字节(参数1标识的长度)的pincode
- 示例请求序列:
0x|14000000|11000000|0b|07000000|06|303132333435 - 返回值数目:0
- 返回值总长度:0
- 示例响应序列:
0x|0f000000|11000000|0090|0b|00000000 - 状态码说明:10-pincode不匹配;9-擦除secret异常;8-擦除keypair异常
- 备注:
- 接口类型:模块管理接口
- 接口标识:0x0c
- 参数数目:0
- 参数总长度:0
- 示例请求序列:
0x|0d000000|10000000|0c|00000000 - 返回值数目:1
- 返回值总长度:32
- 返回值2:读取的设备id
- 示例响应序列:
0x|0f000000|10000000|0090|0c|00000000 - 状态码说明:只返回0090-成功,4590-未登录,5690-参数长度错误
- 备注:
- 接口类型:钱包操作接口
- 接口标识:0x23
- 参数数目:1
- 参数总长度:1字节
- 参数1:0x00~0x06,对应钱包的序号
- 示例请求序列:
0x|0e000000|01000000|23|01000000|[00~06] - 返回值数目:1
- 返回值总长度:32
- 返回值1:32字节钱包公钥
- 示例响应序列:
0x|2f000000|01000000|0090|23|20000000|8cac500e6cdde68f690a4a13f58693bee70168362e985a0f3ac096858101659a - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥)
- 备注:
- 接口类型:钱包操作接口
- 接口标识:0x24
- 参数数目:1
- 参数总长度:1字节
- 参数1:0x00~0x06,对应钱包的序号
- 示例请求序列:
0x|0e000000|02000000|24|01000000|[00~06] - 返回值数目:1
- 返回值总长度:32
- 返回值1:32字节curve25519公钥
- 示例响应序列:
0x|2f000000|01000000|0090|24|20000000|5b122fdf28f448de1ae38f4ab48b962a7161f63691460a51b52b32d08e592603 - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥);8-公钥转换失败
- 备注:
- 接口类型:钱包操作接口
- 接口标识:0x25
- 参数数目:1
- 参数总长度:1字节
- 参数1:0x00~0x06,对应钱包的序号
- 示例请求序列:
0x|0a000000|03000000|25|01000000|[00~06] - 返回值数目:1
- 返回值总长度:32
- 返回值1:32字节curve25519私钥
- 示例响应序列:
0x|0000002b|03000000|0090|25|20000000|fe379d36efd3590309279bf30389b37600cd545be1dbaa5e96ed69de2a661f47 - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥);8-私钥转换失败
- 备注:
- 接口类型:钱包操作接口
- 接口标识:0x26
- 参数数目:1
- 参数总长度:1字节
- 参数1:0x00~0x06,对应钱包的序号
- 示例请求序列:
0x|0a000000|04000000|26|01000000|[00~06] - 返回值数目:1
- 放回置总长度:57
- 返回值1:57字节字符串,不包含字符串'\0'结尾
- 示例响应序列:
0x|45000000|04000000|0090|26|3a000000|31643764706a36326473747979736a30356164386834357076627036713439687a783866643733657064386a70333433657a376d657a356e7800 - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥);8-地址转换失败
- 备注:
- 接口类型:数据签名操作接口
- 接口标识:0x43
- 参数数目:3
- 参数总长度:1 + 4 + n(n为待签数据长度)
- 参数1:0x00~0x06,对应钱包的序号
- 参数2:待签名字节流长度
- 参数3:待签名字节流(小端序)
- 示例请求序列:
0x|31000000|01000000|43|24000000|00|1f000000|31313131313131313131333333333333333333333333333333333333333333 - 返回值数目:1
- 返回值总长度:64
- 返回值1:64字节的签名数据
- 示例响应序列:
0x|4f000000|01000000|0090|43|40000000|5f9c3a9745d51c84aa83cb399156eca69898cff63a7bb763af11f81e7b283bc39ed15350a3c2ba3942d200a36a7caed1d708b208ffb121b4c3daacf3c2db250b - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥)
- 备注:
- 接口类型:数据验签操作接口
- 接口标识:0x44
- 参数数目:4
- 参数总长度:1 + 64 + 4 + n(n为验签数据长度)
- 参数1:0x00~0x06,对应钱包的序号
- 参数2:签名(64字节)
- 参数3:待验签数据字节流长度
- 参数4:待验签数据字节流(小端序)
- 示例请求序列:
0x|71000000|02000000|44|64000000|00|5f9c3a9745d51c84aa83cb399156eca69898cff63a7bb763af11f81e7b283bc39ed15350a3c2ba3942d200a36a7caed1d708b208ffb121b4c3daacf3c2db250b|1f000000|31313131313131313131333333333333333333333333333333333333333333 - 返回值数目:1
- 返回值总长度:64
- 返回值1:64字节的签名数据
- 示例响应序列:
0x|4f000000|01000000|0090|43|40000000|5f9c3a9745d51c84aa83cb399156eca69898cff63a7bb763af11f81e7b283bc39ed15350a3c2ba3942d200a36a7caed1d708b208ffb121b4c3daacf3c2db250b - 状态码说明:0x9000表示验签成功;1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥);8-验签失败——签名与数据不匹配
- 备注:
- 接口类型:交易操作接口
- 接口标识:0x45
- 参数数目:2
- 参数总长度:1 + n(n为原始transaction序列化后的长度)
- 参数1:0x00~0x06,对应钱包的序号
- 参数2:原始交易序列化字节流(小端序)
- 示例请求序列:
2e010000|0a000000|45|21010000|008cac500e6cdde68f690a4a13f58693bee70168362e985a0f3ac096858101659a432d4c64ed58b06a2e06102e380a9aaf977ca3bb36c6d37d96b597cbb2a5f0bdf0160022d596c3ff7bdfa414c69dd199d8d9e37a3a39174b374ad59293dc2c115f9c20064d80d4c1036fea5e0b35492ed411450849121df4448ff5bcf89a3b6a1b9f2c5992ed137efbf68335a183fde1aa2b34e93616a7416dec3a9803d23961f6c5c469b54288297b2c476bf97ebfe5a59e05815a76b681621131f912b33c50abcaef6a065c05d532f443fc422ef2c24f60bb766553f48801b2d1f76ccf1563e9edc3deebddb400b832889f0212b91805ce1f69eaeb9f8cfa4f071c0c50c961498b63009dfb70f7ee0902ba95cc171f7d7a97ff16d89fd96e1f1b9e7d5f91da - 返回值数目:1
- 返回值总长度:64
- 返回值1:64字节的签名数据
- 示例响应序列:
4f000000|0a000000|0090|45|40000000|1e9324587252da22132e2dd3b206a01e472911cd339f59a3e469183f1278d917f0d6c2b40e4b97fe7d67ddf922663a9791d21154c676745dba704dbc43fc3208 - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥)
- 备注:
- 接口类型:交易操作接口
- 接口标识:0x46
- 参数数目:2
- 参数总长度:1 + n(n为原始transaction序列化后的长度)
- 参数1:0x00~0x06,对应钱包的序号
- 参数2:原始交易序列化字节流(小端序)
- 示例请求序列:
2e010000|0a000000|45|21010000|008cac500e6cdde68f690a4a13f58693bee70168362e985a0f3ac096858101659a432d4c64ed58b06a2e06102e380a9aaf977ca3bb36c6d37d96b597cbb2a5f0bdf0160022d596c3ff7bdfa414c69dd199d8d9e37a3a39174b374ad59293dc2c115f9c20064d80d4c1036fea5e0b35492ed411450849121df4448ff5bcf89a3b6a1b9f2c5992ed137efbf68335a183fde1aa2b34e93616a7416dec3a9803d23961f6c5c469b54288297b2c476bf97ebfe5a59e05815a76b681621131f912b33c50abcaef6a065c05d532f443fc422ef2c24f60bb766553f48801b2d1f76ccf1563e9edc3deebddb400b832889f0212b91805ce1f69eaeb9f8cfa4f071c0c50c961498b63009dfb70f7ee0902ba95cc171f7d7a97ff16d89fd96e1f1b9e7d5f91da - 返回值数目:1
- 返回值总长度:64
- 返回值1:64字节的签名数据
- 示例响应序列:
4f000000|0a000000|0090|45|40000000|1e9324587252da22132e2dd3b206a01e472911cd339f59a3e469183f1278d917f0d6c2b40e4b97fe7d67ddf922663a9791d21154c676745dba704dbc43fc3208 - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥)
- 备注:
- 接口类型:加密操作接口
- 接口标识:0x63
- 参数数目:2
- 参数总长度:33字节
- 参数1:0x00~0x06,对应钱包的序号
- 参数2:长度32字节的对方公钥
- 示例请求序列:
0x|2a000000|09000000|63|21000000|[00~07]|e8f96e9061256ad68dd31eea3f26728d5ddb1612515305c8ecbdce4d1869db69 - 返回值数目:1
- 返回值总长度:32
- 返回值1:32字节的访问密钥
- 示例响应序列:
0x|2b000000|09000000|0090|63|20000000|397612d2870c3b720dd65c26ad0cef5690fa1713d60287ca5a876b63dec2d7da - 状态码说明:1
5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥);89-计算异常 - 备注:兼容sodium的crypto_box_beforenm函数
- 接口类型:加密操作接口
- 接口标识:0x64
- 参数数目:2
- 参数总长度:33字节
- 参数1:0x00~0x06,对应钱包的序号
- 参数2:长度32字节的对方公钥
- 示例请求序列:
0x|2a000000|0a000000|64|21000000|[00~07]|e8f96e9061256ad68dd31eea3f26728d5ddb1612515305c8ecbdce4d1869db69 - 返回值数目:1
- 返回值总长度:32
- 返回值1:32字节的访问密钥
- 示例响应序列:
0x|2b000000|0a000000|0090|64|20000000|fe379d36efd3590309279bf30389b37600cd545be1dbaa5e96ed69de2a661f47 - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥);8-计算异常
- 备注:
- 接口标识:0x80
- 参数数目:4
- 参数总长度:1 + 32 + 4 + n
- 参数1:0x00~0x06,对应钱包的序号
- 参数2:长度32字节的LWS产生的seed
- 参数3:待签名数据的总长度
- 参数4:待签名数据字节序列
- 示例请求序列:
0x|52000000|02000000|80|45000000|08|91b0c7b85f0806ebcda63594b5eee5a56714fac150824998c1a6d644c5929757|20000000|91b0c7b85f0806ebcda63594b5eee5a56714fac150824998c1a6d644c5929757 - 返回值数目:1
- 返回值总长度:20
- 返回值:20字节签名序列
- 示例响应序列:
0x|23000000|02000000|0090|80|14000000|8f2d663b5ac5f57a33a25c0f4cd88a502c378628 - 状态码说明:1~5-设备异常;6-钱包序号超出范围;7-钱包不可用(未设置密钥);8-计算异常
- 备注: