# CISSSDK的接口【应用APP使用】

# 连接卡

  • 定义:
连接卡接口
接口名称 connectService
接口描述 建立和卡的连接
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
cfig ConnectConfig 连接配置
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述

ConnectConfig定义:

返回值 方法和描述
ConnectConfig [[ConnectConfig alloc] init]

ConnectConfig定义

参数 描述
mac 通过mac地址查找Simkey卡盾
phoneNum 通过手机号查找Simkey卡盾
type NSConnectWithPhoneNum使用手机号连接
NSConnectWithMac使用Mac地址连接
noticeServer notifyConnectResult() 通知连接结果, 用于排查错误。需要网络

​ 注意:如果要用蓝牙连接方式,那么使用其中一种就行了,如果传入多个,则最后一个设置生效,之前的会被覆盖。

  • 返回类型:BOOL
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  • 返回:YES 成功连接到卡,NO 失败

# 读取证书

  • 定义:
读取证书接口
接口名称 readCer
接口描述 读取证书, 如果没有返回空
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
cerType int 证书类型 1:签名证书
2:加密证书
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:NSData 返回 NSData,成功获取cer,返回nil ,获取失败。

  • 代码示例

@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSData *cer = [[CISS sharedCISS:self] readCer:1 error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# 签名

  • 定义:
签名接口
接口名称 privSign
接口描述 用签名密钥对的私钥对 Hash串/原文 进行签名
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
data NSData 原文 不能为空
dataType int 数据类型 0:原文.
1: hash值
区别在于是否需要经过hash
pinFlag int 是否输入pin (目前没有作用,强制弹窗) 0:不用输入
1:需要输入
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:NSData

  • 代码示例

@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSData *signed = [[CISS sharedCISS:self] privSign:[@"代签名数据原文" dataUsingEncoding:NSUTF8StringEncoding] dataType:0 pinFlag:1 error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# P1签名

  • 定义:
签名接口
接口名称 privSignP1
接口描述 用签名密钥对的私钥对 Hash串/原文 进行签名,PKCS#1格式返回
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
data NSData 原文 不能为空
dataType int 数据类型 0:原文1(在0016的预处理的基础上,对原文多做了一次sm3)
1: hash值
2: 原文2( 按照0016的预处理操作 ) 区别在于是否需要经过hash 推荐使用CissInterConst.SignDataType里面的常量定义
pinFlag int 是否输入pin (目前没有作用,强制弹窗) 0: 不用输入
1:需要输入 推荐使用CissInterConst.IsNeedPin里面的常量定义
error NSError ** 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:NSData
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSData* result = [[CISS sharedCISS:self] privSignP1:[@"hello Simkey!" dataUsingEncoding:NSUTF8StringEncoding] withType:1 andPin:0 error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

备注:"hello Simkey!"为签名数据,系统正式上线后需要改成有意义的文字,签名验签成功后,签名数据具有法律效应。

  • 返回十六进制显示:
304402202E12D60DFD16CB883811525D0E31D4C37898422CE6D25B7C9AB5471374984C8F022078AB926BD4E2094DAF2ACD5FA61A672BE11B3DA22B016AD0057634C18236A617
1

# P7签名

  • 定义:
签名接口
接口名称 privSignP7
接口描述 用签名密钥对的私钥对 原文 进行签名,PKCS#7格式返回, 目前仅支持国密算法
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
data NSData 原文 不能为空
dataType int 数据类型 0:原文
1(在0016的预处理的基础上,对原文多做了一次sm3).
2: 原文2( 按照0016的预处理操作 ) 推荐使用CissInterConst.SignDataType里面的常量定义
pinFlag int 是否输入pin (目前没有作用,强制弹窗) 0: 不用输入
1:需要输入 推荐使用CissInterConst.IsNeedPin里面的常量定义
attach BOOL 是否为attach模式 YES: attach模式, 返回结果带原文
NO:detach模式, 返回结果不带原文
error NSError ** 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:NSData
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSData* result = [[CISS sharedCISS:self] privSignP7:[@"hello Simkey!" dataUsingEncoding:NSUTF8StringEncoding] withType:1 andPin:0 error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

备注:"hello Simkey!"为签名数据,系统正式上线后需要改成有意义的文字,签名验签成功后,签名数据具有法律效应。

  • 返回十六进制显示:
30820563060A2A811CCF550601040202A08205533082054F020101310E300C06082A811CCF550183110500301D060A2A811CCF550601040201A00F040D68656C6C6F2053696D6B657921A08204503082044C308203F3A003020102020A2ACC4C3A8D42DBABF70E300A06082A811CCF5501837530818A310B300906035504061302434E31343032060355040A0C2B53494D4B4559205355424F5244494E41544520434120436572746966696361746520417574686F726974793121301F06035504030C1853494D4B45594341205355424F5244494E41544520534D323110300E06035504080C074A69616E6753753110300E06035504070C074E616E4A696E67301E170D3231303830323031323935375A170D3232303830323031323935375A304A310F300D06035504030C06E982B9E5AE8131143012060355040A0C0B4349535320E5BA94E794A831143012060355040B0C0B3138313638303536363636310B300906035504061302434E3059301306072A8648CE3D020106082A811CCF5501822D0342000483628572D7061F9F77792E2DF52462B3662196C8E3DFD37AAAA551B6DE47C870A5E79D23C78C3B9F35357CACA6A75D4A9E6D2B30ABE4C36FEE8464B8EBC2C151A382027E3082027A3081AD0603551D230481A53081A280145321FDEC21B5D1DF6D5941FC09C41369C0473903A17EA47C307A310B300906035504061302434E312B3029060355040A0C2253494D4B45594341524F4F5420436572746966696361746520417574686F72697479311A301806035504030C1153494D4B4559434120524F4F5420534D323110300E06035504080C074A69616E6753753110300E06035504070C074E616E4A696E67820A2ACC40D95A9658239CDD301D0603551D0E041604143A70DD60CC0E749FC3CF4E1B44E78A4B33462E94300E0603551D0F0101FF0404030206C030480603551D200441303F303D06082B060105050702013031302F06082B06010505070201162368747470733A2F2F73696D6B65792E61736961696E666F2D7365632E636F6D2F6370733081B50603551D1F0481AD3081AA3081A7A025A023862168747470733A2F2F73696D6B65792E746563682F73696D6B65792D736D2E63726CA27EA47C307A310B300906035504061302434E312B3029060355040A0C2253494D4B45594341524F4F5420436572746966696361746520417574686F72697479311A301806035504030C1153494D4B4559434120524F4F5420534D323110300E06035504080C074A69616E6753753110300E06035504070C074E616E4A696E67307606082B06010505070101046A3068303406082B06010505073002862868747470733A2F2F73696D6B65792E61736961696E666F2D7365632E636F6D2F726F6F742E637274303006082B06010505073001862468747470733A2F2F73696D6B65792E61736961696E666F2D7365632E636F6D2F6F637370300C0603551D130101FF04023000301106096086480186F8420101040403020780300A06082A811CCF55018375034700304402204ACDB2BBF1832CD1C59D41258567CC9A3FA4F31ADCE11AE172D5750B89DAAAC8022050D83B4E7B28421FB554D4BA12183D4A599BF214D05245749E4A7D57C6E54FF83181C63081C30201013058304A310F300D06035504030C06E982B9E5AE8131143012060355040A0C0B4349535320E5BA94E794A831143012060355040B0C0B3138313638303536363636310B300906035504061302434E020A2ACC4C3A8D42DBABF70E300C06082A811CCF550183110500300D06092A811CCF5501822D01050004473045022100D1DB527C88DCEC48C64EE863EDC90E852D26B1B17A8C2220C6F4E7787DBAB73602200975D053536FC0B09C01EA8098D8431B1CBC4B8A0D262E61D1EC9420BAFFA075
1

# 公钥加密

  • 定义:
加密接口
接口名称 pubKeyEncrypt
接口描述 用密钥对的公钥对数据进行加密
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
cerType BOOL 是否是签名密钥对加密 YES:使用签名公钥加密;
NO:使用加密公钥加密
data NSData 要加密的数据
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回:NSData

  • 代码示例

@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSData *encrypted = [[CISS sharedCISS:self] pubKeyEncrypt:NO data:[@"代加密数据原文" dataUsingEncoding:NSUTF8StringEncoding] error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

# 私钥解密

  • 定义:
解密接口
接口名称 priKeyDecrypt
接口描述 用密钥对的私钥对密文进行解密
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
data NSData 密文
CerType BOOL 是否是签名密钥对加密 YES:使用签名私钥解密;
NO:使用加密私钥解密
pinFlag int 是否需要输入pin(目前没有作用,强制弹窗) 0:不用输入
1:需要输入
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回:NSData
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSData *decrypted = [[CISS sharedCISS:self] priKeyDecrypt:[@"代加密数据原文" dataUsingEncoding:NSUTF8StringEncoding] CerType:NO pinFlag:1 error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

# 修改pin码

  • 定义:
修改pin码接口
接口名称 modifyPin
接口描述 修改pin码
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:BOOL
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  BOOL modifyResult = [[CISS sharedCISS:self] modifyPin:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  • 返回:YES 修改成功,NO 修改失败

# 申请重置Pin

  • 定义:
申请重置pin码接口
接口名称 applyResetUKeyPin
接口描述 申请重置pin码
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:BOOL
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  BOOL applyResult = [[CISS sharedCISS:self] applyResetUKeyPin:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  • 返回:YES 申请重置成功,NO 申请重置失败

# 重置Pin

  • 定义:
重置pin码接口
接口名称 resetPin
接口描述 重置pin码
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:BOOL
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  BOOL resetResult = [[CISS sharedCISS:self] resetPin:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  • 返回:YES 重置成功,NO 重置失败

# 获取手机号

  • 定义:
获取手机号接口
接口名称 getPhoneNumber
接口描述 获取手机号码
Sdk 不保证手机是否和卡一致,手机合法性由应用APP保证,
获取手机号接口仅作为参考。
卡仅作为U盾使用,保证签名合法性
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:NSString
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSString *phNumber = [[CISS sharedCISS:self] getPhoneNumber:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  • 返回:NSString类型手机号

# 上传日志

  • 定义:
上传日志
接口名称 uploadLogFile
接口描述 上传日志
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述
  • 返回类型:BOOL
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  BOOL uploadResult = [[CISS sharedCISS:self] uploadLogFile:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  • 返回: YES:成功 NO:失败

# 设置PIN弹窗回调监听

  • 定义:
回调监听接口
接口名称 cissManagerFindError
接口描述 设置PIN弹出回调监听(创建CISSSDK对象后监听), 监听PIN输入框的显示和隐藏状态
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
ErrorCode NSInteger 错误码
description NSString 错误信息描述
  • 返回类型:void
  • 代码示例
- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
    NSLog(@"loginview cissManagerFindError %@", description);
    if ([description containsString:@"cancel input pin"] && ErrorCode == 4) {
        [self outputText:@"用户取消输入"];
    }
    
    if ([description containsString:@"PIN锁定"]) {
        [self outputText:@"PIN锁定"];
    }
}

1
2
3
4
5
6
7
8
9
10
11

# 获取OTP密码【动态口令】

  • 定义:
获取动态口令接口
接口名称 getOTP
接口描述 获取otp密码, 使用之前需要先 导入OTP Key
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
tc int 以秒为单位的口令变化周期 0<tc<=60
c Byte * 参与预算的因子 ,固定四字节,可以为空
q NSString 认证双方输入的挑战因子,accii码长度大于等于4 可以为空
otpLength int otp的长度, 大于等于6
error NSError * 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述异步回调提示和结果,可以为空
  • 返回类型:NSString类型值, 长度为otpLength
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  
  NSInteger time = 60;
  NSString *otpCode = [[CISS sharedCISS:del] getOTP:time c:nil q:nil otpLength:6 error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  • 返回: NSString格式OTP码

# P7数字信封加密

  • 定义:
P7数字信封加密
接口名称 p7EnvelopEncrypt
接口描述 p7格式的数字信封加密, 目前仅支持国密算法
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
cert NSData 证书 一般传入加密证书而不是签名证书
data NSData 要加密的数据
error NSError ** 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述异步回调提示和结果,可以为空
  • 返回:NSData
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  NSData *cerData = [[CISS sharedCISS:self] readCer:2 error:&err];
  NSData* envelope = [[CISS sharedCISS:self] p7EnvelopEncrypt:[@"simkey P7Envelop test" dataUsingEncoding:NSUTF8StringEncoding] whitCert:cerData error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  • 返回十六进制显示:
30820156060A2A811CCF550601040203A0820146308201420201013181ED3081EA0201013058304A310F300D06035504030C06E982B9E5AE8131143012060355040A0C0B4349535320E5BA94E794A831143012060355040B0C0B3138313638303536363636310B300906035504061302434E020A2ACC4C3A8D42E7AFDFD7300D06092A811CCF5501822D030500047C307A022100DC22A9613A5615F43C4F6A9923FE08E3268BF36703746E2BE1E5BC122CCB00D60221008D1DA31B5F46193B84C24C2AD28521E1438C3DFF33264DA63571EE3B9172127F04207139D5BE94DDE0F297896CDFC8382BF97862F2B0E7EE6B9F8486856F2E5B1D170410A45291865324EC24FEF01A6EFFA8D43E304D060A2A811CCF550601040201301D06092A811CCF550168010404107F631A2BA904A37CD0A9542E2CF684EB802065C43EEFA0619709A8F83F089F4C80F7CE4F5BFDCD805EF57CE141F2C9978A73
1

# P7数字信封解密

  • 定义:
P7数字信封解密
接口名称 p7EnvelopDecrypt
接口描述 p7格式的数字信封解密, 目前仅支持国密算法
使用者 应用客户端
  • 输入参数:
参数 数据类型 说明 备注
cerType BOOL 是否是签名密钥对加密 YES:使用签名私钥解密;
NO:使用加密私钥解密
envelope NSData 要解密的数字信封
error NSError ** 错误信息 NSError code错误码
userInfo[NSLocalizedDescriptionKey]错误信息描述异步回调提示和结果,可以为空
  • 返回:NSData
  • 代码示例
@interface ViewController ()<CISSProgressDelegate>
@end
  
@implementation ViewController
- (void)viewDidLoad {
  [[CISS sharedCISS:self] initCISS:@"从平台获取的CISS AppId" bundle:@"提交给平台的BUNDLE ID" key:@"从平台获取的CISS AppKey"];
  
  NSError *err;
  ConnectConfig *cfig = [[ConnectConfig alloc] init];
  
  //当使用mac地址识别SimKey盾时
  //cfig.mac = @"SimKey卡盾MAC地址";
  //cfig.type = NSConnectWithMac;
  
  //当使用手机号识别SimKey盾时
  cfig.phoneNum = @"SimKey卡盾手机号";
  cfig.type = NSConnectWithPhoneNum;
  
  cfig.noticeServer = YES;//YES:通知服务器 NO:不通知服务器
  
  BOOL connResult = [[CISS sharedCISS:self] connectService:cfig error:&err];
  
  NSData* result = [[CISS sharedCISS:self] p7EnvelopDecrypt:envelope whitCerType:NO error:&err];
}

#pragma mark - CISSProgressDelegate
- (void)cissManagerStartAction:(NSString *)description{
  //开始被调用
}

- (void)cissManagerDoingAction:(NSString *)description{
  //正在被调用
}

- (void)cissManagerFindError:(NSInteger)ErrorCode andErrorDescription:(NSString *)description{
  //执行遇到错误时调用
}

- (void)cissManagerFinishAction:(NSString *)description{
  //执行结束时调用
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42