Skip to main content

wjkms

kms分级分类接口

1、创建基于VUI的Entity

url:http://150.138.84.46:12083/api/encryption/kms/v1/createvuientity?vui=业务系统唯一标识
接口类型:POST
入参:vui(业务系统唯一标识)
返回:yid,yentity,yaccount
{
"code": 1000,
"message": "",
"data": {
"yid": "155e0a49-45ef-4036-9a44-f72e7766464f",
"yentity": "3",
"yaccount": "1"
}
}
说明:传入VUI,创建YID,创建Entity,并创建一个具有“TypeData”和”KMS”两个Tag的account,该account中包含一对ECC256(建议用25519曲线)的公私钥,其中私钥编号为1,公钥编号为2

2、创建基于公私钥的Entity

url:http://150.138.84.46:12083/api/encryption/kms/v1/createkeypairentity?yentity=目标entity&tag=标签base64
接口类型:POST
入参:yentity(原entityid),tag(新建account的标签,需要做base64编码)
返回:yid(新创建的uid),yentity(新创建的entity),yaccount(在入参yentity中新创建的标签为tag的account的id)
{
"code": 1000,
"message": "",
"data": {
"yid": "b0c79bd2-faa9-469c-b0e7-afc4ad53653a",
"yentity": "5",
"yaccount": "3"
}
}
说明:用指定Tag在yentity1对应的Entity中创建一个新的account,并在该account中创建ECC256的公私钥对,取出公钥创建UID,用该UID创建Entity(即yentity2),新Entity中创建一个具有“TypeData”和”KMS”两个Tag的account,该account中包含一对ECC256(建议用25519曲线)的公私钥,其中私钥编号为1,公钥编号为2

3、登陆基于VUI的YID

http://150.138.84.46:12083/api/encryption/kms/v1/login?yid=kms唯一标识&vui=业务系统唯一标识
接口类型:POST
入参:vui(业务系统唯一标识),yid
返回:成功/错误信息
{
"code": 1000,
"message": "",
"data": {
"msg": "success"
}
}
说明:登陆成功后,YID下的所有entity的私钥会解密到内存中

4、登出YID

http://150.138.84.46:12083/api/encryption/kms/v1/logout?yid=kms唯一标识
接口类型:POST
入参:yid
返回:成功/错误信息
{
"code": 1000,
"message": "",
"data": {
"msg": "success"
}
}
说明:登出成功后,删除缓存中所有YID相关的私钥

5、授权密钥

http://150.138.84.46:12083/api/encryption/kms/v1/authorizecipher?yentity1=源entityid&yaccount1=源accountid&ycipher1=源密钥id&yentity2=目标entityid&yaccount2=目标accountid&ycipher2=目标密钥id
接口类型:POST
入参:yentity1, yaccount1,ycipher1(源信息,从1里取出密钥), yentity2, yaccount2,ycipher2(目标信息,将1中的密钥授权给2
返回:成功/错误信息
{
"code": 1000,
"message": "",
"data": {
"msg": "success"
}
}
说明:yentity1对应的Entity必须处于登录状态,将yentity2对应的Entity的yaccount2的ycipher2密钥设置为yentity1对应的Entity的yaccount1的ycipher1对应的密钥(yentity2、yaccount2必须是已存在的。ycipher2如果已存在,会修改相应密钥;否则,会创建ycipher2的密钥)

6、授权account

http://150.138.84.46:12083/api/encryption/kms/v1/authorizeaccount?yentity1=源entityid&yaccount1=源accountid&yentity2=目标entityid
接口类型:POST
入参:yentity1,yaccount1(源信息,从entity1中取出account1的信息),yentity2(目标信息,在2中创建account并将1中account的所有信息复制)
返回:yaccount2(新accountid)
{
"code": 1000,
"message": "",
"data": {
"Yaccount": "4"
}
}
说明:yentity1对应的Entity必须处于登录状态,yentity2创建新的account,将yentity1对应的Entity中的yaccount1的tag和所有密钥都复制到新的account

7、用私钥登录Entity

http://150.138.84.46:12083/api/encryption/kms/v1/loginprvkey?yentity1=源entityid&yaccount1=源accountid&yid2=使用私钥登陆的yid&yentity2=待登陆的entity
接口类型:POST
入参:yentity1, yaccount1, yid2, yentity2
返回:成功/失败
{
"code": 1000,
"message": "",
"data": {
"msg": "success"
}
}
说明:yentity1对应的Entity需要处于登录状态,用其yaccount1中的私钥登录yid2,用该yid2登录yentity2对应的Entity

8、删除account

http://150.138.84.46:12083/api/encryption/kms/v1/deleteaccount?yentity=entityid&yaccount=源accountid
接口类型:POST
入参:yentity,yaccount
返回:成功/失败
{
"code": 1000,
"message": "",
"data": {
"msg": "success"
}
}
说明:删除yentity中指定的yaccount,用于用户删除群组或分级分类

9、删除公私钥的Entity(待实现)

url:http://150.138.84.46:12083/api/encryption/kms/v1/deletekeypairentity?yentity=群组或分级分类创建者的entityid&yaccount=公私钥对的accountid
接口类型:POST
入参:yentity(原entityid),tag(新建account的标签,需要做base64编码)
返回:yid(新创建的uid),yentity(新创建的entity),yaccount(在入参yentity中新创建的标签为tag的account的id)
{
"code": 1000,
"message": "",
"data": {
"yid": "b0c79bd2-faa9-469c-b0e7-afc4ad53653a",
"yentity": "5",
"yaccount": "3"
}
}
说明:用指定Tag在yentity1对应的Entity中创建一个新的account,并在该account中创建ECC256的公私钥对,取出公钥创建UID,用该UID创建Entity(即yentity2),新Entity中创建一个具有“TypeData”和”KMS”两个Tag的account,该account中包含一对ECC256(建议用25519曲线)的公私钥,其中私钥编号为1,公钥编号为2

10、获取entity的数据公钥(只要entity存在即可获取)

url:http://150.138.84.46:12083/api/encryption/kms/v1/getpub?id=entityid
接口类型:GET
入参:yentity(entityid)
返回:pubkey(数据加密公钥)
{
"code": 1000,
"message": "",
"data": {
"pubkey": "5F4ZpPY5LhV8iK9W8fjjjAMvW1epejKEMq2fUmr2tZX2AuXLBP"
}
}

11、获取entity的数据私钥(需要entity登陆)

url:http://150.138.84.46:12083/api/encryption/kms/v1/getprv?id=entityid
接口类型:GET
入参:yentity(entityid)
返回:prvkey(数据加密私钥)
{
"code": 1000,
"message": "",
"data": {
"prvkey": "5KTphgZWc8mc85Pv6ZL9XJgMf3cPyrLc4a2gVSC3DUCmfSjmT2m"
}
}

12、创建基于VUI指定yentity的Entity

url:http://150.138.84.46:12083/api/encryption/kms/v1/createsysentity?vui=业务系统唯一标识&yentity=指定entity的ID
接口类型:POST
入参:vui(业务系统唯一标识),yentity(指定的entityid)
返回:yid,yentity,yaccount
{
"code": 1000,
"message": "",
"data": {
"yid": "155e0a49-45ef-4036-9a44-f72e7766464f",
"yentity": "2",
"yaccount": "1"
}
}
说明:传入VUI和yentity,创建YID,创建Entity,并创建一个具有“TypeData”和”KMS”两个Tag的account,该account中包含一对ECC256(建议用25519曲线)的公私钥,其中私钥编号为1,公钥编号为2

13、创建基于ECC256公钥的Entity

url:http://150.138.84.46:12083/api/encryption/kms/v1/createentitybypubkey?pubkey=ECC256公钥base58编码字符串
接口类型:POST
入参:pubkey(ECC256公钥base58编码字符串)
返回:yid,yentity,yaccount
{
"code": 1000,
"message": "",
"data": {
"yid": "dade0472-d285-4385-ad57-38819580be49",
"yentity": "141",
"yaccount": "1"
}
}
说明:传入公钥,创建YID,创建Entity,并创建一个具有“TypeData”和”KMS”两个Tag的account,该account中包含一对ECC256(建议用25519曲线)的公私钥,其中私钥编号为1,公钥编号为2

14、登陆基于ECC256公钥创建的YID

http://150.138.84.46:12083/api/encryption/kms/v1/loginentitybyprvkey?yid=kms唯一标识&prvkey=ECC256私钥base58编码字符串
接口类型:POST
入参:yid, prvkey(ECC256私钥base58编码字符串)
返回:成功/错误信息
{
"code": 1000,
"message": "",
"data": {
"msg": "success"
}
}
说明:登陆成功后,YID下的所有entity的私钥会解密到内存中

15、获取entity数量结果*2

http://150.138.84.46:12083/api/encryption/kms/v1/getentitycnt
接口类型:GET
返回:count(entity数量)
{
"code": 1000,
"message": "",
"data": {
"count": 20
}
}

16、重置entity的签名密钥(需要entity登陆)

http://150.138.84.46:12083/api/encryption/kms/v1/resetsignkey?yentity=指定entity的ID
接口类型:POST
返回:成功/错误信息
{
"code": 1000,
"message": "",
"data": {
"msg": "success"
}
}

17、根据书生根CA证书及entity的签名公钥生成pfx文件内容

http://150.138.84.46:12083/api/encryption/kms/v1/gencert?userid=用户id&username=用户名&yentity=指定entity的ID
接口类型:GET
返回:base64编码的pfx文件内容
{
"code": 1000,
"message": "",
"data": {
"msg": "MIIN6wIBAz………………CIi/hgg+j/zt"
}
}

业务流程示例:

1、创建超级管理员,业务系统中vui=user1,调用接口1,返回yid=test1,yentity=1,yaccount=1(数据密钥)
2、超级管理员创建公司群
调用接口2,入参yentity=1,tag=group|公司群
返回公司群的信息yid=公司群yid,yentity=2,yaccount=2(这个yaccount在yentity=1中)
3、注册普通用户
业务系统中vui=user2,调用接口1,返回yid=test2,yentity=3,yaccount=1(默认数据密钥)
4、把普通用户1拉入公司群
调用接口6,入参yentity1=2(公司群),yaccount1=2(公司群),yentity2=3(普通用户1)
返回yaccount2=2(在yentity=3中新创建一个account)
5、普通用户登陆
(1)调用接口3,登陆用户本身,入参vui=user2,yid=test2
(2)遍历用户account(即用户关联的群组和分级分类)
(3)普通用户的yentity=3,关联的群组只有一个,yaccount=2(即接口4的返回)
(4)调用接口7登陆此群组,入参yentity1=3(用户的entity_id), yaccount1=2(用户关联的群组和分级分类account_id), yid2=公司群yid, yentity2=2(公司群entity_id)




转移群主 应该也是调用6、授权account接口
yentity1是超级管理员的用户entity
yaccount1是2、创建基于公私钥的Entity接口返回的yaccount
yentity2是被转移群组用户的entity