feat:引入人脸识别sdk

This commit is contained in:
ctw committed 2025-11-29 01:17:29 +08:00
1 parent ce16eaf82e
commit 158d012eff
331 files changed
+13539

No files matched your search

@@ -0,0 +1,122 @@
//
// APDID.h
// APPSecuritySDK
//
// Created by eric on 2021/2/7.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "ASSTokenResult.h"
NS_ASSUME_NONNULL_BEGIN
typedef void(^ASSSecureSdkCallback)(ASSTokenResult* result, NSString* error);
typedef void(^ASSSecureSdkOpenCallback)(NSString* token, int errorCode);
@interface APDID : NSObject
/*
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
@param params 初始化的字典参数,包含三项内容:tid、userid、environment;
tid与userid选传,传入可以保证vkeyid与其正确关联,取不到传入空字符串;
环境变量请与app设置中的环境相关联,字典中的value包括线上,预发,测试,日常;
@param callback 初始化完成后的结果回调
Asynchronously initialize vkeyid(apdid), recommend to invoke this API when app launches, and cashier view presents.
Inside SDK we will decide whether to launch network request or not based on timestamp and device info.
No thread requirement.
@param params: Initialized parameters, includes 3 key-value pairs: tid, userid,environment;
Tid and userid are optional, they can be associated with vkeyid(apdid) if passed in.
If the values for tid and userid are not available, pass in empty NSString(@"").
@param callback: Callback block when token is available
*/
+ (void) initToken:(NSDictionary*)params callback:(ASSSecureSdkCallback)callback;
/*
同步获取vkeyid完整信息,包括vkeyid,token,clientkey,无网络请求;
如果首次安装app,且首次网络请求未完成或失败,将会返回降级措施:vkeyid会返回客户端随机串clientkey,token将会返回空。
Synchronously get full info of vkeyid(apdid), token and clientkey, no network requests.
If the app is installed for the first time and first network request failed, it would return degradation result: vkeyid would be clientkey which is a client-side generated random string, token would be empty NSString @""
*/
+ (ASSTokenResult*)getToken DEPRECATED_MSG_ATTRIBUTE("use getTokenResult instead");
/*
同步获取vkeyid完整信息,包括vkeyid,token,clientkey,无网络请求;
如果首次安装app,且首次网络请求未完成或失败,将会返回降级措施:vkeyid会返回客户端随机串clientkey,token将会返回空。
Synchronously get full info of vkeyid(apdid), token and clientkey, no network requests.
If the app is installed for the first time and first network request failed, it would return degradation result: vkeyid would be clientkey which is a client-side generated random string, token would be empty NSString @""
*/
+ (ASSTokenResult*)getTokenResult;
+ (ASSTokenResult *)getTokenResult:(NSString*)appName appKeyClient:(NSString*)appKeyClient;
//===================lazada api====================//
/*
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
@param appName 应用名称
@param appKeyClient 应用客户端密钥
@param callback 初始化完成后的结果回调,以Token作为参数
*/
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient callback:(ASSSecureSdkOpenCallback)callback;
/*
同步接口返回token
@param appName 应用名称
@param appKeyClient 应用客户端密钥
*/
+ (NSString *)getResultToken;
/*
同步接口返回token
@param appName 应用名称
@param appKeyClient 应用客户端密钥
*/
+ (NSString *)getResultToken:(NSString*)appName appKeyClient:(NSString*)appKeyClient;
//===================TMN api====================//
/*
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
@param appName 应用名称
@param appKeyClient 应用客户端密钥
@param sessionId 业务方传入自己的id
@param callback 初始化完成后的结果回调,以Token作为参数
*/
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient sessionId:(NSString *)sessionId callback:(ASSSecureSdkOpenCallback)callback;
//===================ae api====================//
/*
强制上报接口
@param params 初始化的字典参数,包含四项内容:umid、tid、userid、environment;
umid必传,tid与userid选传,传入可以保证vkeyid与其正确关联,取不到传入空字符串;
环境变量请与app设置中的环境相关联,字典中的value包括线上,预发,测试,日常;
@param callback 初始化完成后的结果回调
*/
+ (void) updateToken:(NSDictionary*)params callback:(ASSSecureSdkCallback)callback;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,41 @@
//
// APDeviceColor.h
// APPSecuritySDK
//
// Created by eric on 2021/2/25.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface APDeviceColor : NSObject
/*
* getColorLabel 设备染色接口
*
* @param bizToken 业务场景
* @param extParams 扩展参数
* @param errInfo 错误信息
*
* @return 设备染色数据
*/
+ (NSString*) getColorLabel: (NSString*) bizToken
ext: (NSDictionary *) extParams
error: (NSError **) errInfo;
/*
* getColorLabel 设备染色接口
*
* @param extParams 扩展参数
* @param errInfo 错误信息
*
* @return 设备染色数据
*/
+ (NSString*) getColorLabel: (NSDictionary *) extParams
error: (NSError **) errInfo;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,32 @@
//
// APDynamic.h
// APPSecuritySDK-Sign
//
// Created by eric on 2021/2/25.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface APDynamic : NSObject
/*
* dynamicCheckDispatch 动态攻防脚本运行
*
* @param dict 动态攻防脚本
*/
+ (void)dynamicCheckDispatch:(NSDictionary *)dict;
/*
* dynamicCheckDispatch 动态攻防脚本运行,动态攻防脚本运行后会自动上传, 无特殊需求不建议
*
* @param dict 动态攻防脚本
* @param callback 运行结果回调
*/
+ (void)dynamicCheckDispatch:(NSDictionary *)dict withCallBack: (void(^)(Boolean, NSString *))callback;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,21 @@
//
// APRiskConfigReportRequest.h
// APPSecuritySDK-Common
//
// Created by eric on 2021/8/16.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface APRiskConfigReportRequest : NSObject
@property(nonatomic, strong) NSString* os;
@property(nonatomic, strong) NSString* apdid;
@property(nonatomic, strong) NSDictionary* deviceDataMap;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,19 @@
//
// APRiskConfigReportResponse.h
// APPSecuritySDK-Common
//
// Created by eric on 2021/8/16.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface APRiskConfigReportResponse : NSObject
@property(nonatomic, strong) NSDictionary* resultData;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,20 @@
//
// APRiskConfigServiceProtocol.h
// APPSecuritySDKAdapter
//
// Created by hongren on 2020/9/7.
// Copyright © 2020 Alipay. All rights reserved.
//
#import "APRiskSyncHandlerProtocol.h"
@protocol APRiskConfigServiceProtocol <NSObject>
@required
- (NSString *)stringValueForKey:(NSString *)key;
- (void)addConfigChangeListener:(id<APRiskSyncHandlerProtocol>)handler forKey:(NSString *)key;
- (void)refreshConfig:(NSDictionary *)tConfigMap from:(NSString *)sourceType;
@end
@@ -0,0 +1,14 @@
//
// APRiskFileUploadProtocol.h
// APPSecuritySDKAdapter
//
// Created by hongren on 2020/9/7.
// Copyright © 2020 Alipay. All rights reserved.
//
@protocol APRiskFileUploadProtocol <NSObject>
@required
- (NSString *)uploadCustomFile:(NSString *)path;
@end
@@ -0,0 +1,21 @@
//
// APRiskLoggerProtocol.h
// APPSecuritySDK-Common
//
// Created by eric on 2021/6/25.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol APRiskLoggerProtocol <NSObject>
@required
-(void)print:(NSString *)format, ...NS_REQUIRES_NIL_TERMINATION;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,30 @@
//
// APRiskRPCProtocol.h
// APPSecuritySDKAdapter
//
// Created by hongren on 2020/9/7.
// Copyright © 2020 Alipay. All rights reserved.
//
#import "APRiskReportRequest.h"
#import "APRiskReportResponse.h"
#import "APRiskRpcConfiguration.h"
#import "APRiskConfigReportRequest.h"
#import "APRiskConfigReportResponse.h"
@protocol APRiskRPCProtocol <NSObject>
//gateway
@required
- (APRiskReportResponse *)sendStaticRequest:(APRiskReportRequest *)data
config:(APRiskRpcConfiguration*)cfg;
@required
- (APRiskConfigReportResponse *)sendConfigReportRequest:(APRiskConfigReportRequest *)data
config:(APRiskRpcConfiguration*)cfg;
@required
- (BOOL)updateLog:(NSString*)log
config:(APRiskRpcConfiguration*)cfg;
@end
@@ -0,0 +1,29 @@
//
// APRiskRemoteLoggerProtocol.h
// APPSecuritySDKAdapter
//
// Created by hongren on 2020/9/7.
// Copyright © 2020 Alipay. All rights reserved.
//
@protocol APRiskRemoteLoggerProtocol <NSObject>
@required
- (void)writeLogWithActionId:(NSString *)event
extParams:(NSArray *)args
appId:(NSString *)appId
seed:(NSString *)seed
ucId:(NSString *)ucId;
@required
- (void)writeLogWithActionId:(NSString *)event
extParams:(NSArray *)args
appId:(NSString *)appId
seed:(NSString *)seed
ucId:(NSString *)ucId
bizType:(NSString *)bizType;
@required
- (void)writeEventLog:(NSDictionary *)dict;
@end
@@ -0,0 +1,68 @@
//
// APRiskReportRequest.h
// APPSecuritySDK
//
// Created by hongren on 2020/9/7.
// Copyright © 2020 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface APRiskReportRequest : NSObject
/**
* os type: android|ios"
*/
@property(nonatomic, strong) NSString *os;
/**
* device id for ios for static report, or device id for dynamic report both for ios and android
*/
@property(nonatomic, strong) NSString *apdid;
/**
* public region device id for android for static report
*/
@property(nonatomic, strong) NSString *pubApdid;
/**
* private region device id for android for static report
*/
@property(nonatomic, strong) NSString *priApdid;
/**
* apdid token
*/
@property(nonatomic, strong) NSString *token;
/**
* umid token
*/
@property(nonatomic, strong) NSString *umidToken;
/**
* rpc version
*/
@property(nonatomic, strong) NSString *version;
/**
* last apdid time (create time)
*/
@property(nonatomic, strong) NSString *lastTime;
/**
* dynamicKey
*/
@property(nonatomic,strong) NSString* dynamicKey;
/**
* device info map
*/
@property(nonatomic, strong) NSDictionary *dataMap;
+ (Class)dataMapElementClass;
@property(nonatomic,strong) NSDictionary *bizData;
+ (Class)bizDataElementClass;
@end
@@ -0,0 +1,65 @@
//
// APRiskReportResponse.h
// APPSecuritySDK
//
// Created by hongren on 2020/9/7.
// Copyright © 2020 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface APRiskReportResponse : NSObject
/**
* success or not
*/
@property(nonatomic, assign) BOOL success;
/**
* result code
*/
@property(nonatomic, strong) NSString *resultCode;
/**
* device id
*/
@property(nonatomic, strong) NSString *apdid;
/**
* apdid token
*/
@property(nonatomic, strong) NSString *token;
/**
* current apdid time (create time)
*/
@property(nonatomic, strong) NSString *currentTime;
/**
* rpc version
*/
@property(nonatomic, strong) NSString *version;
/**
* switch for vkey
*/
@property(nonatomic, strong) NSString *vkeySwitch;
/**
* switch for BugTrack
*/
@property(nonatomic, strong) NSString *bugTrackSwitch;
/**
* version for applist cmd
*/
@property(nonatomic, strong) NSString *appListVer;
@property(nonatomic, strong) NSString *dynamicKey;
@property(nonatomic, strong) NSDictionary *resultData;
+ (Class)resultDataElementClass;
@end
@@ -0,0 +1,20 @@
//
// APRiskRpcConfiguration.h
// APPSecuritySDKAdapter
//
// Created by hongren on 2020/9/8.
// Copyright © 2020 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface APRiskRpcConfiguration : NSObject
// 超时时间
@property(nonatomic, assign) int timeout;
// 网关地址
@property(nonatomic, strong) NSString* gatewayURL;
// workspaceid和appid
@property(nonatomic, strong) NSDictionary *headers;
@end
@@ -0,0 +1,21 @@
//
// APRiskSyncHandlerProtocol.h
// APPSecuritySDK
//
// Created by eric on 2020/10/15.
// Copyright © 2020 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol APRiskSyncHandlerProtocol <NSObject>
@required
-(void) handleWithBizType: (NSString *) bizType andData: (NSString *) data;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,28 @@
//
// APRiskSyncServiceProtocol.h
// APPSecuritySDK
//
// Created by eric on 2020/10/15.
// Copyright © 2020 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "APRiskSyncHandlerProtocol.h"
NS_ASSUME_NONNULL_BEGIN
static NSString* const kEdgeBizTypeGlobal = @"EDGE-GLOBAL";
static NSString* const kEdgeBizTypeSingle = @"EDGE-SINGLE";
static NSString* const kEdgeBizTypeUid = @"EDGE-SINGLE-USER";
static NSString* const kEdgeBizTypeSyncDegradeToConfig = @"EDGE-SYNC-DEGRADE-TO-CONFIG";
@protocol APRiskSyncServiceProtocol <NSObject>
@required
-(void) registerHandler:(id<APRiskSyncHandlerProtocol>)handler;
-(void) registerSyncBiz;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,41 @@
//
// APSecRDS.h
// APSecRDS
//
// Created by xingchen on 15/4/8.
// Copyright (c) 2015年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface APSecRDS : NSObject
/*
appname 当前app的名称
appver 当前app的版本
sdkname 当前sdk的名称
sdkver 当前sdk的版本
user 淘宝/支付宝身份
pagesrc 淘宝/支付宝
page 当前页面标识
*/
-(void) onPageWithView:(NSString*)pageName args:(NSDictionary*) inArgs;
-(NSString*) onPageEndWithView:(NSString*) pageName user:(NSString*) userName;
-(NSString*) onPageEndZipDataWithView:(NSString*)pageName user:(NSString*)userName;
-(void) onControlClickWithView:(NSString*) pageName ctrl: (NSString*)ctrlName;
//按键信息
-(void) onKeyDownWithView:(NSString*) pageName ctrl:(NSString*) ctrlName keyCode:(NSString*)keyValue;
//焦点信息
-(void) onGetFocusWithView:(NSString*)pageName ctrl:(NSString*) ctrlName;
-(void) onLostFocusWithView:(NSString*) pageName ctrl:(NSString*) ctrlName;
//触屏信息
-(void) onTouchScreenWithView:(NSString*)pageName ctrl:(NSString*) ctrlName point:(CGPoint) pt;
@end
@@ -0,0 +1,48 @@
//
// APSecStore.h
// APPSecuritySDK
//
// Created by eric on 2021/3/10.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface APSecStore : NSObject
/*
*功能: 从keychain中载入字符串
*线程安全: 是
*可重入: 是
*@return: 成功返回key对应字符串,失败返回nil
*@param key:不能为nil
*@param error:失败时保存错误信息
*/
+(NSString*) loadKey:(NSString*) key error:(NSError **)error;
/*
*功能: 将字符串(键-值对)存入keychain
*线程安全: 是
*可重入: 是
*@return: 成功返回yes,失败返回no
*@param key:不能为nil
*@param value:不能为nil
*@param error:失败时保存错误信息
*/
+(BOOL) saveKey:(NSString*) key Value:(NSString*)value error:(NSError **)error;
/*
*功能: 从keychain中删除字符串(键-值对)
*线程安全: 是
*可重入: 是
*@return: 成功返回yes,失败返回no
*@param key:不能为nil
*@param error:失败时保存错误信息
*/
+(BOOL) deleteKey:(NSString*) key error:(NSError **)error;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,117 @@
//
// ASSSecureSdk.h
// APSecSecuritySDK
//
// Created by xingchen on 15/2/26.
// Copyright (c) 2015年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
//初始化API的字典参数中,TID的key
//key for TID in the NSDictionary parameter for initToken:callback: API
extern NSString * const ASS_TID;
//初始化API的字典参数中,userid的key
//key for USERID in the NSDictionary parameter for initToken:callback: API
extern NSString * const ASS_USERID;
//初始化API的字典参数中,环境变量的key
//key for server environment configuration in the NSDictionary parameter for initToken:callback: API
extern NSString * const ASS_ENVIRONMENT;
//初始化API的字典参数中,环境变量的value,代表线上环境
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for online environment
extern NSString * const ASS_ENVIRONMENT_ONLINE;
//初始化API的字典参数中,环境变量的value,代表测试环境
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for test environment
extern NSString * const ASS_ENVIRONMENT_SIT;
//初始化API的字典参数中,环境变量的value,代表开发环境
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for daily environment
extern NSString * const ASS_ENVIRONMENT_DAILY;
//初始化API的字典参数中,环境变量的value,代表预发环境
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for pre online environment
extern NSString * const ASS_ENVIRONMENT_PRE;
//初始化API的字典参数中,设置RPC网关地址的key。
//key for RPC server gateway address in the NSDictionary parameter for initToken:callback: API.
//If value for this key is specified, the value for ASS_ENVIRONMENT will be ignored.
extern NSString* const ASS_RPC_GATEWAY_ADDR;
//rpc header workspaceid key
extern NSString* const ASS_RPC_WORKSPACEID;
//rpc header appid key
extern NSString* const ASS_RPC_APPID;
//初始化API的字典参数中,设置UMID网关host地址的key。
//host 要设置的线上地址,如ynuf.alipay.com,不要带协议头,不要带后面的参数,只能传纯host地址
//key for UMID server host in the NSDictionary parameter for initToken:callback: API.
//host should only contain online address such as ynuf.alipay.com, without protocol or parameters.
extern NSString* const ASS_UMID_HOST;
//初始化API的字典参数中,设置加密的umid。
extern NSString * const ASS_ENCODE_UMID;
/*!
@typedef ASSStatusCode
Possible return codes
@constant ASSStatusCodeOk Completed, No errors
@constant ASSStatusCodeInvalidParam input param invalid
@constant ASSStatusCodeAppNameNil appName is nil
@constant ASSStatusCodeAppKeyNil appKeyClient is nil
@constant ASSStatusCodeConnectionError network connection failure
*/
typedef NS_ENUM(NSInteger, ASSStatusCode)
{
ASSStatusCodeOk = 0,
ASSStatusCodeInvalidParam,
ASSStatusCodeAppNameNil,
ASSStatusCodeAppKeyNil,
ASSStatusCodeConnectionError,
};
typedef NS_ENUM(NSInteger, ASSAddressFlag)
{
ASSAddressFlagIndonesia = 1,
ASSAddressFlagMalaysia = 2,
ASSAddressFlagPilipinas = 3,
ASSAddressFlagSingapore = 4,
ASSAddressFlagIpayVn = 11,
ASSAddressFlagIpayId = 12,
ASSAddressFlagIpayMy = 13,
ASSAddressFlagIpaySg = 14,
ASSAddressFlagIpayTh = 15,
ASSAddressFlagIpayPh = 16,
ASSAddressFlagIpayDefault = 17,
};
@interface APSecureSdk : NSObject
/**
获取单例
*/
+ (id)sharedInstance;
/*
*网关设置
*/
- (void)setSecuritySDKConfig:(ASSAddressFlag)address;
/**
初始化
*/
- (void)initWithRpcConfiguration:(NSDictionary *) config;
//===================测试联调 api====================//
- (void)setRpcConfiguration:(NSDictionary *) config;
+(BOOL) isSupportFaceShield;
+(BOOL) isTrackingAuthorization;
@end
@@ -0,0 +1,61 @@
//
// APSign.h
// APPSecuritySDK-Sign
//
// Created by eric on 2021/2/25.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
extern NSString * const APSE_SIGN_MODE_NORMAL;
extern NSString * const APSE_SIGN_MODE_ENHANCE;
extern NSString * const APSE_SIGN_MODE_NORMAL_ASYNC;
extern NSString * const APSE_SIGN_MODE_ENHANCE_ASYNC;
@interface APSign : NSObject
/*
* getColorInfo 请求可信接口,获取数字签名
*
* @param bizToken 业务场景
* @param bizParam 业务参数
* @param extParams 扩展参数
* @param errInfo 错误信息
*
* @return 数字签名数据
*/
+ (NSString*) getColorInfo: (NSString*) bizToken
param: (NSString*) bizParam
ext: (NSDictionary*) extParams
error: (NSError **) errInfo;
/*
* preColorInfo 签名数据预处理接口,用于不同业务定制签名携带数据
*
* @param userAction 当前动作,由业务定制的行为事件
* @param extParams 业务参数,格式需要与内部对齐
*
* @return 预处理数据
*/
+ (NSString*) preColorInfo: (int) userAction
ext: (NSDictionary*) extParams
error: (NSError **) errInfo;
/*
* preColorInfo 签名数据预处理接口,用于不同业务定制签名携带数据
*
* @param userAction 当前动作,由业务定制的行为事件
* @param extParams 业务参数,格式需要与内部对齐
*
* @return 预处理数据
*/
+ (NSString*) preColorInfoForString: (int) userAction
ext: (NSString*) extParams
error: (NSError **) errInfo;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,234 @@
//
// ASSCommon.h
// ae-security-sdk
//
// Created by xingchen on 14/12/30.
// Copyright (c) 2014年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "ASSLogger.h"
//#define IN_DEBUG
#define USED_BY_ALIPAY
static NSErrorDomain APSECURITYSDK_ERROR_DOMAIN = @"APSecuritySDKErrorDomain";
static NSString* const PRIVATE_KEY_XXXX = @"qqAIhzy)H)ip53<>ugx,sI{#}CE$37L|z5G=IScgO^=aQHaN[b|NM.RWdZpcy.r$";
static NSString* const PRIVATE_KEY_CLIENTKEY = @"EQopzyui)H)ipQW983<ll>uitx,sgI{#}##20110kl==^^woQG,msq.xinjun.$$";
static NSString* const LOG_SWITCH_SETTING_INITIALIZED = @"开关设置从keychain初始化成功";
static NSString* const LOG_LOAD_SETTING_EXCEPTION = @"开关设置在keychain中无存储,读取失败";
static NSString* const LOG_DECRYPT_SETTING_EXCEPTION = @"开关设置从keychain中读取成功,解密失败";
static NSString* const LOG_SWITCH_APPLIST_INITIALIZED = @"applist从keychain初始化成功";
static NSString* const LOG_LOAD_APPLIST_EXCEPTION = @"applist相关信息在keychain中无存储,读取失败";
static NSString* const LOG_DECRYPT_APPLIST_EXCEPTION = @"applist信息从keychain中读取成功,解密失败";
static NSString* const LOG_UMID_TOKEN_REQUEST_BACK = @"UMID TOKEN返回结果为:";
static NSString* const LOG_VKEYINFO_GENERATED = @"本地VKEY开关打开,将生成VKEY信息";
static NSString* const LOG_VKEYINFO_ABORT = @"本地VKEY开关关闭,将放弃生成VKEY信息";
static NSString* const LOG_VKEY_NO_KEYCHAIN_CACHE = @"VKEY缓存信息在keychain中无存储,读取失败";
static NSString* const LOG_VKEY_FOUND_KEYCHAIN_CACHE = @"VKEY缓存信息在keychain中获取缓存值";
static NSString* const LOG_VKEY_INFO_DETAIL = @"KEY信息为:";
static NSString* const LOG_VKEY_GENERATION_EXCEPTION = @"VEr:";
static NSString* const LOG_GID_GENERATED = @"本地GID开关打开,将生成GID信息";
static NSString* const LOG_GID_ABORT = @"本地GID开关关闭,将放弃生成GID信息";
static NSString* const LOG_GID_NO_KEYCHAIN_CACHE = @"GID缓存信息在keychain中无存储,读取失败";
static NSString* const LOG_GID_FOUND_KEYCHAIN_CACHE = @"GID缓存信息在keychain中获取缓存值";
static NSString* const LOG_GID_INFO_DETAIL = @"GID信息为:";
static NSString* const LOG_VOS_RUNNING = @"VKEY任务启动";
static NSString* const LOG_VOS_ASYNC_ABORT = @"放弃异步VOS任务";
static NSString* const LOG_VOS_VKEY_GENERATION = @"VOS VKEY采集中";
static NSString* const LOG_VOS_GID_GENERATION = @"VOS GID采集中";
static NSString* const LOG_GID_GENERATION_EXCEPTION = @"GEr:";
static NSString* const LOG_JB_ERROR_DETECTED = @"JEr";
static NSString* const LOG_STATIC_INFO_DETAIL = @"采集静态信息列表如下:";
static NSString* const LOG_APP_LIST_INFO_COLLECTED = @"APPLIST信息扫描获取中";
static NSString* const LOG_APP_LIST_INFO_ABORT = @"APPLIST信息放弃扫描获取";
static NSString* const LOG_LOAD_MODEL_KEYCHAIN_EXCEPTION = @"VKEYID在keychain无存储,读取失败";
static NSString* const LOG_LOAD_MODEL_FROM_KEYCHAIN = @"VKEYID从keychain中成功读取";
static NSString *const LOG_LOCALMODEL_ABSENT = @"本地未找到VKEYID存储";
static NSString *const LOG_LOCALMODEL_LOADSUCCESS = @"本地成功找到VKEYID存储";
static NSString *const LOG_LOAD_PREAPDID_SUCCESS = @"本地成功在keychain中读取旧版apdid的值:";
static NSString *const LOG_LOAD_PREAPDID_FAILED = @"旧版apdid在keychain中无存储,读取失败";
static NSString* const LOG_STATIC_INFO_CHANGED = @"所采集的静态信息发生改变或者存储中没有记录";
static NSString* const LOG_STATIC_INFO_SAME = @"所采集的静态信息与存储中相同";
static NSString* const LOG_TODAY_FIRST = @"检测为24小时内首次请求";
static NSString* const LOG_NOT_TODAY_FIRST = @"检测24小时内已经发起过请求";
static NSString *const LOG_GETAPDIDTOKEN_RET_LOCAL = @"不发起网络请求,直接返回本地存储";
static NSString* const LOG_CONNECT_TO_SERVER = @"需要访问服务器请求TOKEN";
static NSString* const LOG_REQUEST_INFO_INCLUDED = @"静态请求上传需要携带静态信息";
static NSString* const LOG_REQUEST_INFO_EXCLUDED = @"静态请求上传不需要携带静态信息";
static NSString* const LOG_STATIC_REQUEST_EXCEPTION = @"静态数据请求发送出现异常";
static NSString* const LOG_STATIC_REQUEST_FAILED = @"静态数据请求返回出现错误";
static NSString* const LOG_STATIC_REQUEST_SUCCESS = @"静态数据请求请求返回";
static NSString* const LOG_SERVER_RESPONSE_SUCCESS = @"服务端返回结果通过验证,证明有效:";
static NSString* const LOG_SERVER_RESPONSE_FAILED = @"服务端获取TOKEN失败";
static NSString* const LOG_LOG_REQUEST_RESPONSE = @"日志上传成功返回";
static NSString *const LOG_LOCALMODEL_SAVED_KEYCHAIN = @"成功将VKEY ID保存至keychain";
static NSString *const LOG_UPDATE_SETTING = @"已更新keychain中开关的设置值";
static NSString* const LOG_APP_LIST_NEED_UPDATE = @"经过检测,app list列表需要从服务器更新";
static NSString *const LOG_UPDATE_APPLIST = @"app list列表成功从服务器更新";
static NSString* const LOG_APPLIST_SETTING_SAVED_KEYCHAIN = @"app list列表信息成功更新至keychain保存";
static NSString* const LOG_APP_LIST_REQUEST_EXCEPTION = @"app list请求出现异常";
static NSString* const LOG_APP_LIST_RESPONSE_FAILED = @"app list请求结果失败";
static NSString* const LOG_LOG_UPDATE_EXCEPTION = @"日志信息请求发送出现异常";
static NSString* const LOG_LOG_UPLOAD_ERROR = @"日志信息发送出现错误";
static NSString* const LOG_LOG_UPLOAD_SUCCESS = @"日志信息发送返回成功";
static NSString *const LOG_SETTINGMODEL_SAVEFAILED = @"开关信息保存错误";
static NSString *const LOG_SETTINGMODEL_SUCCESS = @"开关信息成功保存到keychain";
static NSString* const LOG_LOG_UPLOAD_PROCESS = @"上报日志开关打开,开始上报错误日志流程";
static NSString* const LOG_LOG_UPLOAD_ABORT = @"上报日志开关关闭,放弃上报错误日志";
static NSString* const LOG_LOG_FILE_DETAIL = @"检测到错误日志文件:";
static NSString* const LOG_LOG_FILE_REMOVAL = @"已经删除错误日志文件:";
static NSString* const LOG_LOG_UPLOAD_START = @"开始日志上报网络请求";
static NSString* const LOG_LOG_UPLOAD_DETAIL = @"日志上报网络请求具体内容:";
static NSString* const LOG_JSON_PARSE_EXCEPTION = @"JSON解析失败";
static NSString* const ASS_STORAGE_KEY_SUCCESS = @"success";
static NSString* const ASS_STORAGE_KEY_APDID = @"apdid";
static NSString* const ASS_STORAGE_KEY_TOKEN = @"token";
static NSString* const ASS_STORAGE_KEY_TIME = @"time";
static NSString* const ASS_STORAGE_KEY_VKEYSWITCH = @"vkeyon";
static NSString* const ASS_STORAGE_KEY_LOGSWITCH = @"logon";
static NSString* const ASS_STORAGE_KEY_APPLISTVERSION = @"appver";
static NSString* const ASS_STORAGE_KEY_STATICHASH = @"statichash";
static NSString* const ASS_STORAGE_KEY_ERROR = @"error";
static NSString* const ASS_APPKEY_INVALID = @"APPKEY_ERROR";
static NSString* const ASS_STORAGE_KEY_WEBRTCURL = @"webrtcurl";
static NSString* const ASS_STORAGE_KEY_DYNAMICKEY = @"dynamickey";
static NSString* const ASS_STORAGE_KEY_AGENTURL = @"agentcurl";
static NSString* const ASS_STORAGE_KEY_APSE_DEGRADE = @"apse_degrade";
static NSString* const ASS_STORAGE_KEY_TIMEINTERVAL = @"timeInterval";
static NSString* const SECURE_SDK_KEYCHAIN_KEY = @"com.alipay.securesdk.storage";
static NSString* const LAST_LOGIN_TIME_KEY = @"com.alipay.asssecuritySDK.lastlogintime";
static NSString* const SECURE_SDK_RANDOM_STRING = @"com.alipay.securesdk.ranstr";
static NSString* const SECURE_SDK_RANDOM_TOKEN = @"com.alipay.securesdk.tokenid";
static NSString* const ASS_KEYCHAIN_KEY_SETTING = @"com.alipay.asssecuresdk.config";
static NSString* const SECURE_SDK_RANDOM_CLIENTKEY_STRING = @"com.alipay.securesdk.clientkey";
static NSString* const SECURE_SDK_KEYCHAIN_TOKEN = @"maintoken";
static NSString* const ASS_KEYCHAIN_KEY_APPLIST = @"com.alipay.asssecuresdk.list";
static NSString* const ASS_KEYCHAIN_KEY_DFP = @"com.alipay.asssecuresdk.dfp";
static NSString* const ASS_KEYCHAIN_KEY_GID = @"com.alipay.asssecuresdk.gid";
static NSString* const ASS_KEYCHAIN_KEY_JBER = @"com.alipay.asssecuresdk.jber";
static NSString* const ASS_KEYCHAIN_KEY_APDIDC = @"com.alipay.asssecuresdk.apdidc";
static NSString* const ASS_KEYCHAIN_KEY_TMXTIME = @"com.alipay.asssecuresdk.tmxtime";
static NSString* const ASS_KEYCHAIN_KEY_TMXSESSOINID = @"com.alipay.asssecuresdk.tmxsessionid";
static NSString* const ASS_KEYCHAIN_KEY_ARPMAC = @"com.alipay.asssecuresdk.arpmac";
static NSString* const ASS_KEYCHAIN_KEY_DYNAMICKEY = @"com.alipay.asssecuresdk.dynamickey";
static NSString* const ASS_USER_DEFAULT_KEY_DEGRADE_TIME = @"asssecuritysdkdegrade";
static const int overtime = 9;
//CRASHGUARD
static NSString* const CRASH_GUARD_GET_COLOR_INFO = @"05f445";
static NSString* const CRASH_GUARD_PRE_COLOR_INFO = @"f379d2";
static NSString* const CRASH_GUARD_INIT_COLOR_INFO = @"25f523";
static NSString* const CRASH_GUARD_UPDATE_COLOR_CODE = @"8e81ac";
static NSString* const CRASH_GUARD_GET_COLOR_LABEL = @"d785d8";
static NSString* const CRASH_GUARD_UPDATE_COLOR_LABEL = @"dccf1d";
static NSString* const CRASH_GUARD_INIT_TOKEN = @"0780aa";
static NSString* const CRASH_GUARD_INIT = @"e37f013";
@interface ASSCommon : NSObject
+ (int)getCurrentMode;
+ (NSString*)getRPCURL;
+ (NSString*)getServerHost;
+ (void) setRPCHeader:(NSDictionary*)header;
+ (NSDictionary*)getRPCHeader;
+ (void)setupEnvironmentMode:(int)mode;
+ (void)setupRPCAddress:(NSString*)address;
+ (BOOL)useURLWhitelist;
+ (BOOL)checkDeviceSystemVersion;
+ (void)setSecuritySDKConfig:(int)address;
+ (void)setRpcHeaderAppid:(NSString*)apid;
+ (NSString*)getRpcHeaderAppid;
+ (void)setRpcHeaderWorkspaceid:(NSString*)spaceid;
+ (NSString*)getRpcHeaderWorkspaceid;
@end
@@ -0,0 +1,37 @@
//
// ASSDynamicManager.h
// APSecSecuritySDK
//
// Created by msq on 2019/1/5.
// Copyright © 2019 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "APDynamicProtocol.h"
@interface ASSDynamicManager : NSObject<APDynamicProtocol>
+ (instancetype)sharedInstance;
- (void)dynamicCheckDispatch:(NSDictionary *)dict;
- (void)dynamicCheckDispatch:(NSDictionary *)dict withCallBack: (void(^)(Boolean, NSString *))callback;
- (void)dynamicCheckCustomLocal:(int)delay;
+ (NSData *)sendDynamicSynchronousRequest:(NSString *)url;
+ (void)uploadTimerCheckResult:(NSString *)data
dynamicTrace:(NSString*)trace
dynamicCmd:(int)cmd
dynamicNum:(int)num;
+ (NSString *)uploadCustomFile:(NSString *)path;
+ (void)recordError:(const char *)pos
withAction:(const char *)action
errCode:(int)code;
//+ (NSString *)processFeature;
@end
@@ -0,0 +1,39 @@
//
// ASSLogger.h
// ae-security-sdk
//
// Created by xingchen on 14/12/22.
// Copyright (c) 2014年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "ASSProtocolCenter.h"
#define ASSLog(...) do { \
if ([ASSProtocolCenter sharedCenter].logDelegate) { \
[[ASSProtocolCenter sharedCenter].logDelegate print:__VA_ARGS__, nil]; \
}} while(0)
#define ASSDtl(params, detail) [[ASSProtocolCenter sharedCenter].logDelegate print:[NSString stringWithFormat:@"%@%@",params,detail], nil]
#define ASSLogError(erroInfo) do { [[ASSLogger sharedInstance] addLogWithMessage: erroInfo]; } while(0)
@interface ASSLogger : NSObject
@property (nonatomic, strong) NSString* loggerInfo;
+(id)sharedInstance;
-(void)initializeWithArgs:(NSDictionary*)inArgs;
-(void)addLogWithMessage:(NSString*)message;
-(void)uploadLog;
//---------for test
-(NSData*)generateMessage:(NSString*)msg;
-(void)addLogWithMessage:(NSString *)message withFileName:(NSString*)fileName;
-(NSString*)getCurrentFileName:(NSDate*)date;
-(void)internal_addLog:(NSString*)message;
-(void)uploadLogCertified;
@end
@@ -0,0 +1,28 @@
//
// ASSSecureInfo.h
// APPSecuritySDK
//
// Created by msq on 2018/7/9.
// Copyright © 2018年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#define ASSSecureInfo ASSSecureInfoCore
@interface ASSSecureInfo : NSObject
/**
* 重打包检测
* 返回值:YES表示个人签名;NO表示企业签名
*
*/
+ (BOOL)hasPersonSign;
/**
* 越狱检测
* 返回值:0表示非越狱;大于0其他值表示越狱
*
*/
+ (uint32_t)checkJB;
@end
@@ -0,0 +1,77 @@
//
// ASSSecureOpenSdk.h
// APPSecuritySDK
//
// Created by msq on 16/6/1.
// Copyright © 2016年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "APSecureSdk.h"
#import "ASSTokenResult.h"
typedef void(^ASSSecureSdkCallbackOpen)(NSString* token, int errorCode);
@interface ASSSecureOpenSdk : NSObject
/*
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
@param appName 应用名称
@param appKeyClient 应用客户端密钥
@param callback 初始化完成后的结果回调,以Token作为参数
*/
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient callback:(ASSSecureSdkCallbackOpen)callback;
/*
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
@param appName 应用名称
@param appKeyClient 应用客户端密钥
@param parameters 业务方按约定的自定义参数
@param callback 初始化完成后的结果回调,以Token作为参数
*/
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient parameters:(NSDictionary*)inArgs callback:(ASSSecureSdkCallbackOpen)callback;
/*
异步强制更新vkeyid,推荐在app启动时和收银台页面加载时调用,无线程要求
@param appName 应用名称
@param appKeyClient 应用客户端密钥
@param parameters 业务方按约定的自定义参数
@param callback 初始化完成后的结果回调,以Token作为参数
*/
+ (void)updateToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient parameters:(NSDictionary*)inArgs callback:(ASSSecureSdkCallbackOpen)callback;
/*
VKEYID和VKEYID token的接口,无网络请求。
同步调用前应当先调用过异步初始化接口
如果异步初始化由于网络等原因失败,同步接口将返回降级方案:
1)VKEYID将在旧版apdid存在的情况下返回旧版apdid,否则返回随机串
2)VKEYID token将返回空字符串:@""
*/
+ (ASSTokenResultOpen*)getTokenResult;
/*
*获取exactID
*/
+ (NSString*)getExactID;
/*
*设置自定义的网关地址
*/
+ (void)setGatewayAddress:(NSString*)addr;
+ (void)setRpcConfiguration:(NSDictionary *) config;
/**
* 感知埋点。
* appName - 应用名 (智科人脸:“zorro”)
* appKeyClient - 应用key (智科人脸:“elBwppCSr9nB1LIQ”)
* action - 感知行为编号
* extParams - 可选扩展参数,以map方式传参
*/
//+(APRiskResult*)APPerceptRisk:(NSString*)appName appKeyClient:(NSString*)appKeyClient userAction:(NSInteger)action extParams:(NSDictionary *)args;
@end
@@ -0,0 +1,29 @@
//
// ASSSgomInfoOpen.h
// APPSecuritySDK
//
// Created by hongren on 2021/8/16.
// Copyright © 2021 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
* 感知结果类。
*/
@interface ASSSgomResult: NSObject
@property (nonatomic) NSInteger resCode;
@property (nonatomic, strong) NSString* resInfo;
@end
@interface ASSSgomInfoOpen : NSObject
+ (instancetype)sharedInstance;
- (ASSSgomResult*)updateSgomInfo:(int) userAction
ext:(NSDictionary*) extParams;
@end
@@ -0,0 +1,40 @@
//
// ASSTokenResult.h
// APPSecuritySDK
//
// Created by xingchen on 15/7/31.
// Copyright (c) 2015年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#define ASSTokenResult ASSTokenResultCore
@interface ASSTokenResult : NSObject
@property (nonatomic, strong) NSString* vkeyidToken;
@property (nonatomic, strong) NSString* clientKey;
@property (nonatomic, strong) NSString* umidToken;
@property (nonatomic, strong) NSString* vkeyid;
@end
@interface ASSTokenResultOpen: NSObject
@property (nonatomic, strong) NSString* vkeyidToken;
@property (nonatomic, strong) NSString* clientKey;
@property (nonatomic, strong) NSString* vkeyid;
@end
/**
* 感知结果类。
*/
@interface APRiskResult: NSObject
@property (nonatomic) int resCode;
@property (nonatomic, strong) NSString* resInfo;
@end
@@ -0,0 +1,101 @@
//
// AntSecurityManager.h
// APPSecuritySDK
//
// Created by msq on 2018/8/20.
// Copyright © 2018年 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef enum: NSInteger {
//正常
SEC_STORE_OK = 0,
//未找到
SEC_STORE_NOT_FOUND = 10001,
//拷贝
SEC_STORE_CP = 10002,
//内部错误
SEC_STORE_ERR = 10003,
SEC_STORE_PARAM_ERR = 10004,
SEC_STORE_DEGRADE_ERR = 10005,
} SEC_STORE_ERR_CODE;
@interface APSecStoreResult : NSObject
@property (nonatomic, strong) NSString* value;
@property (nonatomic, assign) SEC_STORE_ERR_CODE errCode;
@property (nonatomic, assign) int errCodeDetail;
@end
@interface AntSecurityManager : NSObject
/**
* brief aes_encrypt
* ase 加密
* param data 原始数据
*
* return
* 返回加密后数据
* nil 表示异常
*/
+ (NSString*)securityEncrypt:(NSString*)data;
/**
* brief aes_decrypt
* ase 解密
* param data 加密原始数据
*
* return
* 返回解密后数据
* nil 表示异常
*/
+ (NSString*)securityDecrypt:(NSString*)data;
/**
* brief wbSign
*
* param data 签名数据
*
* return
* 签名数据 44B base64文本
*/
+ (NSString*)wbSign:(NSString*)data;
/**
*防拷贝存储保存数据接口
*@param key
*@param value 需要加密的数据
*@param bizType 业务场景
*@return 返回错误码,0表示正常,其他非0值都表示异常
*/
+ (int) setSafeStore:(NSString*)key value:(NSString*)value bizType:(NSString*)bizType;
/**
*防拷贝存储读取数据接口
*@param key
*@param bizType 业务场景
*@return 返回APSecStoreResult对象
* SEC_STORE_OK 0 正常
* SEC_STORE_NOT_FOUND 10001 未找到
* SEC_STORE_CP 10002 拷贝
* SEC_STORE_ERR 10003 内部错误
*/
+ (APSecStoreResult*)getSafeStore:(NSString*)key bizType:(NSString*)bizType;
/**
*删除保存数据接口
*@param key
*@param bizType 业务场景
*@return 返回错误码,0表示正常,其他非0值都表示异常
*/
+ (int) deleteSafeStore:(NSString*)key bizType:(NSString*)bizType;
@end