# CISS提供的接口【提供给应用服务端】

提供给应用后台的接口 会对IP进行限制认证, 对接时应用需要提供出网IP, 对接时应用需要提供出网IP

# CISS平台验签接口【提供给应用服务端】

  • 接口定义:
> 验签接口
接口名称 verify
接口描述 U盾平台验签接口 ,仅用于测试和验证,需要应用直接调用CA提供的验签接口
接口协议 http+json
承载协议 http
HTTP请求方式 POST+ HttpServletRequest
请求参数格式 JSON
承载网络 Internet
主要使用者 应用后台
接口URL 测试地址
https://version.simkey.tech/skfinterface/third/verifySign/verify
  • 请求参数
名称 说明 数据类型 长度 可空
appId 应用的设备号 String - N
param 参数加密串。
UrlEncode(Base64(SM4(CBC_Encrypt({
"phoneNumber":"xxxx",
"userName":"xxxx",
"signData":"xxxx",
"srcData":"xxxx",
"signCert":"xxxx",
"timestamp":"xxxx",
"signature":"xxxx"})))
key为appid对应的
String - N

param参数明文明细

名称 说明 数据类型 长度 可空
phoneNumber 用户手机号 String 11位 N
signData 签名值 16进制格式 String - N
srcData 原文 base64格式 String - N
signCert 证书16进制 String - N
userName 用户姓名 String -
timestamp 当前终端时间,格式yyyyMMddHHmmss String - n
signature 请求签名
0-9-A-Z升序排序不区分大小写
用于鉴别发送者。
取值= Sm3WithSM4Base64(appId+ phoneNumber + signCert + signData + srcData + timestamp+ userName) ,SM4采用ciss平台颁发给调用方系统的Key为密钥
String - N
  • 应答消息:
名称 说明 数据类型 长度(字节) 可空
statusCode 200:成功
其他:失败
Int - N
returnObj 返回的描述信息 Object - Y

除了状态码212 "接入信息不存在" 为明文外其余returnObj 都为密文使用 加密方式为

UrlEncode(Base64(SM4(CBC_Encrypt(
                "timestamp":"xxxxxxxxx",
                "resultDesc":"xxxxxxxxx",
                "signature":"xxxxxxxxx",)))
1
2
3
4
> > returnObj 明文信息如下
timestamp 响应时间戳。格式:yyyyMMddHHmmss String - N
resultDesc 异常信息描述 String - N
signature 请求签名
用于鉴别发送者。
0-9-A-Z升序排序不区分大小写。
取值= Sm3WithSM4Base64(resultDesc +timestamp) ,签名值的key 为 appId 对应的key
String - N

入参: 最终入参样例:

{
    "appId": "xxxxxx",
    "param": "zdHsf6uyVW%2bNLpsfPHUra3kpGVoqHQ46Ym4WnL1r8tLTicmkvuGO10EAukJjGZDLvkaKJDqWGJPEQYoJPpiR4LZKu%2fhftlUdGLj2BM2kbZ6E1tdJ8t%2by4xCx0Y54a45k%2bz5htTOd%2bpm4COQvvrQZfCjWPwMl2x0dUpdnKhx7ZQZOH65nKJJs42zyyJS9LPXG4CJcgcxu92ykLVsxIJGtUNKU%2fB%2fOUG68WfJyGTSsR1Aytgz2x2oiY7%2f9XQnVJ1JA8T%2bKS%2fbRJsTVQsjvtJu6LQ%3d%3d"
}
1
2
3
4

请求参数明文样例:

{
    "phoneNumber": "13333333333",
    "signCert":    "308203DD30820382A003020102020869E3001E000FA2CF300C06082A811CCF5501837505003076310B300906035504061302434E310E300C06035504080C05416E487569310E300C06035504070C05486546656931263024060355040A0C1D416E4875692043657274696669636174696F6E20417574686F72697479310D300B060355040B0C04414843413110300E06035504030C0741484341534D32301E170D3138313132383136303030305A170D3139313132393135353935395A304C310B300906035504061302434E311B3019060355040A0C12333430383235313938393131313134383134310C300A060355040B0C033332333112301006035504030C09E8B5B5E7A68FE8BEBE3059301306072A8648CE3D020106082A811CCF5501822D03420004ECA0EF26D0CE2F1BBF0188A80787FED3F2EC947D1942D2D1B8C336EE51BC4E1C84AA62245A5ED2583E647F447DE3D17812331FE910A025EBEAB9285048C518C0A38202203082021C300C0603551D1304053003010100301D0603551D250416301406082B0601050507030206082B06010505070304300B0603551D0F0404030200C0301F0603551D230418301680144699BC6162E2BA53A90C88D2CD5D96C0C830BACF3081CA0603551D1F0481C23081BF3081BCA081B9A081B686818E6C6461703A2F2F6C6461702E61686563612E636E3A3338392F434E3D41484341534D322C434E3D41484341534D322C204F553D43524C44697374726962757465506F696E74732C206F3D616863613F63657274696669636174655265766F636174696F6E4C6973743F626173653F6F626A656374636C6173733D63524C446973747269627574696F6E506F696E748623687474703A2F2F7777772E61686563612E636E2F63726C2F41484341534D322E63726C3081D206082B060105050701010481C53081C230818B06082B06010505073002867F6C6461703A2F2F6C6461702E61686563612E636E3A3338392F434E3D41484341534D322C434E3D41484341534D322C204F553D63414365727469666963617465732C206F3D616863613F634143657274696669636174653F626173653F6F626A656374436C6173733D63657274696669636174696F6E417574686F72697479303206082B060105050730028626687474703A2F2F7777772E61686563612E636E2F6361636572742F41484341534D322E636572301D0603551D0E04160414EED2C7C4DF9EF4C33B6F8856202EACCE0D739687300C06082A811CCF550183750500034700304402206F0AA216D1FE3DB9BE2533B3320C62D947665E1FE43E4902A845369455479D87022014069CF6AAB21E0AC0AC839D66493DC1C4D0903CE5E27C864F3C0FF45546741C",
    "srcData":  "NKz0qyisRqWqa",
    "signData": "1CAE5E0F4F82E79619F586C9853DF5ADDDEB4FE4B3885B5D25696BF0A62A9A67D39C7727394EDBB6AF3ADFD26073382B665FC51027F3E1C0B311FC64D19FA900",
    "userName": "张三",
    "timestamp": "20180402121212",
    "signature": "JaI7tC82wRZohSlUnNKz0qyisRqWqavw"
}
1
2
3
4
5
6
7
8
9

返回参数 成功版

{
    "statusCode": 200,
    "returnObj": "4VII%2FkgNbyfXmcrDqOVFybMipnm3nb2bq68HqlBOyMxpsiVF68aGs3OgabMp0y3ipboN%2FrmgL%2FIpjlBf%2FO%2F62q2QqJOKcvf2WQPEGs9SjGpHsfNpjKWrUlnQpx0%2FJVtaNjw6wj68leYdV8JoNb7OFA%3D%3D"
}
1
2
3
4

返回参数 失败版1

{
    "statusCode": 212,
    "returnObj": "接入信息不存在"
}
1
2
3
4

返回参数 失败版2

{
    "statusCode": 209,
    "returnObj": "Hrx6XwobsbEXwDzBegbsk82MMKDrBrM8%2F9NVAVxvF352doz472OglmdhCxE6f3HDQiCzDLlccRy0kjapn0xgxYHC7471CnmL5V%2BN%2B9R%2BiTRw8jICexFoLqcYbtZMu5Nt%2BjmOyF7faPG6Qrm3DCQpNpPoFr%2Fg6KiO4c%2FCTAiF28YvZexEoRotjwfDtfNm9Opb"
}
1
2
3
4

例子: appKey 为 : C849EDABEF8D64F215D2ECE126A12A1B

signature原文拼接为: 101000000000000741272619800302000710199000000072019-06-06 10:22:12A1A1F01CFDA58B75929D01蓝牙测试卡7

signature经过Sm3WithSM4Base64为:
6S08dyL4cLuCTo+jzxmVsDnZL1gf258+RTz/Uoy60jw=

备注:

  1. param 参数UrlEncode前先要将空格去掉 然后进行UTF-8编码
  2. 验签的原文信息要携带年月日时分秒和6位随机数,然后整体获取私钥签名 例如: 张三CA登录20181219154340123456 ,转base64后得到接口文档中的 srcData

# 重置PIN码接口【提供给应用服务端】

  • 接口定义:
> 重置PIN码接口
接口名称 resetUserPin
接口描述 用户可以对用户PIN码进行重置授权
接口协议 http+json
承载协议 http
HTTP请求方式 POST
请求参数格式 JSON
承载网络 Internet
主要使用者 应用后台
接口URL 测试地址
https://version.simkey.tech/skfinterface/third/pin/resetUserPin
  • 请求参数
名称 说明 数据类型 长度 可空
appId 应用的设备号 String - N
param 参数加密串。
UrlEncode(Base64(SM4(CBC_Encrypt({
"phoneNumber":"xxxx",
"userName":"xxxx",
"idType":"xxxx",
"idCode":"xxxx",
"timestamp":"xxxx",
"signature":"xxxx"})))
key为appid对应的
String - N

param请求消息明文明细

名称 说明 数据类型 长度 可空
phoneNumber 用户手机号 String 11位 N
userName 用户姓名 String - N
idType 证件类型;10:身份证,11:护照,12:军人证,13:学生证 String - N
idCode 证件号码 String - N
timestamp 当前终端时间,格式yyyyMMddHHmmss String - n
signature 请求签名
0-9-A-Z升序排序不区分大小写
用于鉴别发送者。
取值= Sm3WithSM4Base64(appId+idCode+idType+phoneNumber+timestamp +userName) ,SM4采用ciss平台颁发给调用方系统的Key为密钥
String - N
  • 应答消息:
名称 说明 数据类型 长度(字节) 可空
statusCode 200:成功 Int - N
returnObj 返回的描述信息 String - Y

除了状态码212 "接入信息不存在" 为明文外其余returnObj 都为密文使用 加密方式为

UrlEncode(Base64(SM4(CBC_Encrypt(
                "timestamp":"xxxxxxxxx",
                "resultDesc":"xxxxxxxxx",
                "signature":"xxxxxxxxx",)))
1
2
3
4
> > returnObj 明文信息如下
timestamp 响应时间戳。格式:yyyyMMddHHmmss String - N
resultDesc 异常信息描述 String - N
signature 请求签名
用于鉴别发送者。
0-9-A-Z升序排序不区分大小写。
取值= Sm3WithSM4Base64(resultDesc +timestamp) ,签名值的key 为 appId 对应的key
String - N

入参: 最终请求参数样例:

{
    "appId":  "1010000000000007",
    "param":  "j%2FfiqGTDfBO57g%2Bk9%2FhVrzfVL0NSMmUh27wQ1VTO6KA4ikj3GCo2GABILbxi246XNawulqUlFyh4HNarPNDhX%2FnFdl%2FznWGUe6LkQbwAjRL2b6zDCWDUD%2BXTRWGxpbk2wxN7WRjImyyV0n0uwIhiAZgbHe2Tto5yS7ZjvH4RGIxuVhG3VAICBsqaLaKl9Uvx%2FAfZNiB2ic9301BfGNk%2BwcAYg6j7pRaxG0W%2FH210h6Uw1nhQZRrOd8VVTkXyJlp5mpmz8OfVHOh%2FaNQ2y%2FhToNm7kY%2BYEDBNvCsgFupVW%2Fl325gGhwPlL9rJWUyFolPB"
}
1
2
3
4

请求参数param 明文样例:

{
    "userName": "蓝牙测试卡7",
    "phoneNumber": "19900000007",
    "idType": "10",
    "idCode": "412726198003020007",
    "uKeyId": "A1A1F01CFDA58B75929D01",
    "timestamp": "2019-06-06 09:37:44",
    "signature": "5VpgJO0h4AAafTMpLm/+vKAfoe92yKN633XCXcMeFCw="
}
1
2
3
4
5
6
7
8
9

signature 原文和密文例子参考上一个接口

返回参数 成功版

{
    "statusCode": 200,
    "returnObj": "4VII%2FkgNbyfXmcrDqOVFybMipnm3nb2bq68HqlBOyMxpsiVF68aGs3OgabMp0y3ipboN%2FrmgL%2FIpjlBf%2FO%2F62q2QqJOKcvf2WQPEGs9SjGpHsfNpjKWrUlnQpx0%2FJVtaNjw6wj68leYdV8JoNb7OFA%3D%3D"
}
1
2
3
4

返回参数 失败版1

{
    "statusCode": 212,
    "returnObj": "接入信息不存在"
}
1
2
3
4

返回参数 失败版2

{
    "statusCode": 209,
    "returnObj": "Hrx6XwobsbEXwDzBegbsk82MMKDrBrM8%2F9NVAVxvF352doz472OglmdhCxE6f3HDQiCzDLlccRy0kjapn0xgxYHC7471CnmL5V%2BN%2B9R%2BiTRw8jICexFoLqcYbtZMu5Nt%2BjmOyF7faPG6Qrm3DCQpNpPoFr%2Fg6KiO4c%2FCTAiF28YvZexEoRotjwfDtfNm9Opb"
}
1
2
3
4

# 动态口令认证接口【提供给应用服务端】

  • 接口定义:
> 动态口令认证
接口名称 resetUserPin
接口描述 用户通过SDK生成OTP码,服务器端进行校验
接口协议 http+json
承载协议 http
HTTP请求方式 POST
请求参数格式 JSON
承载网络 Internet
主要使用者 应用平台
接口URL 测试地址
https://version.simkey.tech/skfinterface/third/otp/authentication
  • 请求参数
名称 说明 数据类型 长度 可空
appId 应用的设备号 String - N
param 参数加密串。
UrlEncode(Base64(SM4(CBC_Encrypt({
"phoneNumber":"xxxx",
"otpCode":"xxxx",
"otpTime":"xxxx",
"otpPeriod":"xxxx",
"incidentDivisor":"xxxx",
"challengeCode":"xxxx",
"timestamp":"xxxx",
"signature":"xxxx"})))
key为appid对应的
String - N

param请求消息明文明细

名称 说明 数据类型 长度 可空
phoneNumber 用户手机号 String 11位 N
otpCode OTP码 String - N
otpTime OTP生成时间(取System.currentTimeMillis()/1000,或者使用认证服务器当前时间时该值设为:-1) Long - Y
otpPeriod 以秒为单位的口令变化周期(一般设置30秒,不小于1秒) Int - N
incidentDivisor 事件因子,SDK获取OTP没有使用默认填 0 StriIntng - Y
challengeCode 参与运算的挑战码,使用ASCII表示,最小长度为4字节(例如:8919)没有默认填空 String - Y
timestamp 当前终端时间,格式yyyyMMddHHmmss String - n
signature 请求签名
请求签名用于鉴别发送者。
取值= SM4(Sm3WithSM4Base64
(appId+param 键按照A-Z,将值排序后拼接) ,SM4采用ciss平台颁发给调用方系统的Key为密钥
String - N
  • 应答消息:
名称 说明 数据类型 长度(字节) 可空
statusCode 200:成功 Int - N
returnObj 返回的描述信息 String - Y

除了状态码212 "接入信息不存在" 为明文外其余returnObj 都为密文使用 加密方式为

UrlEncode(Base64(SM4(CBC_Encrypt(
                "timestamp":"xxxxxxxxx",
                "resultDesc":"xxxxxxxxx",
                "signature":"xxxxxxxxx")))
1
2
3
4
> > returnObj 明文信息如下
timestamp 响应时间戳。格式:yyyyMMddHHmmss String - N
resultDesc 异常信息描述 String - N
signature 请求签名
用于鉴别发送者。
0-9-A-Z升序排序不区分大小写。
取值= Sm3WithSM4Base64(resultDesc +timestamp) ,签名值的key 为 appId 对应的key
String - N

入参: 最终请求参数样例:

{
    "appId":  "1010000000000007",
    "param":  "j%2FfiqGTDfBO57g%2Bk9%2FhVrzfVL0NSMmUh27wQ1VTO6KA4ikj3GCo2GABILbxi246XNawulqUlFyh4HNarPNDhX%2FnFdl%2FznWGUe6LkQbwAjRL2b6zDCWDUD%2BXTRWGxpbk2wxN7WRjImyyV0n0uwIhiAZgbHe2Tto5yS7ZjvH4RGIxuVhG3VAICBsqaLaKl9Uvx%2FAfZNiB2ic9301BfGNk%2BwcAYg6j7pRaxG0W%2FH210h6Uw1nhQZRrOd8VVTkXyJlp5mpmz8OfVHOh%2FaNQ2y%2FhToNm7kY%2BYEDBNvCsgFupVW%2Fl325gGhwPlL9rJWUyFolPB"
}
1
2
3
4

请求参数param 明文样例:

{
    "otpCode": "850210",
    "phoneNumber": "19900000007",
    "otpTime": "1586313403",
    "otpPeriod": 30,
    "incidentDivisor": 0,
    "challengeCode": "8919",
    "timestamp": "2020-01-06 09:37:44",
    "signature": "5VpgJO0h4AAafTMpLm/+vKAfoe92yKN633XCXcMeFCw="
}

1
2
3
4
5
6
7
8
9
10
11

signature 原文和密文例子参考上一个接口

返回参数 成功版

{
    "statusCode": 200,
    "returnObj": "4VII%2FkgNbyfXmcrDqOVFybMipnm3nb2bq68HqlBOyMxpsiVF68aGs3OgabMp0y3ipboN%2FrmgL%2FIpjlBf%2FO%2F62q2QqJOKcvf2WQPEGs9SjGpHsfNpjKWrUlnQpx0%2FJVtaNjw6wj68leYdV8JoNb7OFA%3D%3D"
}
1
2
3
4

返回参数 失败版1

{
    "statusCode": 212,
    "returnObj": "接入信息不存在"
}
1
2
3
4

返回参数 失败版2

{
    "statusCode": 209,
    "returnObj": "Hrx6XwobsbEXwDzBegbsk82MMKDrBrM8%2F9NVAVxvF352doz472OglmdhCxE6f3HDQiCzDLlccRy0kjapn0xgxYHC7471CnmL5V%2BN%2B9R%2BiTRw8jICexFoLqcYbtZMu5Nt%2BjmOyF7faPG6Qrm3DCQpNpPoFr%2Fg6KiO4c%2FCTAiF28YvZexEoRotjwfDtfNm9Opb"
}
1
2
3
4

# 获取ticketId【提供给应用服务端】

  • 接口定义:
接口名称 获取申请证书票据ID
接口描述 获取申请证书票据ID,然后调用SDK申请证书接口申请证书
接口协议 http+json
承载协议 http
HTTP请求方式 POST
请求参数格式 JSON
承载网络 internet
主要使用者 应用平台
接口URL 测试地址 https://version.simkey.tech/skfinterface/third/skf/order/getTicketInfo
  • 请求参数信息
名称 说明 数据类型 长度 可空
appId 应用的设备号 String - N
param 参数加密串。
UrlEncode(Base64(SM4(CBC_Encrypt ({
"phoneNumber":"xxxx","
"userName":"xxxx",
"idType":"xxxx",
"idCode":"xxxx",
"timestamp":"xxxx",
"signature":"xxxx"})))
key为appid对应的
String - N
  • param请求消息明文明细
名称 说明 数据类型 长度 可空
phoneNumber 手机号 String N
userName 用户姓名 String N
idType 证件类型:10:身份证;11:护照;12:军人证 Long Y
idCode 证件号码 Int N
timestamp 当前终端时间,格式yyyyMMddHHmmss String N
signature 请求签名 用于鉴别发送者。 取值= SM4(Sm3WithSM4Base64 (appId+param 键按照A-Z,将值排序后拼接) ,SM4采用ciss平台颁发给调用方系统的Key为密钥 String - N
  • 应答消息:
名称 说明 数据类型 长度(字节) 可空
statusCode 200:成功 Int N
returnObj 返回的描述信息 String Y

除了状态码212 “接入信息不存在” 为明文外其余returnObj 都为密文 加密方式为

UrlEncode(Base64(SM4(CBC_Encrypt(
                "ticketId”:”xxxxxxxxx”,
                “timestamp”:”xxxxxxxxx”,
                “resultDesc”:”xxxxxxxxx”,
                “signature”:”xxxxxxxxx”,)))
1
2
3
4
5
名称 说明 数据类型 长度 可空
ticketId 票据ID,可以拿此参数进行申请证书 String - N
timestamp 响应时间戳。格式:yyyyMMddHHmmss String - N
resultDesc 异常信息描述 String N
signature 请求签名0-9-A-Z升序排序不区分大小写 用于鉴别发送者。 取值= Sm3WithSM4Base64 (除signature外按参数名排序后的参数值) ,签名值的key 为 appId 对应的key String - N