API说明及使用

更新时间:2018-01-29 14:56:39

1、代码编写

1.1初始化客户端SDK

1.1.1 接口定义
  1. void initializeAsync(Context context);
1.1.2 接口描述

功能:异步初始化安全SDK。这个接口会初始化整个安全SDK(包括反调试等功能),建议放在所有的业务逻辑之前调用。

参数:任意Activity、Service等Coxtext类非空实例。

返回值:无。

1.1.3 示例代码
  1. private void initSecurityGuard() {
  2. IInitializeComponent initializeComponent = SecurityGuardManager.getInitializer();
  3. initializeComponent.initializeAsync(getApplicationContext());
  4. }

2、客户端签名核心数据

2.1、导入包

  1. importcom.alibaba.wireless.security.jaq.JAQException;
  2. import com.alibaba.wireless.security.jaq.avmp.IJAQAVMPSignComponent;
  3. import com.alibaba.wireless.security.open.SecurityGuardManager;
  4. import com.alibaba.wireless.security.open.avmp.IAVMPGenericComponent;

2.2、初始化虚拟机组件

2.2.1 接口定义
  1. boolean initialize();
2.2.2 接口描述

功能:初始化虚拟机组件。

参数:无

返回值:boolean类型。初始化成功返回true,失败返回false。

 示例代码
  1. IJAQAVMPSignComponent jaqVMPComp =SecurityGuardManager.getInstance(getApplicationContext()).getInterface(IJAQAVMPSignComponent.class);
  2. boolean result = jaqVMPComp.initialize();

2.3、 签名关键的请求数据

2.3.1 接口定义
  1. byte[] avmpSign(int signType, byte[] input);
2.3.2 接口描述

功能:使用avmp技术对input的数据进行签名处理,并且返回签名串。需要签名的数据主要是客户端和服务器端通信容易被篡改的部分,比如,登录场景下的用户名密码等信息。

参数:

参数名 类型 是否必须 说明
signType int 签名使用的算法,目前是固定值,填3即可。
input byte[] 待签名的数据,一般是整个请求体。如果请求体为空,那么此参数填null即可。

返回值:byte[]类型,返回签名串。

2.3.3 示例代码

客户端往服务器端发送数据时,需要调用avmpSign接口对请求的核心数据进行签名处理,之后得到签名串。

  1. int VMP_SIGN_WITH_GENERAL_WUA2 = 3;
  2. String request_core = "user=lingxuan&psw=123456789&imei=9876543210";
  3. byte[] result = jaqVMPComp.avmpSign(VMP_SIGN_WITH_GENERAL_WUA2, request_core.getBytes("UTF-8"));
  4. String sSign = new String(result, "UTF-8");
  5. Log.d("sSign", sSign);

注意:如果请求的数据不需要做验签的操作,那么,第二个参数直接传空即可。示例代码如下:

  1. byte[] result = jaqVMPComp.avmpSign(VMP_SIGN_WITH_GENERAL_WUA2,null));
  2. String sSign= new String(result, "UTF-8");
  3. Log.d("sSign", sSign);

2.4、 发送原始和签名数据到APP自有服务器

将上述案例中的原始数据(账户名、密码)和签名后的数据(sSign)发送到APP的自有服务器。

3、服务器端签名校验&风险识别

调用服务器端的验签+风险识别接口判断当前业务的风险。具体操作参见服务器端接入文档。

4、错误码

上述的initialize和avmpSign接口有可能会出现异常。如果生成签名串异常或失败,请搜索Log中“SecException”相关的信息。

主要错误码如下:
错误码 含义
1901 参数不正确,请检查输入的参数。
1902 图片文件有问题。一般是获取图片文件时的apk签名和当前程序的apk签名不一致。请使用当前程序的apk重新生成图片。iOS 可能是因为BundleID不匹配。
1903 图片文件格式有问题。
1904 请升级新版本图片, AVMP签名功能仅支持 v5图片。
1905 没有找到图片文件。请确保图片文件在res\drawable目录下,AVMP相关的图片为:yw_1222_0335_mwua.jpg。
1906 图片中缺少AVMP签名对应的byteCode,请检查使用的图片是否正确。
1907 初始化AVMP失败,请重试。
1910 非法的avmpInstance 实例。两个可能原因1:avmpInstance是否被destroy后,调用InvokeAMVP;2:图片byteCode版本与SDK不匹配。
1911 加密图片的byteCode没有相应导出的函数。
1912 AVMP调用失败,请联系我们。
1913 avmpInstance被destroy之后,调用InvokeAVMP出现该错误。
1915 AVMP调用内存不足,请重试。
1999 未知错误,请重试。
本文导读目录