F

适用于android的动态链接库和ios的静态链接库

public

 

Feewee-Libs

使用rust开发的适用于android的动态链接库和ios的静态链接库。

加密原理

  1. 应用启动时,记录当前服务器时间和本地设备获取的时间。
  2. 需要加密时通过接口path的md字符串、user agent的字符串和计算的当前服务器时间进行签名。

签名时所使用的当前服务器时间的计算方式: serverTime = localTime + (_serverTime - _localTime) 其中_serverTime 为之前缓存的服务器时间,_localTime 为之前缓存的本地时间。通过上面的计算就能得到当前服务器的时间。

接口签名加密流程

api文档

android

android的.so库由于需要指定包名,所以在android项目必须使用文档指定包名下相同类来做桥接。

1.接口加密

com.feewee.keeperai.utils.HelperNative.class#encrypt

本接口用于对接口进行签名,返回结果为签名字符串,需要传递给服务器做安全校验。

入参 类型 是否必须 说明
path String 调用接口的path
ua String user agent
2.接口加密(自带时间戳)

com.feewee.keeperai.utils.HelperNative.class#encryptWithTime

本接口用于自带服务器时间对接口进行签名,返回结果为签名字符串,需要传递给服务器做安全校验。

入参 类型 是否必须 说明
path String 调用接口的path
time Long 当前服务器时间戳(通过计算所得)
ua String user agent
3.记录服务器时间戳

com.feewee.keeperai.utils.HelperNative.class#marker

本接口用于缓存服务器时间戳,用于后续计算服务器时间。

入参 类型 是否必须 说明
time Long 服务器时间戳
4.记录服务器时间戳和本地设备时间戳

com.feewee.keeperai.utils.HelperNative.class#markerWithBoth

本接口用于缓存服务器时间戳和本地设备时间戳,用于后续计算服务器时间。

入参 类型 是否必须 说明
s_time Long 服务器时间戳
l_time Long 设备时间戳

IOS

ios的.a库由于不需要指定包名,所以可以使用任何包名下的类来做桥接。但是ios需要在使用完签名字符串后进行释放签名字符串。

1.接口加密

encryptWithoutTime

本接口用于对接口进行签名,返回结果为签名字符串,需要传递给服务器做安全校验。

入参 类型 是否必须 说明
path const char 调用接口的path
ua const char user agent
2.接口加密(自带时间戳)

encryptWithTime

本接口用于自带服务器时间对接口进行签名,返回结果为签名字符串,需要传递给服务器做安全校验。

入参 类型 是否必须 说明
path const char 调用接口的path
time int64_t 当前服务器时间戳(通过计算所得)
ua const char user agent
3.记录服务器时间戳

marker

本接口用于缓存服务器时间戳,用于后续计算服务器时间。

入参 类型 是否必须 说明
time int64_t 服务器时间戳
4.记录服务器时间戳和本地设备时间戳

markerWithBoth

本接口用于缓存服务器时间戳和本地设备时间戳,用于后续计算服务器时间。

入参 类型 是否必须 说明
s_time int64_t 服务器时间戳
l_time int64_t 设备时间戳
5.释放签名字符串

free_str

本接口用于释放由rust代码产生的字符串内存。

入参 类型 是否必须 说明
str char 签名字符串