API说明及使用

更新时间:2018-01-29 14:57:45

代码编写

初始化客户端SDK

 接口定义
  1. + (OpenSecurityGuardManager*) getInstance;
 接口描述

功能:初始化整个安全SDK,并获取OpenSecurityGuardManager单例对象。建议在整个工程的- (void)viewDidLoad里面异步调用该接口完成初始化。

参数:无

返回值:返回OpenSecurityGuardManager 类的单例。注意,初始化失败或发生其他异常情况时,本接口不会返回空或抛出异常。所有异常或错误码通过console 中“SG ERROR”开头的错误码进行展示。

 示例代码
  1. #import <SecurityGuardSDK/Open/OpenSecurityGuardManager.h>
  2. #import<SecurityGuardSDK/Open/StaticDataStore/IOpenStaticDataStoreComponent.h>
  3. @implementation SampleCode
  4. - (void) initSecGuard
  5. {
  6. id<IOpenStaticDataStoreComponent> component =
  7. [[OpenSecurityGuardManager getInstance] getStaticDataStoreComp];
  8. if (component) {
  9. //xxxxx
  10. }
  11. }
  12. @end

初始化AVMP组件

 接口定义
  1. + (BOOL) initialize;
 接口描述

功能:初始化AVMP加密组件。

参数:无

返回值:BOOL类型。初始化成功返回YES,失败返回NO。

 调用方式
  1. [JAQAVMPSignature initialize];
 示例代码
  1. staticBOOL avmpInit = NO;
  2. - (BOOL) initAVMP{
  3. @synchronized(self) { // just initialize once
  4. if(avmpInit == YES){
  5. returnYES;
  6. }
  7. avmpInit = [JAQAVMPSignature initialize];
  8. return avmpInit;
  9. }
  10. }

签名请求数据

 接口定义
  1. + (NSData*) avmpSign: (NSInteger) signType input: (NSData*) input;
 接口描述

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

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

返回值:NSData*类型,返回签名串。

 调用方式
  1. [JAQAVMPSignature avmpSign: 3 input: request_core];
 示例代码

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

  1. #define VMP_SIGN_WITH_GENERAL_WUA2 (3)
  2. - (NSString*) avmpSign{
  3. @synchronized(self) {
  4. NSString* request_core = @"user=lingxuan&psw=123456789&imei=9876543210";
  5. if(![self initAVMP]){
  6. [self toast:@"Error: init failed"];
  7. returnnil;
  8. }
  9. NSString* nsSign = nil;
  10. NSData* data = [request_coredataUsingEncoding:NSUTF8StringEncoding];
  11. NSData* sign = [JAQAVMPSignature avmpSign: VMP_SIGN_WITH_GENERAL_WUA2 input:data];
  12. if(sign == nil || sign.length<= 0){
  13. returnnil;
  14. }else{
  15. nsSign= [[NSString alloc] initWithData:sign encoding: NSUTF8StringEncoding];
  16. returnnsSign;
  17. }
  18. }
  19. }
注意:如果请求的数据不需要做验签的操作,那么,第二个参数直接传空即可。示例代码如下:
  1. NSData* sign = [JAQAVMPSignature avmpSign: VMP_SIGN_WITH_GENERAL_WUA2 input:nil];

发送数据到服务器

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

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

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

错误码

上述的initialize和avmpSign接口有可能会出现异常。如果生成签名串异常或失败,请在console中搜索“SG Error”。

主要错误码如下:

error 含义
1901 参数不正确,请检查输入的参数。
1902 图片文件有问题。一般是获取图片文件时的apk签名和当前程序的apk签 名不一致。请使用当前程序的apk重新生成图片。iOS 可能是因为BundleID不匹配。
1903 图片文件格式有问题。
1904 请升级新版本图片, AVMP签名功能仅支持 v5图片。
1905 没有找到图片文件。请确保图片文件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 未知错误,请重试。
本文导读目录