DeepSupervise设备信息采集与加密

iOS集成

1. 添加Embedded Binaries库依赖

2. 初始化DeepSuperviseUserApi

#import <DeepSupervise/DeepSupervise.h>

@interface ViewController ()
{
    DeepSuperviseUserApi* mDSApi;
}
@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    mDSApi = [DeepSuperviseUserApi sharedInstance];
    mDSApi.delegate = self;
}
@end

2. 实现DeepSuperviseUserApiDelegate协议

// .h
#import <DeepSupervise/DeepSuperviseUserApiDelegate.h>
@interface ViewController : UIViewController<DeepSuperviseUserApiDelegate>
@end
// .m
#import <DeepSupervise/DeepSupervise.h>
-(void)userApiPrepared:(int)status info:(char*_Nullable)localCert
{
    /**
    调用[mDSApi prepareCertificate:password:type:]方法后回调
    与prepareCertificate:password:type:调用时线程相同,通常为UI线程
     @param status
        status: 0成功/-1参数错误/-2输出缓冲区大小不足
     @param localCert 本地凭证
     */
}
-(void)userApiCompleted:(int)status info:(char*_Nullable)info
{
    /**
     调用[mDSApi systemInfo]方法后回调
     在子线程中执行,如果需要操作UI应同步到UI线程
     @param status 状态码
         0: 成功
         -1: 加密类型不支持
         -2: 输出缓冲区大小不足
         -3: 密钥未初始化
     @param info 加密后的设备信息
     */
}

3. 调用[mDSApi cffexit_prepareCertificate:password:type:]方法获取本地凭证

/**
 准备客户认证数据
 @param APP_ID 应用ID
 @param PASSWORD 密码
 @param type 加密类型DS_ENCRYPT_TYPES
 */
[mDSApi prepareCertificate:APP_ID password:PASSWORD type:DS_ENCRYPT_TYPE_RSA_PKCS1_PADDING];

4. 在[DeepSuperviseUserApiDelegate userApiPrepared:info:]回调方法中获取本地凭证并进行服务器验证

5. 服务器验证完成后调用[mDSApi cffexit_registerCertificate:]方法注册服务器凭证

/**
 注册认证信息
 @param certificate 认证信息,上一步block中cert参数
 @return 0注册成功/-1注册失败
 */
int status = [mDSApi registerCertificate:serverCerts];

6. 调用[mDSApi cffexit_systemInfo]方法开始获取加密后的设备信息

[mDSApi systemInfo];

7. 也可以直接调用[mDSApi cffexit_staticSystemInfo]方法获取使用固定公钥加密的设备信息

[mDSApi cffexit_staticSystemInfo];

此时无需调用[mDSApi cffexit_prepareCertificate:password:type:]方法、[mDSApi cffexit_registerCertificate:]方法以及[mDSApi cffexit_registerCertificate:]方法,同时[DeepSuperviseUserApiDelegate userApiPrepared:info:]回调方法也无需实现。

8. 在[DeepSuperviseUserApiDelegate userApiCompleted:info:]回调方法中获取加密后的设备信息