其他分享
首页 > 其他分享> > ppov接口文档

ppov接口文档

作者:互联网

PPOV接口文档API

vpn-management(后台)与ppov(区块链)通信加密

注: 使用TCP进行通信,传输的buff前4个字节是,字节序为小端的int类型值。4个字节后面再接着是json字符串

与mis通信部分代码全部放置于Node/MinSupport.go文件中

只有mis前端发送给区块链的数据需要走加密接口,通过其他方式发送给区块链的数据不经过加密接口

加解密通信流程及接口

1.通信建立

后台每次启动都会给区块链发送一个建立加密通信请求

过程如下:

  1. 后台生成一个8位的随机密钥(用于aes对称加密)
  2. 后台将生成的密钥使用本地的公钥进行加密
  3. 将加密后的数据封装发送给区块链

{
“Type” : “Setup”,
“Command”: “SetUpConnection”,
“Data” : “加密后的密钥数据”
}

{
“Code” : 200,
“Message”: 加密后的uuid
}

区块链收到之后利用本地的私钥对加密的数据进行解密得到后台生成的8位随机密钥,随机生成uuid存入SessionId字段中,利用随机密钥对其进行加密传给后台,后台解密数据得到uuid,至此后台与区块链通信加密建立成功

2.正常通信

后台在这之后的每次和区块链通讯都要走aes对称加密,默认sessionid超时时间是十分钟,十分钟内没有通讯,区块链就会失效这个sessionid,此时后台需要重新建立

{
“Command”: “根据去请求数据填”,
“Type”: “根据请求数据填”,
“Data” : “一串密文”,
“IsEnc” : true
}

这串密文是把正常请求的json转换成字符串,然后用aes加密后的结果

只有mis前端与区块链通信时需要加入IsEnc字段,通过其他方式发送的数据暂时不走加密接口,无需加入此字段

加密后的返回数据

返回数据需要用aes解密,解密后为下面的json结果

MIN-VPN与区块链通信接口

1.MINRegistry 用户注册

{
“Type” : “user-act”,
“Command”: “Registry”,
“Prefix”:“用于注册的前缀”
“Timestamp”:“时间戳”
“Username”:“用户名”
“Realname”:“用户的真实姓名”
“Phone”:“注册用户的手机号码”
“IDcard”:“注册用户的身份证号”
“AboutMe”:“关于我”
“Face”:“人脸信息”
“Print”:“指纹信息”
“Iris”:“密码”
“Other”:“其他信息”
“Sig”:“数字签名”
“Pubkey”:“公钥”
“Action”:“激活码”
}

注册成功
{
StatusCode:200
MessageType:“string”
Message:“注册成功”
}
注册失败
用户已经注册
{
StatusCode:400
MessageType:“string”
Message:“数据库已经存在该NDN前缀”
}
手机号重复注册
{
StatusCode:400
MessageType:“string”
Message:“数据库已经存在该手机号”
}
公钥重复
{
StatusCode:400
MessageType:“string”
Message:“用户公钥重复,注册失败”
}
公钥格式错误
{
StatusCode:401
MessageType:“string”
Message:“用户公钥错误"
}

2.MINDestroy 根据用户名删除用户

{
“Type” : “user-act”,
“Command”: “Destroy”,
“Username”:“用户名”
}

删除成功
{
StatusCode:200
MessageType:“string”
Message:“成功”
}
用户名不存在删除失败
{
StatusCode:400
MessageType:“string”
Message:“数据库不存在该用户”
}

3.MINDestroyByPrefix 根据用户前缀删除用户

{
“Type” : “user-act”,
“Command”: “DestroyByPrefix”,
“Prefix”:“用户前缀”
}

删除成功
{
StatusCode:200
MessageType:“string”
Message:“成功”
}
用户名不存在删除失败
{
StatusCode:400
MessageType:“string”
Message:“数据库不存在该用户”
}

4.MINGenerate 发布标识

{
“Type” : “user-act”,
“Command”: “Generate”,
“Prefix”:“用户前缀”
“U_identifier”:
“L_identifier”:
“Content_Hash”:
“Timestamp”:时间戳
“AboutMe”:
“Other”:
“Sig”:
}

发布标识成功
{
StatusCode:200
MessageType:“string”
Message:“成功”
}
发布标识失败
用户未登录
{
StatusCode:400
MessageType:“string”
Message:“用户未登录”
}
用户登录超时
{
StatusCode:401
MessageType:“string”
Message:“登录超时”
}
发布的标识已经存在
{
StatusCode:402
MessageType:“string”
Message:“数据库已经存在该NDN标识”
}
需要生成的标识没有以用户前缀名为前缀
{
StatusCode:403
MessageType:“string”
Message:“待生成的标识没有以前缀名为前缀”
}

5.MINDelete 删除用户发布的标识

{
“Type” : “user-act”,
“Command”: “Delete”,
“Prefix”:“用户前缀”
“U_identifier”:
“Sig”:
}

删除标识成功
{
StatusCode:200
MessageType:“string”
Message:“成功”
}
删除标识失败
要删除的前缀不存在
{
StatusCode:400
MessageType:“string”
Message:“数据库不存在该NDN标识”
}
证书校验错误
{
StatusCode:401
MessageType:“string”
Message:“证书校验错误,结果为0”
}
证书格式错误
{
StatusCode:402
MessageType:“string”
Message:“证书格式错误”
}

6.MINResetPassword 重置用户密码

{
“Type” : “user-act”,
“Command”: “ResetPassword”,
“Username”:“用户名”
“Iris”:“用户的新密码”
“Previous”:“用户的原密码”
}

更改密码成功
{
StatusCode:200
MessageType:“string”
Message:“成功”
}
更改密码失败
要修改密码的用户不存在
{
StatusCode:400
MessageType:“string”
Message:“数据库不存在该用户”
}
原密码错误
{
StatusCode:400
MessageType:“string”
Message:“原密码错误”
}

7.MINGetUser 得到所有MIN用户信息

{
“Type” : “user-act”,
“Command”: “getUser”,
}

{
StatusCode:200
MessageType:“json”
Message:“所有用户信息数组”
}

用户信息包括Username、AboutMe、Type、Iris、Phone、Realname等字段

8.GetUserInf 得到所有NDN用户信息

{
“Type” : “user-act”,
“Command”: “getUserInf”,
“Prefix”:“用户前缀”
}

{
StatusCode:200
MessageType:“json”
Message:“用户对应的北斗定位信息”
}

9.MINGetUserByPage 分页请求用户数据

{
“Type” : “user-act”,
“Command”: “getUserByPage”,
“PageSize”:每页大小
“PageNum”:第几页
}

{
StatusCode:200
MessageType:“json”
Message:“返回某页的用户数据”
}

10.MINGetUserAllMsg 分页请求用户数据

{
“Type” : “user-act”,
“Command”: “GetUserAllMsg”,
}

{
StatusCode:200
MessageType:“json”
Message:“返回所有的用户数据”
}

11.GetKeyLocatorByUsername 根据用户名获取用户证书

{
“Type” : “user-act”,
“Command”: “GetKeyLocatorByUsername”,
“Username”:“用户名”
}

获取证书成功
{
StatusCode:200
MessageType:“string”
Message:“返回用户证书”
}
获取证书失败
用户不存在
{
StatusCode:400
MessageType:“string”
Message:“not have such user”
}
服务器故障
{
StatusCode:500
MessageType:“string”
Message:“server error”
}

12.RevokeUserCert 注销用户证书

{
“Type” : “user-act”,
“Command”: “RevokeUserCert”,
“Username”:“用户名”
}

注销证书成功
{
StatusCode:200
MessageType:“string”
Message:“success”
}
注销证书失败
{
StatusCode:400
MessageType:“string”
Message:“not have such user”
}

13.MINGetUserByUsername 通过用户名得到该用户的数据

{
“Type” : “user-act”,
“Command”: “GetUserByUsername”,
“Username”:“用户名”
}

{
StatusCode:200
MessageType:“json”
Message:“返回该用户数据”
}

14.MINgetUserByUsername 通过用户名得到该用户的数据

{
“Type” : “user-act”,
“Command”: “getUserByUsername”,
“Username”:“用户名”
}

{
StatusCode:200
MessageType:“json”
Message:“返回该用户数据”
}

15.MINGetPubkey 得到MIN用户的公钥

{
“Type” : “user-act”,
“Command”: “GetPubkey”,
“Prefix”:“用户前缀”
}

{
StatusCode:200
MessageType:“string”
Message:“返回该用户公钥”
}

16.查询函数

1.MINQuery 查询用户所有标识

{
“Type” : “user-act”,
“Command”: “Query”,
“QueryCode”:1,
“Prefix”:“用户前缀”
}

{
StatusCode:200
MessageType:“string”
Message:“返回该用户所有标识”
}

返回的信息有 U_identifier和AboutMe字段

2.MINQuery3 查询用户face和密码

{
“Type” : “user-act”,
“Command”: “Query”,
“QueryCode”:3,
“Prefix”:“用户前缀”
}

{
StatusCode:200
MessageType:“string”
Message:“返回该用户face和密码”
}

返回的信息有 Face、Print和Iris字段

3.MINQuery4 查询用户信息是否存在于数据库

{
“Type” : “user-act”,
“Command”: “Query”,
“QueryCode”:4,
“Prefix”:“用户前缀”
}

{
StatusCode:200
MessageType:“string”
Message:“true/false”
}

17.MINLogin 用户登录

{
“Type” : “user-act”,
“Command”: “Login”,
“Prefix”:“用户前缀”,
“Password”:“用户密码”,
“Timestamp”:“时间戳”
}

登陆成功
{
StatusCode:200,
MessageType:“string”,
Message:“登录成功”
}
密码错误
{
StatusCode:400,
MessageType:“string”,
Message:“密码错误”
}
用户不存在
{
StatusCode:401,
MessageType:“string”,
Message:“用户不存在”
}

18.MINResolve 解析用户发布的标识

{
“Type” : “user-act”,
“Command”: “Resolve”,
“U_identifier”:“用户发布的标识”,
}

{
StatusCode:200,
MessageType:“string”,
Message:“标识解析结果”
}

19.MINMachine 设备注册

{
“Type” : “user-act”,
“Command”: “AddMachine”,
“Prefix”:“用于注册的前缀”
“Timestamp”:“时间戳”
“Username”:“机器名”
“Realname”:“”
“Phone”:“”
“IDcard”:“”
“AboutMe”:""
“Face”:""
“Print”:""
“Iris”:""
“Other”:""
“Sig”:""
“Pubkey”:“公钥”
“Action”:“激活码”
}

{
StatusCode:200,
MessageType:“string”,
Message:“机器记录成功”
}

20.GetMachine 获取所有设备的信息

{
“Type” : “user-act”,
“Command”: “GetMachine”,
}

{
StatusCode:200,
MessageType:“json”,
Message:“所有机器的信息”
}

21.RemoveMachine 删除设备

{
“Type” : “user-act”,
“Command”: “DeleteMachine”,
“Prefix”:“设备的前缀”
}

删除成功
{
StatusCode:200,
MessageType:“string”,
Message:“成功”
}
删除失败
该设备不存在
{
StatusCode:400,
MessageType:“string”,
Message:“数据库不存在该machine”
}

前端获取指定高度区块组接口

1.MISGetBG 从区块链中获取某高度区块组信息

{
“Type” : “Front-end”,
“Command”: “getHeight”,
“Height”:“区块组高度”
}

区块组信息

网络接口部分

1.MINLog 记录用户日志

{
“Type” : “network”,
“Command”: “Log”,
“Prefix”:“用户前缀”,
“Action”:“激活码”,
“Sig”:"",
“Timestamp”:“时间戳”
}

{
StatusCode:200,
MessageType:“string”,
Message:“日志记录成功”
}

2.GetAllLogByUsername 通过用户名得到用户所有的日志信息

{
“Type” : “network”,
“Command”: “GetAllLogByUsername”,
“Username”:“用户名”,
}

{
StatusCode:200,
MessageType:“json”
Message:“用户所有的日志信息”
}

3.GetAllLogByTimestamp 得到时间段内所有的日志信息

{
“Type” : “network”,
“Command”: “GetAllLogByTimestamp”,
“Start”:“时间段起始时间”,
“End”:“时间段结束时间”,
}

{
StatusCode:200,
MessageType:“string”,
Message:“该时间段内所有的日志信息”
}

4.GetPageLogByUsername 根据用户名分页请求用户日志信息

{
“Type” : “network”,
“Command”: “GetPageLogByUsername”,
“Username”:“用户名”,
“PageSize”:“页面大小”
“PageNum”:“页码”
}

{
StatusCode:200,
MessageType:“string”,
Message:“用户在某页所有的日志信息”
}

5.GetPageLogByTimestamp 分页得到某时间段内的所有日志信息

{
“Type” : “network”,
“Command”: “GetPageLogByTimestamp”,
“Start”:”时间段起始时间“
“End”:”时间段结束时间“
“PageSize”:“页面大小”
“PageNum”:“页码”
}

{
StatusCode:200,
MessageType:“string”,
Message:“该时间段内所有日志信息”
}

6.GetPageHighLogByTimestamp 获取某段时间内日志告警信息

{
“Type” : “network”,
“Command”: “GetPageHighLogByTimestamp”
“Start”:”时间段起始时间“
“End”:”时间段结束时间“
“PageSize”:“页面大小”
“PageNum”:“页码”
}

{
StatusCode:200,
MessageType:“string”,
Message:“时间段内的日志告警信息”
}

7.AddManagement 添加管理域

{
“Type” : “network”,
“Command”: “AddManagement”,
“Prefix”:“管理域前缀”
“Action”:""
“PubList”:""
“AboutMe”:""
}

管理域添加成功
{
StatusCode:200,
MessageType:“string”,
Message:“上级域同意添加下级管理域”
}
管理域添加失败
数据库不存在该管理域
{
StatusCode:400,
MessageType:“string”,
Message:“数据库不存在该管理域”
}
管理域已经被分配
{
StatusCode:400,
MessageType:“string”,
Message:“管理域已经被分配”
}

8.DeleteManagement 删除管理域

{
“Type” : “network”,
“Command”: “DeleteManagement”,
“Prefix”:“用户发布的标识”,
“Action”:“激活码”,
“PubList”:"",
“AboutMe”:""
}

管理域删除成功
{
StatusCode:200,
MessageType:“string”,
Message:“上级域同意删除下级管理域”
}
管理域删除失败
数据库不存在该管理域
{
StatusCode:400,
MessageType:“string”,
Message:“数据库不存在该管理域”
}
管理域已经被分配
{
StatusCode:400,
MessageType:“string”,
Message:“管理域已经被分配”
}

白名单相关的接口

1.whitePaperAdd 添加白名单

{
“Type” : “whiteUser”,
“Command”: “addWhiteUser”,
“Phone”:“手机号”,
“Action”:“激活码”
“Realname”:“真实姓名”
“IDcard”:“身份证号”
}

{
StatusCode:200,
MessageType:“string”,
Message:“白名单添加成功”
}

2.whitePaperGetAll 获取所有白名单

{
“Type” : “whiteUser”,
“Command”: “getAllUser”,
}

{
StatusCode:200,
MessageType:“string”,
Message:“所有白名单用户”
}

3.getWhiteUserByPhone 通过手机号获取白名单用户信息

{
“Type” : “whiteUser”,
“Command”: “getUserByPhone”,
“Phone”:“用户手机号”
}

获取白名单成功
{
StatusCode:200,
MessageType:“json”,
Message:“白名单用户信息”
}
获取白名单失败
{
StatusCode:400,
MessageType:“json”,
Message:“空数据”
}

4.WhitePaperDelete 删除白名单

{
“Type” : “whiteUser”,
“Command”: “deleteUser”,
“Phone”:“用户手机号”
}

删除白名单成功
{
StatusCode:200,
MessageType:“json”,
Message:“成功”
}
删除白名单失败
{
StatusCode:400,
MessageType:“json”,
Message:“数据库不存在该user”
}

标签:string,接口,用户,MessageType,文档,param,Message,StatusCode,ppov
来源: https://blog.csdn.net/weixin_43886278/article/details/111145396